CN114296771A - 一种基于文件比对的安装包增量升级方法和装置 - Google Patents
一种基于文件比对的安装包增量升级方法和装置 Download PDFInfo
- Publication number
- CN114296771A CN114296771A CN202111628028.6A CN202111628028A CN114296771A CN 114296771 A CN114296771 A CN 114296771A CN 202111628028 A CN202111628028 A CN 202111628028A CN 114296771 A CN114296771 A CN 114296771A
- Authority
- CN
- China
- Prior art keywords
- package
- upgrading
- file
- software
- version
- 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.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于文件比对的安装包增量升级方法和装置,包括:获取软件各个版本的安装包;生成所述安装包中的每个文件对应的哈希值;建立所述哈希值与安装包的版本号之间的对应关系;将最新版本的安装包中每个文件对应的哈希值,与低版本的安装包中每个文件对应的哈希值进行比对,生成不同版本升级到最新版本的增量升级包;接收软件的升级请求,根据所述软件的当前版本号,获取对应的增量升级包,使用所述增量升级包对所述软件进行升级。在保证客户端完整升级的前提下,减少流量消耗,降低安装包下载和安装的时间。
Description
技术领域
本发明涉及软件管理技术领域,具体涉及一种基于文件比对的安装包增量升级方法和装置。
背景技术
随着PC客户端版本的不断更新和升级,客户端体积也逐渐变大,用户升级成了一个比较棘手的问题,在传统的PC客户端升级过程中,用户进行版本升级是,采用在线下载最新版本的客户端安装包的方式,下载完成后进行覆盖安装,最终完成客户端的版本升级,这种升级方式可以确保客户端升级到最新版本,但是当网络带宽较慢时或者客户端安装包本身体积较大时,需要花费更多的时间完成安装包的下载,同时也会消耗更多的网络流量,影响用户的升级体验。
发明内容
为解决上述问题,本发明提供一种基于文件比对的安装包增量升级方法,包括:
获取软件各个版本的安装包;
生成所述安装包中的每个文件对应的哈希值;建立所述哈希值与安装包的版本号之间的对应关系;
将最新版本的安装包中每个文件对应的哈希值,与低版本的安装包中每个文件对应的哈希值进行比对,生成不同版本升级到最新版本的增量升级包;
接收软件的升级请求,根据所述软件的当前版本号,获取对应的增量升级包,使用所述增量升级包对所述软件进行升级。
优选的,建立所述哈希值与安装包的版本号之间的对应关系,包括:
获取所述安装包的版本号;
建立所述哈希值与安装包的版本号之间的索引关系。
优选的,将最新版本的安装包中每个文件对应的哈希值,与低版本的安装包中每个文件对应的哈希值进行比对,生成不同版本升级到最新版本的增量升级包,包括:
通过比对哈希值,获取最新版本的安装包中每个文件与低版本的安装包中每个文件的差异;
根据所述差异,生成不同版本升级到最新版本的增量升级包。
优选的,接收软件的升级请求,根据所述软件的当前版本号,获取对应的增量升级包,包括:
接收软件的升级请求,通过解析所述升级请求,获取所述软件的当前版本号;
根据当前版本号,匹配当前版本升级到最新版本的增量升级包。
优选的,使用所述增量升级包对所述软件进行升级,包括:
下载所述增量升级包;
使用所述增量升级包进行覆盖安装,将所述软件升级至最新版本。
本发明同时提供一种基于文件比对的安装包增量升级装置,包括:
安装包获取单元,用于获取软件各个版本的安装包;
对应关系建立单元,用于生成所述安装包中的每个文件对应的哈希值;建立所述哈希值与安装包的版本号之间的对应关系;
增量升级包生成单元,用于将最新版本的安装包中每个文件对应的哈希值,与低版本的安装包中每个文件对应的哈希值进行比对,生成不同版本升级到最新版本的增量升级包;
升级单元,用于接收软件的升级请求,根据所述软件的当前版本号,获取对应的增量升级包,使用所述增量升级包对所述软件进行升级。
优选的,对应关系建立单元,包括:
版本号获取子单元,用于获取所述安装包的版本号;
索引关系建立子单元,用于建立所述哈希值与安装包的版本号之间的索引关系。
优选的,增量升级包生成单元,包括:
差异获取子单元,用于通过比对哈希值,获取最新版本的安装包中每个文件与低版本的安装包中每个文件的差异;
增量升级包生成子单元,用于根据所述差异,生成不同版本升级到最新版本的增量升级包。
优选的,升级单元,包括:
当前版本号获取子单元,用于接收软件的升级请求,通过解析所述升级请求,获取所述软件的当前版本号;
匹配子单元,用于根据当前版本号,匹配当前版本升级到最新版本的增量升级包。
优选的,升级单元,包括:
下载子单元,用于下载所述增量升级包;
升级子单元,用于使用所述增量升级包进行覆盖安装,将所述软件升级至最新版本。
附图说明
图1是本发明提供的一种基于文件比对的安装包增量升级方法的流程图;
图2是本发明涉及的生成增量升级包的流程图;
图3是本发明涉及的软件升级流程图;
图4是本发明提供的一种基于文件比对的安装包增量升级装置结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
图1是本发明提供的一种基于文件比对的安装包增量升级方法的流程图,包括如下步骤:
步骤S101,获取软件各个版本的安装包。
软件的安装包一般存储于服务端,然后通过从服务端下载安装包进行软件的安装或升级,服务端存储有各个版本的安装包,每个安装包对应一个版本号。
步骤S102,生成所述安装包中的每个文件对应的哈希值;建立所述哈希值与安装包的版本号之间的对应关系。
安装包中通常情况下有多个文件夹,每级文件夹下也会有多个文件,然后根据每个文件的属性,如文件名、大小、位置等生成每个文件对应的哈希值。通过获取所述安装包的版本号;建立所述哈希值与安装包的版本号之间的索引关系。
步骤S103,将最新版本的安装包中每个文件对应的哈希值,与低版本的安装包中每个文件对应的哈希值进行比对,生成不同版本升级到最新版本的增量升级包。
通过比对哈希值,获取最新版本的安装包中每个文件与低版本的安装包中每个文件的差异;根据所述差异,生成不同版本升级到最新版本的增量升级包。
步骤S104,接收软件的升级请求,根据所述软件的当前版本号,获取对应的增量升级包,使用所述增量升级包对所述软件进行升级。
当服务端上有软件的新版本时,服务端可以发送推送消息通知已安装软件的客户端有版本,或者客户端主动检测服务端有无软件新版本,总之,当服务端上有软件的新版本时,客户端向服务端发送软件的升级请求,服务端接收软件的升级请求,通过解析所述升级请求,获取所述软件的当前版本号;根据当前版本号,匹配当前版本升级到最新版本的增量升级包。
接下来,下载所述增量升级包;使用所述增量升级包进行覆盖安装,将所述软件升级至最新版本。升级完成后将最新版本号更新至注册表,完成整个增量升级。
本发明一个成功案例是基于SAAS平台模式,采用JAVA语言开发的微服务架构的服务端、C++语言开发的客户端,共同构建的一个项目,实现了客户端的增量升级方案。
整体方案流程如下:
1、上传新版本客户端:客户端在新版本发布前,将新版本客户端的安装包(exe格式)及文件压缩包(zip格式),上传至服务端;
2、处理客户端安装程序(exe格式):客户端安装程序(exe格式)直接上传至OSS对象存储服务器中,路径为“client/setup_{version}.exe”,并自动生成下载地址,将安装包信息(版本号、下载地址等)保存到数据库中;
3、处理客户端文件压缩包(zip格式),流程如图2所示:
(1)服务端接收上传文件压缩包后,解压zip文件,同时将每个文件名与文件的md5值写入map中,将map写入以版本号命名的txt文件中({version}.txt)。将解压后的文件上传至OSS对象存储服务器中,路径为“client/unzip”,txt文件上传至OSS对象存储服务器中,路径为“client/unzip/md5/”;
(2)通过OSS获取“client/unzip/md5/”所有文件名称,并将名称存储md5List 中;
(3)遍历md5List,根据文件名称,从OSS上拉取对应文件,将文件信息写入map集合,key=fileName,value=md5值;
(4)将当前版本与最新版本的map集合做对比:
如果新版本不包含历史版本文件,则此文件在新版本中应该被删除,将key 加入到delList内;
如果历史版本不包含新版本文件,则此文件是新版本新增文件,将key加入updateList内;
如果历史版本包含新版本文件且key相同,但是value不同,则此文件是新版本的变更文件,将key加入updateList内。
(5)处理updateList:通过OSS拉取文件并直接写入压缩包,压缩包名称为${oldVersion}_${newVersion}。
(6)处理delList:将"/"替换为"\",将文件相对目录写入DeleteFiles,格式为:一行一个文件名(包含扩展名),相对目录时\分隔,将DeleteFiles写入压缩包;
(7)上传压缩包,OSS路径为"client/zip/",自动生成下载地址,并将安装包信息(版本号、下载地址等)保存到数据库中。
接下来的4-8为客户端升级流程,如图3所示:
4、升级策略配置:服务端配置升级策略,可按税号、地区配置不同的升级策略,实现灰度发布;
5、客户端启动后,自动启动客户端升级程序,升级程序读取客户端注册表,获取当前客户端版本号、税号,调用服务端接口,获取升级信息;
6、升级判断:服务端接收请求后,解析请求的IP地址,将IP地址解析为所属地区的6位地区编码,根据税号及地区编码,先判断此用户需要升级的目标版本,优先级为:税号>区/县(6位地区编码)>计划单列市/市(4位地区编码)> 省(2位地区编码)>通用版本,若升级程序上传的版本号小于目标版本号,则将两个版本号拼接,格式为${oldVersion}_${newVersion},查询数据库中是否有客户端增量升级压缩包,若有,则将目标版本及增量升级压缩包下载地址返回客户端;若没有,则将目标版本及全量安装包下载地址返回客户端;
7、客户端比对云端返回的目标版本与本地客户端版本一致性,若云端返回的目标版本小于等于本地客户端版本,说明本地已经安装了最新版本客户端,无需升级;若云端返回的目标版本高于本地客户端版本,根据下载地址,下载升级包,下载路径为“download\Update\”;
8、下载完成后,判断此次下载的是客户端的安装包(exe格式)还是文件压缩包(zip格式),并进行不同处理方式:若是安装包(exe格式):运行安装程序,后续流程由安装程序执行;若是文件压缩包(zip格式),则:
(1)解压增量升级包,解压路径为“Download\Update\Unzip\”,增量升级包中包含待升级文件和待删除文件(DeleteFiles);
(2)结束客户端的相关进程,将待升级文件和待删除文件批量移动到“Download\Update\Remove\”中。若移动失败,则进行回滚操作,启动客户端进程,跳过此次升级,等待下一次触发升级;若移动成功,则将待升级文件移入客户端安装目录中,待删除文件执行删除操作,并清空“download\Update\”文件夹中内容,更新客户端注册表,启动新版客户端更新。
基于同一发明构思,本发明同时提供一种基于文件比对的安装包增量升级装置400,如图4所示,包括:
安装包获取单元410,用于获取软件各个版本的安装包;
对应关系建立单元420,用于生成所述安装包中的每个文件对应的哈希值;建立所述哈希值与安装包的版本号之间的对应关系;
增量升级包生成单元430,用于将最新版本的安装包中每个文件对应的哈希值,与低版本的安装包中每个文件对应的哈希值进行比对,生成不同版本升级到最新版本的增量升级包;
升级单元440,用于接收软件的升级请求,根据所述软件的当前版本号,获取对应的增量升级包,使用所述增量升级包对所述软件进行升级。
优选的,对应关系建立单元,包括:
版本号获取子单元,用于获取所述安装包的版本号;
索引关系建立子单元,用于建立所述哈希值与安装包的版本号之间的索引关系。
优选的,增量升级包生成单元,包括:
差异获取子单元,用于通过比对哈希值,获取最新版本的安装包中每个文件与低版本的安装包中每个文件的差异;
增量升级包生成子单元,用于根据所述差异,生成不同版本升级到最新版本的增量升级包。
优选的,升级单元,包括:
当前版本号获取子单元,用于接收软件的升级请求,通过解析所述升级请求,获取所述软件的当前版本号;
匹配子单元,用于根据当前版本号,匹配当前版本升级到最新版本的增量升级包。
优选的,升级单元,包括:
下载子单元,用于下载所述增量升级包;
升级子单元,用于使用所述增量升级包进行覆盖安装,将所述软件升级至最新版本。
通过本发明提供的一种基于文件比对的安装包增量升级方法和装置,可以在保证客户端完整升级的前提下,减少流量消耗,降低安装包下载和安装的时间。同时,可根据IP来源、请求参数数据,分层级进行精准定点升级,实现灰度发布、试点运行。
最后应该说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种基于文件比对的安装包增量升级方法,其特征在于,包括:
获取软件各个版本的安装包;
生成所述安装包中的每个文件对应的哈希值;建立所述哈希值与安装包的版本号之间的对应关系;
将最新版本的安装包中每个文件对应的哈希值,与低版本的安装包中每个文件对应的哈希值进行比对,生成不同版本升级到最新版本的增量升级包;
接收软件的升级请求,根据所述软件的当前版本号,获取对应的增量升级包,使用所述增量升级包对所述软件进行升级。
2.根据权利要求1所述的方法,其特征在于,建立所述哈希值与安装包的版本号之间的对应关系,包括:
获取所述安装包的版本号;
建立所述哈希值与安装包的版本号之间的索引关系。
3.根据权利要求1所述的方法,其特征在于,将最新版本的安装包中每个文件对应的哈希值,与低版本的安装包中每个文件对应的哈希值进行比对,生成不同版本升级到最新版本的增量升级包,包括:
通过比对哈希值,获取最新版本的安装包中每个文件与低版本的安装包中每个文件的差异;
根据所述差异,生成不同版本升级到最新版本的增量升级包。
4.根据权利要求1所述的方法,其特征在于,接收软件的升级请求,根据所述软件的当前版本号,获取对应的增量升级包,包括:
接收软件的升级请求,通过解析所述升级请求,获取所述软件的当前版本号;
根据当前版本号,匹配当前版本升级到最新版本的增量升级包。
5.根据权利要求1所述的方法,其特征在于,使用所述增量升级包对所述软件进行升级,包括:
下载所述增量升级包;
使用所述增量升级包进行覆盖安装,将所述软件升级至最新版本。
6.一种基于文件比对的安装包增量升级装置,其特征在于,包括:
安装包获取单元,用于获取软件各个版本的安装包;
对应关系建立单元,用于生成所述安装包中的每个文件对应的哈希值;建立所述哈希值与安装包的版本号之间的对应关系;
增量升级包生成单元,用于将最新版本的安装包中每个文件对应的哈希值,与低版本的安装包中每个文件对应的哈希值进行比对,生成不同版本升级到最新版本的增量升级包;
升级单元,用于接收软件的升级请求,根据所述软件的当前版本号,获取对应的增量升级包,使用所述增量升级包对所述软件进行升级。
7.根据权利要求6所述的装置,其特征在于,对应关系建立单元,包括:
版本号获取子单元,用于获取所述安装包的版本号;
索引关系建立子单元,用于建立所述哈希值与安装包的版本号之间的索引关系。
8.根据权利要求6所述的装置,其特征在于,增量升级包生成单元,包括:
差异获取子单元,用于通过比对哈希值,获取最新版本的安装包中每个文件与低版本的安装包中每个文件的差异;
增量升级包生成子单元,用于根据所述差异,生成不同版本升级到最新版本的增量升级包。
9.根据权利要求6所述的装置,其特征在于,升级单元,包括:
当前版本号获取子单元,用于接收软件的升级请求,通过解析所述升级请求,获取所述软件的当前版本号;
匹配子单元,用于根据当前版本号,匹配当前版本升级到最新版本的增量升级包。
10.根据权利要求6所述的装置,其特征在于,升级单元,包括:
下载子单元,用于下载所述增量升级包;
升级子单元,用于使用所述增量升级包进行覆盖安装,将所述软件升级至最新版本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111628028.6A CN114296771A (zh) | 2021-12-28 | 2021-12-28 | 一种基于文件比对的安装包增量升级方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111628028.6A CN114296771A (zh) | 2021-12-28 | 2021-12-28 | 一种基于文件比对的安装包增量升级方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114296771A true CN114296771A (zh) | 2022-04-08 |
Family
ID=80971292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111628028.6A Pending CN114296771A (zh) | 2021-12-28 | 2021-12-28 | 一种基于文件比对的安装包增量升级方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114296771A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028078A (zh) * | 2022-12-15 | 2023-04-28 | 广州鲁邦通智能科技有限公司 | 一种基于vpn技术的软件远程升级方法 |
CN116108811A (zh) * | 2023-04-11 | 2023-05-12 | 天津联想协同科技有限公司 | 一种升级SaaS应用特定格式文档内容的方法及系统 |
CN117834649A (zh) * | 2024-03-01 | 2024-04-05 | 荣耀终端有限公司 | 数据传输方法及相关装置 |
-
2021
- 2021-12-28 CN CN202111628028.6A patent/CN114296771A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028078A (zh) * | 2022-12-15 | 2023-04-28 | 广州鲁邦通智能科技有限公司 | 一种基于vpn技术的软件远程升级方法 |
CN116028078B (zh) * | 2022-12-15 | 2023-10-03 | 广州鲁邦通智能科技有限公司 | 一种基于vpn技术的软件远程升级方法 |
CN116108811A (zh) * | 2023-04-11 | 2023-05-12 | 天津联想协同科技有限公司 | 一种升级SaaS应用特定格式文档内容的方法及系统 |
CN116108811B (zh) * | 2023-04-11 | 2023-08-11 | 天津联想协同科技有限公司 | 一种升级SaaS应用特定格式文档内容的方法及系统 |
CN117834649A (zh) * | 2024-03-01 | 2024-04-05 | 荣耀终端有限公司 | 数据传输方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114296771A (zh) | 一种基于文件比对的安装包增量升级方法和装置 | |
EP1519268B1 (en) | Communication terminal and communication network for partially updating software, software update method, and software creation device and method therefor | |
EP3021218B1 (en) | Upgrade packet generation method, server, software upgrade method, and mobile terminal | |
CN113946358B (zh) | 一种基于车辆管理系统的自动驾驶车辆软件远程升级方法 | |
WO2011069730A1 (en) | A method and system for managing configurations of system management agents in a distributed environment | |
CN102541596A (zh) | 一种操作系统升级方法及装置 | |
CN107483241B (zh) | 一种在网元升级过程中下载升级镜像版本的方法和装置 | |
CN112882729A (zh) | 应用镜像升级方法、装置、计算机设备和存储介质 | |
CN107016280A (zh) | 一种客户端应用程序的升级方法及系统 | |
US6832374B2 (en) | System and method for updating an executing executable file | |
CN111736876A (zh) | 客户端更新控制方法、装置、存储介质及服务器 | |
CN115421764A (zh) | 一种待升级模块识别方法、装置、设备及存储介质 | |
CN114840243A (zh) | 一种分布式边缘节点的操作系统升级系统 | |
CN100373861C (zh) | 通信网管系统中的软件升级装置及其方法 | |
CN118276848A (zh) | 一种低代码平台的函数自定义方法、装置、设备及介质 | |
CN112328284A (zh) | 应用程序升级方法、系统、设备和存储介质 | |
CN109240726A (zh) | 一种软件更新方法及系统 | |
GB2454583A (en) | Remote management of mobile devices | |
CN117632187A (zh) | 一种升级版本动态管理方法、系统、设备及存储介质 | |
WO2017036197A1 (zh) | 一种网元模型管理方法及装置 | |
CN110908694A (zh) | 一种电子招投标客户端应用的热更新系统及方法 | |
CN116069366A (zh) | 客户端应用程序更新方法及装置、存储介质及电子设备 | |
JP2020201719A (ja) | 情報処理装置とその制御方法、及びプログラム | |
CN112685102B (zh) | 一种网关插件热加载方法、装置、设备及介质 | |
CN115495131A (zh) | 一种分布式存储操作系统升级方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |