一种统一且可分类拓展的软件安装包构建方法和装置与流程

文档序号:16246251发布日期:2018-12-11 23:36阅读:188来源:国知局
一种统一且可分类拓展的软件安装包构建方法和装置与流程

本发明属于软件开发技术领域,具体涉及一种统一且可分类拓展的软件安装包构建方法和装置。

背景技术

目前,用于软件安装包开发的主流技术均为脚本语言,采用面向过程的软件设计方式,开发工具也往往比较简单,不能实现如visualstudio开发工具所提供的nuget包管理器那样方便快捷地加载可复用模块的功能。

在实际应用中,需要同时维护多个不同的软件产品或同一软件产品的多个不同定制版本,采用现有的软件安装包技术,往往意味着需要同时维护多份安装包的脚本代码。编写一个符合操作系统规范的软件安装包,通常需要上百行到数百行代码,而对于包括复杂逻辑的安装包来说,其代码量会更大。

由于软件安装包业务中有一些共同的操作,如判断是否同时运行多个安装包、释放/删除文件、添加/删除系统防火墙规则、创建/删除快捷方式等,这些安装包代码中有相当一部分具有较高的重合度。这种重合度一方面带来了代码的冗余,另一方面也极不利于后期的维护工作。例如,当需要修改所有安装包均有的“释放文件”的操作时,就需要修改使用该软件安装包脚本的多个不同软件和同一软件的多个不同定制版本的代码,无法做到一次性更改所有项目,需要进行机械的重复性劳动,会极大浪费人力资源,工作效率低。



技术实现要素:

为了解决上述在软件安装包的开发和维护过程中无法做到一次性更改所有项目、工作效率低的技术问题,本发明实施例提出了一种统一且可分类拓展的软件安装包构建方法,包括如下步骤:

公共模块构建步骤:构建公共模块,将公共模块集成在项目构建系统构建软件安装包流程中,所述公共模块中包括软件安装包脚本的公共逻辑;

项目模块拼接步骤:项目模块包括各个软件安装包自身的非公共逻辑,执行项目构建系统构建软件安装包流程,将公共模块的软件安装包脚本与项目模块的软件安装包进行拼接,组成一份完整可编译的软件安装包的代码。

进一步,所述方法还包括稳定模块存储步骤,存储稳定模块,稳定模块中包括有用于编译不同版本的软件安装包脚本的编译器以及软件安装包的多种依赖环境。

进一步,软件安装包脚本的所述公共逻辑包括基本业务逻辑、公共宏库、拓展插件和ui方案。

进一步,所述公共模块还包括一个或多个通过宏定义实现的功能开关,项目模块通过设置开关状态来使用相关的公共逻辑。

进一步,软件安装包的公共逻辑存放在独立的代码仓库中,向项目模块提供接口。

进一步,所述公共模块中定义了所有软件安装包在其生命周期主流程中需要执行的基本操作,通过所述接口供项目模块在上述定义的基本步骤上进行拓展或覆写。

进一步,项目构建系统构建软件安装包时,公共模块自动搜索项目模块中是否存在有拓展代码,如果有,则添加相应的代码到流程中。

进一步,所述项目模块通过关闭公共模块提供的功能开关,进行覆写。

本发明实施例还提供一种统一且可分类拓展的软件安装包构建装置,包括:

公共模块构建部件:用于构建公共模块,将公共模块集成在项目构建系统构建软件安装包流程中,所述公共模块中包括软件安装包脚本的公共逻辑;

项目模块拼接部件:用于执行项目构建系统构建软件安装包流程,将公共模块的软件安装包脚本与项目模块的软件安装包进行拼接,组成一份完整可编译的软件安装包的代码,其中项目模块包括各个软件安装包自身的非公共逻辑。

进一步,所述装置还包括稳定模块存储部件,用于存储稳定模块,稳定模块中包括有用于编译不同版本的软件安装包脚本的编译器以及软件安装包的多种依赖环境。

本发明实施例还提出一种存储介质,该存储介质中存储有执行前述方法的计算机程序。

本发明实施例还提出一种处理器,所述处理器运行执行如前所述方法的计算机程序。

本发明的有益效果:本发明实施例通过系统地梳理软件安装包业务的整个流程,将原本杂糅在一起的软件安装包业务逻辑拆分为稳定模块、公共模块、项目模块,并将这三个模块存放在三个独立的代码仓库中进行开发和维护。由于公共模块提供了构建一个符合操作系统规范的软件安装包所需的全部基本逻辑,还提供了一个实用的公共宏库(包括大量可能在项目应用到的软件安装包脚本片段)和多个实用的软件安装包拓展插件(用于终止特定程序的进程、配置系统防火墙等),增强了可复用性和可拓展性。因此,项目模块通常只需要进行调用,极少出现需要自行编写新的软件安装包逻辑的情况,在项目模块中大大减少了需要编写的代码量,软件安装包的开发和维护效率有了极大的提升,成本也极大地降低。

经实践验证,采用本发明实施例进行软件安装包开发,项目模块中需要维护的软件安装包有效代码行数最少仅需7行,通常维持在7-20行之间,最复杂的软件安装包也不会超过60行代码。由于项目模块需要编写的代码量很少,使得各软件的开发人员无需具备完整的软件安装包开发知识,只要参照基本的说明文档,就能在很短的时间内开发一个新的软件安装包。

在本发明的实施例中,稳定模块和公共模块的开发和维护需要由深入了解软件安装包开发技术的人员负责,但随着时间的推移,公共模块的代码质量逐步优化和提高,直至趋于稳定,软件公司后面一般不需要再投入研发人员专职去维护公共模块的代码。

附图说明

图1是本发明第一实施例的统一且可分类拓展的软件安装包构建方法的流程图;

图2是本发明实施例的方法基于软件安装包生命周期的主流程的示意图;

图3是本发明第二实施例的统一且可分类拓展的软件安装包构建方法的流程图;

图4是利用本发明第二实施例的统一且可分类拓展的软件安装包构建方法构建的软件安装包的逻辑结构图;

图5是本发明第三实施例的统一且可分类拓展的软件安装包构建装置的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。但本领域技术人员知晓,本发明并不局限于附图和以下实施例。

如图1所示,本发明第一实施例提出了一种统一且可分类拓展的软件安装包构建方法,将软件安装包业务逻辑进行拆分,拆分为公共模块和项目模块,包括如下步骤:

公共模块构建步骤:构建公共模块,将公共模块集成在项目构建系统构建软件安装包流程中。

所述项目构建系统可以是集成于jenkins平台的项目构建系统,包括拉取代码、编译、混淆、构建软件安装包、签名、输出到指定目录等多个不同的流程。

公共模块中包括软件安装包脚本的公共逻辑,包括如释放/删除文件、创建/删除快捷方式等的基本业务逻辑、公共宏库、拓展插件和ui方案等。其中,公共宏库为一个函数库,包括创建自启动项等多个功能函数,供后面的项目模块在需要时调用;拓展插件为内部开发的软件安装包插件,用于实现使用软件安装包脚本无法实现或不便于实现的功能。

公共模块还包括一个或多个通过宏定义实现的功能开关,项目模块通过设置开关状态来使用相关的公共模块逻辑。例如,当项目模块中将功能开关“switch_shortcuts_desktop”设置为“on”时,软件安装包会在桌面创建主程序的快捷方式;当设置为“off”时,则不在桌面创建主程序的快捷方式。为了确保项目模块的代码尽可能地少,每个功能开关都根据实际业务中最常使用的设置配置了一个默认值,如“switch_shortcuts_desktop”的默认值为“on”。

软件安装包的公共逻辑由公共模块统一维护,存放在一个独立的代码仓库当中,并向项目模块提供接口,供所有项目的软件安装包调用。

项目模块拼接步骤:项目模块包括各个软件安装包自身的非公共逻辑,如软件安装包名称、软件安装包唯一标识符、软件安装包是否需要开启公共模块的某个功能开关等。不同的软件安装包具有不同的非公共逻辑,因此需要由各个软件根据公共模块提供的接口进行自定义,并维护软件安装包自身的非公共逻辑。

当执行项目构建系统构建软件安装包流程时,会将公共模块的软件安装包脚本与项目模块的软件安装包进行拼接,组成一份完整可编译的软件安装包的代码,并进行编译。

以下,以图2为例,对本发明上述实施例的方法进行进一步说明。

一个软件安装包生命周期的主流程依次包括软件安装包初始化(oninit)、安装开始前操作(beforeinstall)、解压文件到安装目录(files)、安装第三方软件(thirdpackages)、配置系统防火墙规则(firewall)、操作快捷方式(shortcuts)、操作注册表(registry)、安装完成后操作(afterinstall)和软件安装包退出时操作(onend)。

在本发明实施例的方法中,公共模块中定义了所有软件安装包在上述主流程中都需要执行的基本操作,并提供了接口供项目模块在其定义的基本步骤基础上进行拓展或覆写,在项目模块中拓展的流程通过添加“_product”的方式进行命名。

项目模块能够对公共模块进行拓展,例如,在公共模块中定义了软件安装包在桌面创建主程序快捷方式的代码,但某些项目可能还需要额外添加一个产品网址的快捷方式,那么就需要在项目模块的操作快捷方式(shortcuts_product)流程中,添加相应的代码。项目构建系统构建软件安装包时,公共模块会自动搜索项目模块中是否存在有拓展代码,如果有,则自动添加相应的代码到流程中。

项目模块还能够对公共模块进行覆写,例如,某些软件安装包仅仅是提供了一个压缩文件的功能,在目标计算机上只执行解压文件的操作,而无需在系统注册表中添加信息。在这种情况下,项目模块通过公共模块提供的特定功能开关,关闭公共模块在操作注册表(registry)流程中定义的通用逻辑,就能够达到覆写的目的。

需要注意的是,即便项目模块中完全不编写任何主流程代码,公共模块也可构建出一个符合操作系统规范的最基本的软件安装包。

如图3所示,本发明第二实施例提出了一种统一且可分类拓展的软件安装包构建方法,将软件安装包业务逻辑进行拆分,拆分为稳定模块、公共模块和项目模块,与第一实施例相比,增加了稳定模块,包括如下步骤:

稳定模块存储步骤:存储稳定模块,稳定模块中包括有用于编译不同版本的软件安装包脚本的编译器以及软件安装包的多种依赖环境。

稳定模块不会对已有的数据本身进行修改操作,只会做添加或删除操作,如添加软件安装包的新的依赖环境,删除某个不再使用的编译器等。

所述软件安装包的依赖环境包括编程环境和代码执行环境。所述软件安装包的依赖环境例如microsoft.netframework,microsoft.netframework能够提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行而在网络上分布,或者在远程执行;microsoft.netframework还能够提供一个代码执行环境,使得软件部署和版本控制冲突最小化、可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性、以及可消除脚本环境或解释环境的性能问题,开发人员的经验在面对类型大不相同的应用程序时保持一致,如基于windows的应用程序和基于web的应用程序。

编译器用来将利用高级计算机语言编写的不同版本的软件安装包脚本编译为特定软件环境下能够运行的目标代码。

公共模块构建步骤:构建公共模块,将公共模块集成在项目构建系统构建软件安装包流程中。

项目模块拼接步骤:项目模块包括各个软件安装包自身的非公共逻辑,当执行项目构建系统构建软件安装包流程时,会将公共模块的软件安装包脚本与项目模块的软件安装包进行拼接,组成一份完整可编译的软件安装包的代码,并进行编译。

本实施例中的公共模块构建步骤和项目模块拼接步骤与第一实施例相同,不再赘述。

图4是利用本发明第二实施例的统一且可分类拓展的软件安装包构建方法构建的软件安装包的逻辑结构图。其中,稳定模块包括用于编译不同版本的软件安装包脚本的编译器,如易量2.1.1、nsis2.46……,以及软件安装包的多种依赖环境。公共模块包括软件安装包脚本的编译入口、公共逻辑、公共宏库、拓展插件、拓展头文件等。项目模块包括多个项目的软件安装包自身的非公共逻辑。

与上述方法相对应,本发明第三实施例还提供一种统一且可分类拓展的软件安装包构建装置,参见图5,将软件安装包业务逻辑进行拆分,拆分为稳定模块、公共模块和项目模块,包括如下部件:

稳定模块构建部件:用于存储稳定模块,稳定模块中包括有用于编译不同版本的软件安装包脚本的编译器以及软件安装包的多种依赖环境。

稳定模块不会对已有的数据本身进行修改操作,只会做添加或删除操作,如添加软件安装包的新的依赖环境,删除某个不再使用的编译器等。

所述软件安装包的依赖环境包括编程环境和代码执行环境。所述软件安装包的依赖环境例如至少有microsoft.netframework,microsoft.netframework能够提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行而在网络上分布,或者在远程执行;microsoft.netframework还能够提供一个代码执行环境,使得软件部署和版本控制冲突最小化、可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性、以及可消除脚本环境或解释环境的性能问题,开发人员的经验在面对类型大不相同的应用程序时保持一致,如基于windows的应用程序和基于web的应用程序。

编译器用来将利用高级计算机语言编写的不同版本的软件安装包脚本编译为特定软件环境下能够运行的目标代码。

公共模块构建部件:用于构建公共模块,将公共模块集成在项目构建系统构建软件安装包流程中。

所述项目构建系统可以是集成于jenkins平台的项目构建系统,包括拉取代码、编译、混淆、构建软件安装包、签名、输出到指定目录等多个不同的流程。

公共模块中包括软件安装包脚本的公共逻辑,包括如释放/删除文件、创建/删除快捷方式等的基本业务逻辑、公共宏库、拓展插件和ui方案等。其中,公共宏库为一个函数库,包括创建自启动项等多个功能函数,供后面的项目模块在需要时调用;拓展插件为内部开发的软件安装包插件,用于实现使用软件安装包脚本无法实现的功能。

公共模块还包括一个或多个通过宏定义实现的功能开关,项目模块通过设置开关状态来使用相关的公共模块逻辑。例如,当项目模块中将功能开关“switch_shortcuts_desktop”设置为“on”时,软件安装包会在桌面创建主程序的快捷方式;当设置为“off”时,则不在桌面创建主程序的快捷方式。为了确保项目模块的代码尽可能地少,每个功能开关都根据实际业务中最常使用的设置配置了一个默认值,如“switch_shortcuts_desktop”的默认值为“on”。

软件安装包的公共逻辑由公共模块统一维护,存放在一个独立的代码仓库当中,并向项目模块提供接口,供所有项目的软件安装包调用。

项目模块拼接部件:其中的项目模块包括各个软件安装包自身的非公共逻辑,如软件安装包名称、软件安装包唯一标识符、软件安装包是否需要开启公共模块的某个功能开关等。不同的软件安装包具有不同的非公共逻辑,因此需要由各个软件根据公共模块提供的接口与公共模块进行拼接,维护软件安装包自身的非公共逻辑。

当执行项目构建系统构建软件安装包流程时,会将公共模块的软件安装包脚本与项目模块的软件安装包进行拼接,组成一份完整可编译的软件安装包的代码,并进行编译。

本发明实施例还提出一种存储介质,该存储介质中存储有执行前述方法的计算机程序。

本发明实施例还提出一种处理器,所述处理器运行执行如前所述方法的计算机程序。

本领域技术人员可以理解,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包括、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或它们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上,对本发明的实施方式进行了说明。但是,本发明不限定于上述实施方式。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1