CN103955363B - 一种程序升级安装包的制作方法 - Google Patents
一种程序升级安装包的制作方法 Download PDFInfo
- Publication number
- CN103955363B CN103955363B CN201410138626.9A CN201410138626A CN103955363B CN 103955363 B CN103955363 B CN 103955363B CN 201410138626 A CN201410138626 A CN 201410138626A CN 103955363 B CN103955363 B CN 103955363B
- Authority
- CN
- China
- Prior art keywords
- file
- version
- source code
- directory
- new
- 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
技术领域
本发明涉及软件升级技术领域,尤其是一种程序升级安装包的制作方法。
背景技术
在软件交付给客户以后,软件厂商经常需要对软件功能做一些扩展、修复一些bug(漏洞)等。通常是由用户自己下载程序升级安装包升级这些软件或由维护人员携带程序升级安装包到用户现场进行升级。一般软件升级包的制作方法是这样的:
1、把新版本软件的源代码编译出来;
2、在新版本编译后的目标代码中加入版本的信息;
3、升级时,读取已安装版本目标代码中的版本信息,与新版本目标代码中的版本信息进行对比,如果已安装版本较老,则进行全盘替换。
这种方法会有如下的问题:
1、新旧版本之间的对比不够精确,目标代码中的版本信息依赖于构建人员的判断获取,一旦源代码版本变化而构建人员未知,容易导致升级包数据错误进而导致升级失败;
2、升级效率低,不管旧版本是什么,这种方法都会采用全盘替换的方法进行升级,对于新旧版本只存在少量差异,比如只修改几个bug的情况下,全盘替换的方式无疑会浪费不少时间;
3、软件升级包的占用空间大,因为需要包含新版的全部目标代码,因此升级包的数据量大,用户下载时间长,维护人员携带也需要更大容量的移动存储设备。
发明内容
本发明解决的技术问题在于提供一种程序升级安装包的制作方法,解决了大型程序升级包占用空间大,升级效率低等问题。
本发明解决上述技术问题的技术方案是:首先对新旧源代码版本进行比较;如果有新版本,则进一步比较新旧版本的代码文件;新版本中新增的设为新增文件,旧版本中多余的文件列表记录为需要删除的文件,新旧版本不一致时相应的新版本的目标代码文件为需要替换的文件;将前述文件和/或文件列表记录制作成安装包,并执行文件的拷贝、替换、删除操作;
具体包括如下步骤:
步骤1:从版本控制器中检出新旧两个版本的源代码;
步骤2:按目标代码文件的编译步骤找出对应每个目标代码文件的源代码文件或源代码目录,通过检出的源代码工作副本获得源代码文件或源代码目录的版本;
步骤3:修改编译步骤,在生成目标代码文件的步骤中加入写入源代码的版本的步骤并编译生成新旧两个版本的目标代码;
步骤4:比较新旧版本的目标代码文件列表,新版本比旧版本多的文件为需要新增的文件,拷贝出来作为升级安装包中的文件,旧版本比新版本多的文件列表记录下来作为需要删除的文件,两个版本一致的文件列表作为需要比较的文件列表;
步骤5:分别从新旧版本目标代码中找出需要比较的文件列表中每一项对应的文件,从两个文件中读取源代码的版本,如果两者不一致,则相应的新版本的目标代码文件为需要替换的文件,拷贝出来作为升级安装包中的文件;如果一致,则不需要拷贝;
步骤6:将步骤4中得到的需要新增的文件、步骤5中得到的需要替换的文件以及步骤4中得到的需要删除的文件列表记录制作成安装包,安装时将需要新增的文件拷贝到旧版本的安装目录,将需要替换的文件强制替换到旧版本的安装目录并根据需要删除的文件列表记录从旧版本的安装目录中删除。
所述的找出对应每个目标代码文件的源代码文件或源代码目录是指用于编译生成目标代码文件的是一个源代码文件或一个源代码目录下的文件。
所述的源代码文件或源代码目录的版本是指版本控制***对应的一个整数的版本标识,源代码文件初始导入到版本控制***时会被分配一个版本,在每次修改并提交后,源代码文件被赋予一个新的版本,源代码目录下的文件被修改并提交后,源代码目录的版本也被更新,源代码目录的版本对应其下最新的源代码文件的版本。
所述的在生成目标代码文件中写入源代码的版本是指调用编译程序往目标代码文件中写入源代码版本作为描述性的信息。
所述的制作成安装包并执行文件的拷贝、替换、删除操作指的是将升级文件压缩成一个文件并通过批处理的方式执行文件的拷贝、替换和删除。
本发明方案的有益效果如下:
1、本发明的方法不依赖于人工判断,版本信息完全由版本控制***维护,不会导致升级包数据错误。
2、本发明的方法升级效率高,只需要替换掉新旧版本差异的部分,对于大型程序的升级来说特别节省时间。
3、本发明的方法生成的升级安装包是增量的升级安装包,只包含需要新增和替换的文件,占用空间小,适合于网络下载以及维护人员使用外设携带。
附图说明
下面结合附图对本发明进一步说明:
图1是本发明的流程图;
具体实施方式
如图1所示,程序用不同的代码有不同的编译方式,在实现方面有所不同,本发明下面以Java编写的程序为例,版本控制***是SVN,使用ant批处理程序,最后的升级包用rpm的形式发布。
首先checkout出新旧两份源代码。
然后使用ant批量编译成jar文件,这两步都是一般的实现方式,不详述。
接着对生成的jar包打上SVN版本标签
接着对比新旧版本的实现端目录文件列表(用ant实现)
接着比较同时存在列表中的文件版本,筛选出要替换的jar包
接着编写脚本拷贝rpm所需要的文件并打包
cp-f todelete libtodelete/root/rpmbuild/BUILD
cp-rf addlib/root/rpmbuild/BUILD/
cp-rf addjar/root/rpmbuild/BUILD
cp-rf replacejar/root/rpmbuild/BUILD
cp-f rmfiles/root/rpmbuild/BUILD
rpmbuild-bb Gcloud-Runner-patch.spec
在Gcloud-Runner-patch.spec中编写shell脚本拷贝和替换文件
cp-rf addjar$RPM_BUILD_ROOT/opt/Gcloud-Runner-patch/
cp-rf replacejar$RPM_BUILD_ROOT/opt/Gcloud-Runner-patch/
调用shell脚本rmfiles删除不需要的文件
Claims (7)
1.一种程序升级安装包的制作方法,其特征在于:首先对新旧源代码版本进行比较;如果有新版本,则进一步比较新旧版本的代码文件;新版本中新增的设为新增文件,旧版本中多余的文件列表记录为需要删除的文件,新旧版本不一致时相应的新版本的目标代码文件为需要替换的文件;将前述文件和/或文件列表记录制作成安装包,并执行文件的拷贝、替换、删除操作;
具体包括如下步骤:
步骤1:从版本控制器中检出新旧两个版本的源代码;
步骤2:按目标代码文件的编译步骤找出对应每个目标代码文件的源代码文件或源代码目录,通过检出的源代码工作副本获得源代码文件或源代码目录的版本;
步骤3:修改编译步骤,在生成目标代码文件的步骤中加入写入源代码的版本的步骤并编译生成新旧两个版本的目标代码;
步骤4:比较新旧版本的目标代码文件列表,新版本比旧版本多的文件为需要新增的文件,拷贝出来作为升级安装包中的文件,旧版本比新版本多的文件列表记录下来作为需要删除的文件,两个版本一致的文件列表作为需要比较的文件列表;
步骤5:分别从新旧版本目标代码中找出需要比较的文件列表中每一项对应的文件,从两个文件中读取源代码的版本,如果两者不一致,则相应的新版本的目标代码文件为需要替换的文件,拷贝出来作为升级安装包中的文件;如果一致,则不需要拷贝;
步骤6:将步骤4中得到的需要新增的文件、步骤5中得到的需要替换的文件以及步骤4中得到的需要删除的文件列表记录制作成安装包,安装时将需要新增的文件拷贝到旧版本的安装目录,将需要替换的文件强制替换到旧版本的安装目录并根据需要删除的文件列表记录从旧版本的安装目录中删除。
2.根据权利要求1所述的程序升级安装包的制作方法,其特征在于:所述的找出对应每个目标代码文件的源代码文件或源代码目录是指用于编译生成目标代码文件的是一个源代码文件或一个源代码目录下的文件。
3.根据权利要求1所述的程序升级安装包的制作方法,其特征在于:所述的源代码文件或源代码目录的版本是指版本控制***对应的一个整数的版本标识,源代码文件初始导入到版本控制***时会被分配一个版本,在每次修改并提交后,源代码文件被赋予一个新的版本,源代码目录下的文件被修改并提交后,源代码目录的版本也被更新,源代码目录的版本对应其下最新的源代码文件的版本。
4.根据权利要求2所述的程序升级安装包的制作方法,其特征在于:所述的源代码文件或源代码目录的版本是指版本控制***对应的一个整数的版本标识,源代码文件初始导入到版本控制***时会被分配一个版本,在每次修改并提交后,源代码文件被赋予一个新的版本,源代码目录下的文件被修改并提交后,源代码目录的版本也被更新,源代码目录的版本对应其下最新的源代码文件的版本。
5.根据权利要求1至4任一项所述的程序升级安装包的制作方法,其特征在于:所述的在生成目标代码文件中写入源代码的版本是指调用编译程序往目标代码文件中写入源代码版本作为描述性的信息。
6.根据权利要求1至4任一项所述的程序升级安装包的制作方法,其特征在于:所述的制作成安装包并执行文件的拷贝、替换、删除操作指的是将升级文件压缩成一个文件并通过批处理的方式执行文件的拷贝、替换和删除。
7.根据权利要求5所述的程序升级安装包的制作方法,其特征在于:所述的制作成安装包并执行文件的拷贝、替换、删除操作指的是将升级文件压缩成一个文件并通过批处理的方式执行文件的拷贝、替换和删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410138626.9A CN103955363B (zh) | 2014-04-08 | 2014-04-08 | 一种程序升级安装包的制作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410138626.9A CN103955363B (zh) | 2014-04-08 | 2014-04-08 | 一种程序升级安装包的制作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103955363A CN103955363A (zh) | 2014-07-30 |
CN103955363B true CN103955363B (zh) | 2017-03-15 |
Family
ID=51332639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410138626.9A Active CN103955363B (zh) | 2014-04-08 | 2014-04-08 | 一种程序升级安装包的制作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103955363B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844318A (zh) * | 2017-12-11 | 2018-03-27 | 维沃移动通信有限公司 | 一种操作***的升级方法及移动终端和服务器 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104267978B (zh) * | 2014-09-16 | 2017-10-10 | 青岛海信移动通信技术股份有限公司 | 一种生成差分包的方法及装置 |
CN104793972A (zh) * | 2015-04-17 | 2015-07-22 | 北京大学深圳研究院 | 一种更新数据包的方法及装置 |
CN104765692B (zh) * | 2015-04-29 | 2018-11-06 | 北京嘀嘀无限科技发展有限公司 | 用于自动化测试软件的方法及设备 |
CN104866305A (zh) * | 2015-04-30 | 2015-08-26 | 闻泰通讯股份有限公司 | 自识别最佳编译机制的方法 |
CN106293793A (zh) * | 2015-06-02 | 2017-01-04 | 西安中兴新软件有限责任公司 | 一种终端的软件升级方法、装置和*** |
CN105049532B (zh) * | 2015-08-28 | 2018-07-13 | 北京奇艺世纪科技有限公司 | 一种sdk包的打包方法及装置和下载方法及装置 |
CN105260303A (zh) * | 2015-10-10 | 2016-01-20 | 浪潮电子信息产业股份有限公司 | 一种基于自动化测试的敏捷测试方案 |
CN105867959A (zh) * | 2015-12-01 | 2016-08-17 | 乐视致新电子科技(天津)有限公司 | 二进制文件集成方法及装置 |
CN105487907A (zh) * | 2015-12-07 | 2016-04-13 | 青岛海信电器股份有限公司 | 一种差分包的制作方法和装置 |
CN106919431B (zh) * | 2015-12-25 | 2021-03-26 | 航天信息股份有限公司 | 持续集成中的代码比对方法、设备以及*** |
CN105635277A (zh) * | 2015-12-30 | 2016-06-01 | 北京京东尚科信息技术有限公司 | 提供升级包的方法与装置以及升级客户端的方法与装置 |
CN106371849A (zh) * | 2016-09-18 | 2017-02-01 | 网易(杭州)网络有限公司 | 应用数据的处理方法及装置 |
CN106790432A (zh) * | 2016-12-05 | 2017-05-31 | 广州谷得网络科技有限公司 | 一种软件更新方法及装置 |
CN108268266A (zh) * | 2016-12-29 | 2018-07-10 | 中移(苏州)软件技术有限公司 | 一种升级方法和装置 |
CN106657361B (zh) * | 2016-12-30 | 2019-09-13 | 歌尔科技有限公司 | 一种代码添加混淆的安卓安装包ota升级方法 |
CN106919382A (zh) * | 2017-01-22 | 2017-07-04 | 百度在线网络技术(北京)有限公司 | 用于生成应用更新包的方法和装置 |
CN108664255B (zh) * | 2017-03-27 | 2023-04-11 | 深圳市中兴通讯技术服务有限责任公司 | 一种软件升级方法及装置 |
CN107797819A (zh) * | 2017-06-12 | 2018-03-13 | 平安普惠企业管理有限公司 | 增量包生成方法、计算机可读存储介质及服务器 |
CN107193619B (zh) * | 2017-07-28 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 一种编译版本自动更新的方法与装置 |
CN108804083B (zh) * | 2018-05-23 | 2022-01-11 | 有米科技股份有限公司 | 一种代码操作方法及装置 |
CN109739544B (zh) * | 2018-12-25 | 2022-11-04 | 北京三快在线科技有限公司 | 用于生成应用安装包的方法、装置及电子设备 |
CN112860284B (zh) * | 2019-11-12 | 2024-05-10 | 深圳怡化电脑股份有限公司 | 设备远程升级的sp升级包生成方法、装置及计算机设备 |
CN111176716A (zh) * | 2019-12-17 | 2020-05-19 | 视联动力信息技术股份有限公司 | 升级包生成方法、装置、电子设备及存储介质 |
CN111562931A (zh) * | 2020-04-30 | 2020-08-21 | 斑马网络技术有限公司 | 用于车机固件升级的方法及*** |
CN112947983B (zh) * | 2021-04-15 | 2024-03-15 | 网易(杭州)网络有限公司 | 应用程序更新方法及装置、电子设备、存储介质 |
CN113419771B (zh) * | 2021-05-31 | 2023-01-24 | 济南浪潮数据技术有限公司 | 一种应用软件的升级包制作方法、***及升级方法、*** |
CN117555579A (zh) * | 2024-01-11 | 2024-02-13 | 杭州实在智能科技有限公司 | 基于Pyinstaller平台的软件构建更新方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7072913B2 (en) * | 2001-06-11 | 2006-07-04 | Océ-Technologies B.V. | Method, system and computer program for executing hot migrate operation using migration plug-ins |
CN102591693A (zh) * | 2012-01-12 | 2012-07-18 | 北京中广睛彩导航科技有限公司 | 一种基于cmmb进行文件更新的方法及装置 |
CN103095838A (zh) * | 2013-01-16 | 2013-05-08 | 福州博远无线网络科技有限公司 | 一种通过下载增量升级包来升级安卓智能手机软件的方法 |
-
2014
- 2014-04-08 CN CN201410138626.9A patent/CN103955363B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7072913B2 (en) * | 2001-06-11 | 2006-07-04 | Océ-Technologies B.V. | Method, system and computer program for executing hot migrate operation using migration plug-ins |
CN102591693A (zh) * | 2012-01-12 | 2012-07-18 | 北京中广睛彩导航科技有限公司 | 一种基于cmmb进行文件更新的方法及装置 |
CN103095838A (zh) * | 2013-01-16 | 2013-05-08 | 福州博远无线网络科技有限公司 | 一种通过下载增量升级包来升级安卓智能手机软件的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844318A (zh) * | 2017-12-11 | 2018-03-27 | 维沃移动通信有限公司 | 一种操作***的升级方法及移动终端和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN103955363A (zh) | 2014-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103955363B (zh) | 一种程序升级安装包的制作方法 | |
JP5007046B2 (ja) | コンポーネントベースのソフトウェア・プロダクトの保守 | |
CN106775723B (zh) | 基于Android平台的***固件定制的方法和Android设备 | |
CN109491695A (zh) | 一种集成安卓应用的增量更新方法 | |
US9430224B2 (en) | Hot-update method and apparatus | |
US10922067B1 (en) | System and method for installing, updating and uninstalling applications | |
US9519466B2 (en) | Executable code for constrained computing environments | |
US8010962B2 (en) | Infrastructure for the automation of the assembly of schema maintenance scripts | |
US9891939B2 (en) | Application compatibility with library operating systems | |
US20090259999A1 (en) | Method and system for applying a patch during application execution | |
CN107506219A (zh) | 一种基于Android***的通用版本升级方法 | |
US9218137B2 (en) | System and method for providing data migration services | |
JP2021002317A (ja) | アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体 | |
CN104239082A (zh) | 嵌入式***的热补丁实现方法 | |
JP2012527027A (ja) | ランタイム環境を構築するためのシステムおよび方法 | |
CN105487907A (zh) | 一种差分包的制作方法和装置 | |
KR102052776B1 (ko) | 병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷 | |
CN101719074A (zh) | 补丁实现方法及装置 | |
CN106874195A (zh) | 一种针对android应用的bug修复和持续交付方案 | |
CN104133699A (zh) | 设备***软件升级方法与*** | |
CN103761107A (zh) | 软件包定制的装置及方法 | |
CN105224309A (zh) | 一种调取函数的方法和装置 | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN103645888A (zh) | 一种自动构建操作***的***及方法 | |
CN102054041A (zh) | 元数据升级方法和*** |
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 | ||
CP02 | Change in the address of a patent holder |
Address after: 523808 19th Floor, Cloud Computing Center, Chinese Academy of Sciences, No. 1 Kehui Road, Songshan Lake Hi-tech Industrial Development Zone, Dongguan City, Guangdong Province Patentee after: G-Cloud Technology Co., Ltd. Address before: 523808 No. 14 Building, Songke Garden, Songshan Lake Science and Technology Industrial Park, Dongguan City, Guangdong Province Patentee before: G-Cloud Technology Co., Ltd. |
|
CP02 | Change in the address of a patent holder |