CN103186388B - 软件安装方法及装置 - Google Patents
软件安装方法及装置 Download PDFInfo
- Publication number
- CN103186388B CN103186388B CN201110448783.6A CN201110448783A CN103186388B CN 103186388 B CN103186388 B CN 103186388B CN 201110448783 A CN201110448783 A CN 201110448783A CN 103186388 B CN103186388 B CN 103186388B
- Authority
- CN
- China
- Prior art keywords
- interface
- definition
- installation
- task
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
一种软件安装方法,包括以下步骤:获取安装流程配置,所述安装流程配置中包括预设的安装任务定义和任务执行顺序;根据所述安装任务定义和预设的接口函数定义生成安装任务对象;根据所述安装流程配置中的任务执行顺序通过所述接口函数依次调用所述安装任务对象。此外,还提供了一种软件安装装置。上述软件安装方法和装置具有较强的扩展性。
Description
【技术领域】
本发明涉及软件工程领域,特别涉及一种软件安装方法及装置。
【背景技术】
windows平台的软件安装方法基于MSI(microsoftinstaller,微软安装工具)模型。MSI模型实际上是一个数据库,包含安装一种产品所需要的信息和在很多系统环境下安装(和卸载)程序所需的指令和数据。MSI文件将程序的组成文件与功能关联起来。此外,它还包含有关安装过程本身的信息:如安装序列、目标文件夹路径、系统依赖项、安装选项和控制安装过程的属性。
传统技术中windows平台的软件安装方法和装置(例如,InstallSheild安装工具)在MSI模型的基础上设定了规范的安装流程,并对安装流程进行了代码级的定义。安装流程为依照顺序执行的多个安装任务。为了反映安装进度,还对安装任务的反馈界面进行了代码级的定义。
然而,由于传统技术中的软件安装方法和装置对安装流程和反馈界面采用了代码级的定义,使得用户无法自定义安装流程,并为安装流程中的安装任务自定义反馈界面。因此,传统技术中的软件安装方法和装置的扩展性较低。
【发明内容】
基于此,有必要提供一种能提高扩展性的软件安装方法。
一种软件安装方法,包括以下步骤:
获取安装流程配置,所述安装流程配置中包括预设的安装任务定义和任务执行顺序;
根据所述安装任务定义和预设的接口函数定义生成安装任务对象;
根据所述安装流程配置中的任务执行顺序通过所述接口函数依次调用所述安装任务对象。
优选的,所述安装流程配置中还包括所述安装任务定义与预设的反馈界面定义的映射关系;
所述根据所述安装任务定义和预设的接口函数定义生成安装任务对象的步骤之后还包括:
根据所述反馈界面定义生成反馈界面对象;
根据所述安装任务定义与预设的反馈界面定义的映射关系将所述反馈界面对象绑定到所述安装任务对象中;
在根据所述安装流程配置中的任务执行顺序通过所述接口函数依次调用所述安装任务对象时,根据与所述安装任务对象绑定的反馈界面对象展示反馈界面。
优选的,所述反馈界面定义根据抽象类或接口生成。
优选的,所述根据所述安装任务定义和预设的接口函数定义生成安装任务对象的步骤具体为:
根据所述安装任务定义和预设的接口函数定义通过封装MSI模型的库函数生成安装任务对象。
优选的,所述获取安装流程配置的步骤具体为通过读取配置文件获取安装流程配置。
此外,还有必要提供一种能提高扩展性的软件安装装置。
一种软件安装装置,包括以下模块:
配置获取模块,用于获取安装流程配置,所述安装流程配置中包括预设的安装任务定义和任务执行顺序;
任务生成模块,用于根据所述安装任务定义和预设的接口函数定义生成安装任务对象;
任务执行模块,用于根据所述安装流程配置中的任务执行顺序通过所述接口函数依次调用所述安装任务对象。
优选的,所述安装流程配置中还包括所述安装任务定义与预设的反馈界面定义的映射关系;
所述装置还包括界面生成模块,用于根据所述反馈界面定义生成反馈界面对象;
所述装置还包括界面绑定模块,用于根据所述安装任务定义与预设的反馈界面定义的映射关系将所述反馈界面对象绑定到所述安装任务对象中;
所述装置还包括界面展示模块,用于在根据所述安装流程配置中的任务执行顺序通过所述接口函数依次调用所述安装任务对象时,根据与所述安装任务对象绑定的反馈界面对象展示反馈界面。
优选的,还包括界面定义模块,用于根据抽象类或接口生成所述反馈界面定义。
优选的,所述任务生成模块还用于根据所述安装任务定义和预设的接口函数定义通过封装MSI模型的库函数生成安装任务对象。
优选的,所述配置获取模块还用于通过读取配置文件获取安装流程配置。
上述软件安装方法和装置,通过读取预设的自定义的安装流程配置,并根据预设的接口函数生成了安装任务对象。使得安装软件的流程可以预先定制。并且,生成的安装任务对象为根据接口函数生成,利用了接口函数的多态性,使得安装任务对象可以进行多层次的复用,从而提高了软件安装方法和装置的扩展性。
【附图说明】
图1为一个实施例中软件安装方法流程图;
图2为一个实施例中软件安装装置的结构示意图。
图3为另一个实施例中软件安装装置的结构示意图。
【具体实施方式】
如图1所示,在一个实施例中,一种软件安装方法,包括以下步骤:
步骤S102,获取安装流程配置,安装流程配置中包括预设的安装任务定义和任务执行顺序。
安装流程配置中可包括多个安装任务定义。安装任务定义描述了在安装软件时进行的具体的操作。任务执行顺序则描述了多个安装任务在执行时的先后顺序。
一个实施例中,安装流程配置预定义在配置文件中,可通过读取配置文件获取安装流程配置。配置文件可以是xml文件、config文件等。也可以将安装流程配置预定义为二进制流并存储在数据库中。
例如,某次软件安装流程包括3个步骤,分别为:新建文件夹、复制文件到该文件夹、修改注册表。则可通过预设的指令来描述安装任务定义。将安装流程配置定义为如表1所示:
表1
1 | make dir A |
2 | copy B to A |
3 | modify‘C’ |
标号1、2和3分别表示三个安装任务定义。其中,makedir指令表示新建文件夹,A表示新建的文件夹的名称;copyto指令表示复制,B表示被复制的文件或文件夹,A表示复制到的目标文件夹;modify指令表示修改注册表。任务执行顺序即为表中的编号由小到大的顺序。
进一步的,在预设任务执行顺序时,还可以通过脚本语言来描述。某些安装流程中包括判断和循环的步骤,可通过自定义的脚本在配置文件中对循环体和判断体进行标注,在读取配置文件时,解析该脚本,根据解析结果获取任务执行顺序。
步骤S104,根据安装任务定义和预设的接口函数定义生成安装任务对象。
接口函数可以通过抽象类(abstractclass)或接口(interface)来预先定义。在生成安装任务对象时,可先在安装流程配置中提取描述安装任务定义的指令,然后再在预设的指令和库函数对应表中查找与描述安装任务定义的指令匹配的库函数。然后创建安装任务对象,且使创建的安装任务对象继承接口函数的抽象类或实现接口函数的接口。然后再在创建的安装任务对象的接口函数中注册与描述安装任务定义的指令匹配的库函数。库函数中预先定义了用于执行具体安装任务的逻辑。
例如,预先定义接口ISetupTask,并为接口ISetupTask定义接口函数execute函数。根据指令makedir获取与该指令对应的库函数为dirmake函数。则可创建安装任务对象MakeDirSetupTask,并使其实现接口ISetupTask,则该对象也具有了名为execute的函数。然后再在该execute函数中注册dirmake函数(即,在execute函数的定义中添加调用dirmake函数的代码,使得再调用execute函数时可以调用dirmake函数)。
在一个实施例中,可根据安装任务定义和预设的接口函数定义通过封装MSI模型的库函数生成安装任务对象。预先建立指令和库函数对应表时,可将指令和MSI模型中的库函数对应起来,然后再在接口函数中注册MSI模型中的库函数。
在windows平台中,通过封装MSI模型的库函数生成安装任务对象,可以对安装任务对象中的接口函数的事务性进行限定MSI模型的库函数中预定义了较底层的事务性判断逻辑,使得在同时安装多个软件时,文件的读写不会产生冲突,从而提高了软件安装的安全性。
步骤S106,根据安装流程配置中的任务执行顺序通过接口函数依次调用安装任务对象。
在一较佳实施例中,可先将生成的安装任务对象按照任务执行顺序排列成序列,然后再依次从该序列中提取出安装任务对象,并根据接口函数调用该对象。
例如,前述的安装任务对象MakeDirSetupTask中的execute接口函数中注册了dirmake函数。当安装流程执行到安装任务对象MakeDirSetupTask时,可通过调用安装任务对象MakeDirSetupTask的接口函数execute来执行该安装任务的。
在另一个实施例中,安装流程配置中还包括安装任务定义与预设的反馈界面定义的映射关系。在生成了安装任务对象之后,还包括:
根据反馈界面定义生成反馈界面对象;
根据安装任务定义与预设的反馈界面定义的映射关系将反馈界面对象绑定到安装任务对象中;
在根据安装流程配置中的任务执行顺序通过接口函数依次调用安装任务对象时,根据与安装任务对象绑定的反馈界面对象展示反馈界面。
进一步的,反馈界面定义为根据抽象类或接口生成。
反馈界面用于通过可视化的界面向用户反馈软件安装的进度以及提示用户在安装过程中输入安装参数,如输入安装位置,设置开机自启动等。可预先定义抽象类或接口,然后通过继承抽象类或者实现接口来生成反馈界面定义。
例如,可预先定义抽象类SetupUI,为接口SetupUI定义接口函数show函数,并将该抽象类SetupUI注册到ISetupTask接口中。可通过继承抽象类SetupUI创建MakeDirSetupUI类作为反馈界面定义,MakeDirSetupUI类中预先定义有用于展示给用户进行文件夹选择的界面,用于表示该界面的代码和资源可以由用户根据实际需要预先自行编写和选取。如,可以选择各种图片或动画作为背景。然后再在接口函数show中定义展示逻辑。当安装对象MakeDirSetupTask创建后,将MakeDirSetupUI类实例化,然后绑定到MakeDirSetupTask对象中。在调用MakeDirSetupTask对象的接口函数execute时,即可根据绑定关系调用该show函数来展示该MakeDirSetupUI类的实例化对象描述的界面。
如图2所示,在一个实施例中,一种软件安装装置10,包括配置获取模块102、任务生成模块104和任务执行模块106,其中:
配置获取模块102用于获取安装流程配置,安装流程配置中包括预设的安装任务定义和任务执行顺序。
安装流程配置中可包括多个安装任务定义。安装任务定义描述了在安装软件时进行的具体的操作。任务执行顺序则描述了多个安装任务在执行时的先后顺序。
一个实施例中,安装流程配置预定义在配置文件中,配置获取模块102可用于通过读取配置文件获取安装流程配置。配置文件可以是xml文件、config文件等。也可以将安装流程配置预定义为二进制流并存储在数据库中。
进一步的,在预设任务执行顺序时,还可以通过脚本语言来描述。某些安装流程中包括判断和循环的步骤,可通过自定义的脚本在配置文件中对循环体和判断体进行标注,在读取配置文件时,解析该脚本,根据解析结果获取任务执行顺序。
任务生成模块104用于根据安装任务定义和预设的接口函数定义生成安装任务对象。
接口函数可以通过抽象类(abstractclass)或接口(interface)来预先定义。任务生成模块104在生成安装任务对象时,可先在安装流程配置中提取描述安装任务定义的指令,然后再在预设的指令和库函数对应表中查找与描述安装任务定义的指令匹配的库函数。然后创建安装任务对象,且使创建的安装任务对象继承接口函数的抽象类或实现接口函数的接口。然后任务生成模块104再在创建的安装任务对象中的接口函数中注册与描述安装任务定义的指令匹配的库函数。库函数中预先定义了用于执行具体安装任务的逻辑。
例如,预先定义接口ISetupTask,并为接口ISetupTask定义接口函数execute函数。根据指令makedir获取与该指令对应的库函数为dirmake函数。则任务生成模块104可创建安装任务对象MakeDirSetupTask,并使其实现接口ISetupTask,则该对象也具有了名为execute的函数。然后任务生成模块104再在该execute函数中注册dirmake函数(即,在execute函数的定义中添加调用dirmake函数的代码,使得再调用execute函数时可以调用dirmake函数)。
在一个实施例中,任务生成模块104可用于根据安装任务定义和预设的接口函数定义通过封装MSI模型的库函数生成安装任务对象。预先建立指令和库函数对应表时,可将指令和MSI模型中的库函数对应起来,然后任务生成模块104再在接口函数中注册MSI模型中的库函数。
在windows平台中,通过封装MSI模型的库函数生成安装任务对象,可以对安装任务对象中的接口函数的事务性进行限定MSI模型的库函数中预定义了较底层的事务性判断逻辑,使得在同时安装多个软件时,文件的读写不会产生冲突,从而提高了软件安装的安全性。
任务执行模块106用于根据安装流程配置中的任务执行顺序通过接口函数依次调用安装任务对象。
一较佳实施例中,所述任务执行模块106还可用于将生成的安装任务对象按照任务执行顺序排列成序列,然后再依次从该序列中提取出安装任务对象,并根据接口函数调用该对象。
例如,前述的安装任务对象MakeDirSetupTask中的execute接口函数中注册了dirmake函数。当安装流程执行到安装任务对象MakeDirSetupTask时,可通过调用安装任务对象MakeDirSetupTask的接口函数execute来执行该安装任务的。
在另一个实施例中,安装流程配置中还包括安装任务定义与预设的反馈界面定义的映射关系。
如图3所示,软件安装装置10还包括:
界面生成模块108,用于根据反馈界面定义生成反馈界面对象。
界面绑定模块110,用于根据安装任务定义与预设的反馈界面定义的映射关系将反馈界面对象绑定到安装任务对象中。
界面展示模块112,用于在根据安装流程配置中的任务执行顺序通过接口函数依次调用安装任务对象时,根据与安装任务对象绑定的反馈界面对象展示反馈界面。
进一步的,软件安装装置10还包括界面定义模块114,用于根据抽象类或接口生成反馈界面定义。
反馈界面用于通过可视化的界面向用户反馈软件安装的进度以及提示用户在安装过程中输入安装参数,如输入安装位置,设置开机自启动等。可预先定义抽象类或接口,然后通过继承抽象类或者实现接口来生成反馈界面定义。
例如,界面定义模块114可预先定义抽象类SetupUI,为接口SetupUI定义接口函数show函数,并将该抽象类SetupUI注册到ISetupTask接口中。可通过继承抽象类SetupUI创建MakeDirSetupUI类作为反馈界面定义,MakeDirSetupUI类中预先定义有用于展示给用户进行文件夹选择的界面,用于表示该界面的代码和资源可以由用户根据实际需要预先自行编写和选取。如,可以选择各种图片或动画作为背景。然后再在接口函数show中定义展示逻辑。当安装对象MakeDirSetupTask创建后,界面生成模块108用于将MakeDirSetupUI类实例化,然后界面绑定模块110用于将MakeDirSetupUI类的实例化绑定到MakeDirSetupTask对象中。在调用MakeDirSetupTask对象的接口函数execute时,界面展示模块112即可用于根据绑定关系调用该show函数来展示该MakeDirSetupUI类的实例化对象描述的界面。
上述软件安装方法和装置,通过读取预设的自定义的安装流程配置,并根据预设的接口函数生成了安装任务对象。使得安装软件的流程可以预先定制。并且,生成的安装任务对象为根据接口函数生成,利用了接口函数的多态性,使得安装任务对象可以进行多层次的复用,从而提高了软件安装方法和装置的扩展性。
在安装流程配置中添加反馈界面与安装任务定义的映射关系,在生成安装任务对象后,生成与安装任务对象对应的反馈界面对象,可以为安装流程自定义软件安装的反馈界面。将根据抽象类或接口生成反馈界面定义,可以将反馈界面对象通过接口函数注册在安装任务对象的接口函数中,使得安装任务对象可以对应多种反馈界面,从而提高了扩展性。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种软件安装方法,包括以下步骤:
获取安装流程配置,所述安装流程配置中包括预设的安装任务定义和任务执行顺序;
根据所述安装任务定义和预设的接口函数定义生成安装任务对象,具体的,根据所述安装任务定义和预设的接口函数定义通过封装MSI模型的库函数生成安装任务对象;
根据所述安装流程配置中的任务执行顺序通过所述接口函数依次调用所述安装任务对象。
2.根据权利要求1所述的软件安装方法,其特征在于,所述安装流程配置中还包括所述安装任务定义与预设的反馈界面定义的映射关系;
所述根据所述安装任务定义和预设的接口函数定义生成安装任务对象的步骤之后还包括:
根据所述反馈界面定义生成反馈界面对象;
根据所述安装任务定义与预设的反馈界面定义的映射关系将所述反馈界面对象绑定到所述安装任务对象中;
在根据所述安装流程配置中的任务执行顺序通过所述接口函数依次调用所述安装任务对象时,根据与所述安装任务对象绑定的反馈界面对象展示反馈界面。
3.根据权利要求2所述的软件安装方法,其特征在于,所述反馈界面定义根据抽象类或接口生成。
4.根据权利要求1或3所述的软件安装方法,其特征在于,所述获取安装流程配置的步骤具体为通过读取配置文件获取安装流程配置。
5.一种软件安装装置,其特征在于,包括以下模块:
配置获取模块,用于获取安装流程配置,所述安装流程配置中包括预设的安装任务定义和任务执行顺序;
任务生成模块,用于根据所述安装任务定义和预设的接口函数定义生成安装任务对象,具体的,根据所述安装任务定义和预设的接口函数定义通过封装MSI模型的库函数生成安装任务对象;
任务执行模块,用于根据所述安装流程配置中的任务执行顺序通过所述接口函数依次调用所述安装任务对象。
6.根据权利要求5所述的软件安装装置,其特征在于,所述安装流程配置中还包括所述安装任务定义与预设的反馈界面定义的映射关系;
所述装置还包括界面生成模块,用于根据所述反馈界面定义生成反馈界面对象;
所述装置还包括界面绑定模块,用于根据所述安装任务定义与预设的反馈界面定义的映射关系将所述反馈界面对象绑定到所述安装任务对象中;
所述装置还包括界面展示模块,用于在根据所述安装流程配置中的任务执行顺序通过所述接口函数依次调用所述安装任务对象时,根据与所述安装任务对象绑定的反馈界面对象展示反馈界面。
7.根据权利要求6所述的软件安装装置,其特征在于,还包括界面定义模块,用于根据抽象类或接口生成所述反馈界面定义。
8.根据权利要求5或7所述的软件安装装置,其特征在于,所述配置获取模块还用于通过读取配置文件获取安装流程配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110448783.6A CN103186388B (zh) | 2011-12-28 | 2011-12-28 | 软件安装方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110448783.6A CN103186388B (zh) | 2011-12-28 | 2011-12-28 | 软件安装方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103186388A CN103186388A (zh) | 2013-07-03 |
CN103186388B true CN103186388B (zh) | 2016-06-22 |
Family
ID=48677566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110448783.6A Active CN103186388B (zh) | 2011-12-28 | 2011-12-28 | 软件安装方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103186388B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9680697B2 (en) | 2013-12-17 | 2017-06-13 | International Business Machines Corporation | Dynamic product installation based on user feedback |
CN105302582B (zh) * | 2014-06-09 | 2019-04-05 | 腾讯科技(深圳)有限公司 | 安装界面展示方法及装置 |
CN110489170A (zh) * | 2019-09-06 | 2019-11-22 | 北京中亦安图科技股份有限公司 | 一种aix系统安装方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639781A (zh) * | 2009-08-25 | 2010-02-03 | 厦门敏讯信息技术股份有限公司 | 程序安装方法以及可编程电子设备 |
CN101647013A (zh) * | 2007-03-26 | 2010-02-10 | 微软公司 | 用于安装序列的书签和配置文件 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101114229A (zh) * | 2006-07-25 | 2008-01-30 | 国际商业机器公司 | 辅助安装软件的系统和方法 |
-
2011
- 2011-12-28 CN CN201110448783.6A patent/CN103186388B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101647013A (zh) * | 2007-03-26 | 2010-02-10 | 微软公司 | 用于安装序列的书签和配置文件 |
CN101639781A (zh) * | 2009-08-25 | 2010-02-03 | 厦门敏讯信息技术股份有限公司 | 程序安装方法以及可编程电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103186388A (zh) | 2013-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101314949B1 (ko) | 통합 환경 생성기 | |
US7577937B2 (en) | Methods and systems for generating a configurable user interface | |
CN109542556B (zh) | 一种基于Activiti的流程与表单交互方法及系统 | |
CN100543701C (zh) | 一种实现嵌入式软件异常测试的方法及系统 | |
US20140237443A1 (en) | System and method for supporting intelligent design pattern automation | |
US20060248112A1 (en) | Application description language | |
US20090055757A1 (en) | Solution for automatically generating software user interface code for multiple run-time environments from a single description document | |
US20120284686A1 (en) | System and method for mobile application development | |
CN105814539A (zh) | 用于代码虚拟化和远程进程调用生成的方法和装置 | |
JP2019040626A (ja) | オブジェクト指向スクリプトツールをサポートするシステムおよび方法 | |
CN106325965B (zh) | 操作系统的编译方法和装置 | |
JP2009020705A (ja) | Guiアプリケーション開発支援装置及び開発支援方法 | |
CN102455931B (zh) | 一种Android平台工程的开发方法及系统 | |
CN111158687B (zh) | Java插件的界面生成方法、装置、计算机设备和存储介质 | |
WO2018032653A1 (zh) | 一种Java卡应用的功能实现方法及装置 | |
CN103186388B (zh) | 软件安装方法及装置 | |
CN109240733A (zh) | 一种基于安卓系统更新广告sdk的方法及终端 | |
CN104049974A (zh) | 控件动态组装方法和系统 | |
CN105373381A (zh) | 一种移动终端的桌面启动器的制作方法及制作系统 | |
CN106484452B (zh) | 一种软件平台的统一配置管理方法和装置 | |
CN101699396A (zh) | 一种无线终端菜单的生成方法及其装置 | |
Ernsting et al. | Refining a reference architecture for model-driven business apps | |
US20130007697A1 (en) | Program creation support apparatus, program, and information system | |
AU2003204197B2 (en) | System and method for defining and using subclasses declaratively within markup | |
CN106843862A (zh) | 一种Swing界面自动构成的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |