CN112379910A - 一种软件升级方法和装置 - Google Patents
一种软件升级方法和装置 Download PDFInfo
- Publication number
- CN112379910A CN112379910A CN202011574496.5A CN202011574496A CN112379910A CN 112379910 A CN112379910 A CN 112379910A CN 202011574496 A CN202011574496 A CN 202011574496A CN 112379910 A CN112379910 A CN 112379910A
- Authority
- CN
- China
- Prior art keywords
- value
- installation package
- executable file
- header
- software
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件升级方法和装置。所述方法包括:获取软件的当前安装包;编译得到当前安装包的可执行文件;根据所述可执行文件中不包括头部的固定段计算第一MD5值;比较所述第一MD5值和第二MD5值,所述第二MD5值是根据前次安装包的可执行文件中不包括头部的固定段计算得到的;若不一致,则根据所述当前安装包和前次安装包生成增量差异包;利用所述增量差异包对所述软件进行升级。本发明显著减少了升级包的大小,提高了升级效率。
Description
技术领域
本发明涉及软件技术领域,尤其涉及一种软件升级方法和装置。
背景技术
目前,远程会议系统得到广泛的使用,不同地点的用户通过会议终端登录进入会议。随着功能的更新,会议终端上安装的软件产品也需要不断地迭代升级。在升级时,若用户本地软件的版本号与服务器上的版本号不一致,则比较服务器上文件的MD5值与本地文件的MD5值,若二者不同,则基于增量差异进行更新。MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),称为MD5值。
然而,若前后两次软件包中程序代码没有更新,但编译时间、文件签名等不同,计算的MD5值也会不一样,即使在代码没有改变的情况下,也会认定存在差异,从而生成增量差异包,导致升级操作消耗更多时间和流量,升级效率低下。
发明内容
为了解决上述问题,本发明提供了一种软件升级方法和装置。
本发明的第一方面涉及一种软件升级方法,包括:
获取软件的当前安装包;
编译得到当前安装包的可执行文件;
根据所述可执行文件中不包括头部的固定段计算第一MD5值;
比较所述第一MD5值和第二MD5值,所述第二MD5值是根据前次安装包的可执行文件中不包括头部的固定段计算得到的;
若不一致,则根据所述当前安装包和前次安装包生成增量差异包;
利用所述增量差异包对所述软件进行升级。
进一步地,所述可执行文件中不包括头部的固定段是指节表部分。
进一步地,所述根据所述可执行文件中不包括头部的固定段计算第一MD5值包括:
去除所述可执行文件的Dos头和NT头,取出节表内容;
遍历整个节表,添加到一个内存数组中;
对内存数组中的数据进行计算得到MD5值。
进一步地,使用md5sum算法计算得到所述第一MD5值和第二MD5值。
进一步地,若所述第一MD5值和第二MD5值一致,则将前次安装包的文件拷贝至当前安装包中。
进一步地,该方法应用于远程会议的客户端。
本发明的第二方面涉及一种软件升级装置,包括:
获取模块,用于获取软件的当前安装包;
编译模块,用于编译得到当前安装包的可执行文件;
计算模块,用于根据所述可执行文件中不包括头部的固定段计算第一MD5值;
比较模块,用于比较所述第一MD5值和第二MD5值,所述第二MD5值是根据前次安装包的可执行文件中不包括头部的固定段计算得到的;
生成模块,用于在所述第一MD5值和第二MD5值不一致时,根据所述当前安装包和前次安装包生成增量差异包;
升级模块,用于利用所述增量差异包对所述软件进行升级。
进一步地,所述获取模块还用于获取软件的前次安装包的可执行文件;
所述计算模块还用于根据前次安装包的可执行文件中不包括头部的固定段计算得到所述第二MD5值。
本发明的第三方面涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面所述的方法。
本发明的第四方面涉及一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法。
本发明通过仅针对可执行文件中头部之外的固定段计算MD5值,避免了编译时间、文件签名等信息的影响,更加准确地反映软件代码的变动情况,显著减少了增量差异包的大小,提升了升级效率,降低了升级成本。对于存在大量客户终端的远程会议系统,效果尤其明显。
附图说明
图1为根据本发明实施例一的软件升级方法的流程图;
图2为根据本发明实施例二的软件升级方法的流程图;
图3为根据本发明实施例三的软件升级装置的结构图;
图4为能够实施本发明实施例的示例性电子设备的方框图。
具体实施方式
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案做详细的说明。
实施例一
如图1所示,本发明实施例提供了一种软件升级方法,包括:
S101、获取软件的当前安装包;
S102、编译得到当前安装包的可执行文件;
所述当前安装包可包括多个可执行文件。所述可执行文件(PE文件)是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等。其结构从起始位置开始依次是Dos头、NT头、节表以及节。DOS头是用来兼容MS-DOS操作系统,以及指明NT头在文件中的位置。NT头包含windows PE文件的主要信息。节表是PE文件后续节的描述,windows根据节表的描述加载每个节。每个节实际上是一个容器,可以包含代码、数据等等,每个节可以有独立的内存权限,比如代码节默认有读/执行权限,节的名字和数量可以自己定义。
S103、根据所述可执行文件中不包括头部的固定段计算第一MD5值;
其中,所述可执行文件中不包括头部的固定段是指节表部分或者节表及之后的部分。所述头部是指Dos头和NT头。
该步骤具体包括:
去除所述可执行文件的Dos头和NT头,取出节表内容;
遍历整个节表,添加到一个内存数组中;
对内存数组中的数据进行计算得到所述第一MD5值。
可选地,使用md5sum算法计算得到所述MD5值。
S104、比较所述第一MD5值和第二MD5值,所述第二MD5值是根据前次安装包的可执行文件中不包括头部的固定段计算得到的;
可选地,所述第二MD5值是按照与第一MD5值相同的方式计算得到的。所述第二MD5值可以是在前次升级时计算并保存,也可以是在本次升级时根据前次安装包的可执行文件计算得到。
S105、若不一致,则根据所述当前安装包和前次安装包生成增量差异包;
具体地,将第一MD5值不一样的可执行文件
S106、利用所述增量差异包对所述软件进行升级。
可选地,若所述第一MD5值和第二MD5值一致,则将前次安装包的可执行文件拷贝至当前安装包中。由此,保留了上次编译的全部信息。
本实施例的方法仅针对可执行文件中头部之外的固定段计算MD5值,避免了编译时间、文件签名等信息的影响,更加准确地反映软件代码的变动情况,显著减少了增量差异包的大小,提升了升级效率,降低了升级成本。
实施例二
如图2所示,以应用于远程会议的客户端为例,示出了软件升级方法的具体流程如下:
S201、获取软件的当前安装包。
具体地,当远程会议的客户端登录时,从服务器获取软件版本号,与客户端当前的软件版本号相比较。若当前的软件版本号较低,则从服务器获取软件的当前安装包。
S202、编译得到当前安装包的可执行文件,例如dll、exe文件等。
S203、获取前次安装包的可执行文件。
所述前次安装包的可执行文件在前次升级时已编译得到,可存储于客户端或服务器中。
S204、根据所述可执行文件中不包括头部的固定段计算第一MD5值和第二MD5值;
即去掉当前安装包的可执行文件中的Dos头和NT头,根据节表计算第一MD5值,去掉前次安装包的可执行文件中的Dos头和NT头,根据节表计算第二MD5值。
S205、比较所述第一MD5值和第二MD5值;
S206、若不一致,则保留当前安装包的可执行文件,进入步骤S208;
S207、若一致,则将前次安装包的可执行文件拷贝至当前安装包中,结束处理。由此,保留了上次编译的全部信息。
S208、生成新的安装包,即增量差异包。
其中,根据不一致的可执行文件组成增量差异包。可选地,还可以生成更改记录,例如Change_file.txt文件,供开发人员参考。
S209、利用所述新的安装包对所述软件进行升级。
其中,利用Linux的md5sum算法从增量差异包中每个PE文件Dos头开始计算md5值,生成Config.xml文件并反馈至服务器,用于执行升级流程。
实施例三
如图3所示,本发明实施例还提供了一种软件升级装置,包括:
获取模块301,用于获取软件的当前安装包;
编译模块302,用于编译得到当前安装包的可执行文件;
计算模块303,用于根据所述可执行文件中不包括头部的固定段计算第一MD5值;
比较模块304,用于比较所述第一MD5值和第二MD5值,所述第二MD5值是根据前次安装包的可执行文件中不包括头部的固定段计算得到的;
生成模块305,用于在所述第一MD5值和第二MD5值不一致时,根据所述当前安装包和前次安装包生成增量差异包;
升级模块306,用于利用所述增量差异包对所述软件进行升级。
进一步地,所述获取模块还用于获取软件的前次安装包的可执行文件;
所述计算模块还用于根据前次安装包的可执行文件中不包括头部的固定段计算得到所述第二MD5值。
所述软件升级装置用于实施实施例一所述的方法,各模块的功能与方法步骤对应,在此不再赘述。
本实施例的装置仅针对可执行文件中头部之外的固定段计算MD5值,避免了编译时间、文件签名等信息的影响,更加准确地反映软件代码的变动情况,显著减少了增量差异包的大小,提升了升级效率,降低了升级成本。
本公开的实施例还提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如上所述的方法。进一步地,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的方法。图4示出了可以用来实施本公开的实施例的电子设备800的示意性框图。如图所示,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803中,还可以存储设备800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元801执行上文所描述的各个方法和处理。例如,在一些实施例中,方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由CPU 801执行时,可以执行上文描述的方法的一个或多个步骤。备选地,在其他实施例中,CPU 801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (10)
1.一种软件升级方法,其特征在于,包括:
获取软件的当前安装包;
编译得到当前安装包的可执行文件;
根据所述可执行文件中不包括头部的固定段计算第一MD5值;
比较所述第一MD5值和第二MD5值,所述第二MD5值是根据前次安装包的可执行文件中不包括头部的固定段计算得到的;
若不一致,则根据所述当前安装包和前次安装包生成增量差异包;
利用所述增量差异包对所述软件进行升级。
2.根据权利要求1所述的方法,其特征在于,所述可执行文件中不包括头部的固定段是指节表部分。
3.根据权利要求2所述的方法,其特征在于,所述根据所述可执行文件中不包括头部的固定段计算第一MD5值包括:
去除所述可执行文件的Dos头和NT头,取出节表内容;
遍历整个节表,添加到一个内存数组中;
对内存数组中的数据进行计算得到所述第一MD5值。
4.根据权利要求3所述的方法,其特征在于,使用md5sum算法计算得到所述第一MD5值和第二MD5值。
5.根据权利要求1所述的方法,其特征在于,若所述第一MD5值和第二MD5值一致,则将所述前次安装包的可执行文件拷贝至当前安装包中。
6.根据权利要求1-5任一所述的方法,其特征在于,该方法应用于远程会议的客户端。
7.一种软件升级装置,其特征在于,包括:
获取模块,用于获取软件的当前安装包;
编译模块,用于编译得到当前安装包的可执行文件;
计算模块,用于根据所述可执行文件中不包括头部的固定段计算第一MD5值;
比较模块,用于比较所述第一MD5值和第二MD5值,所述第二MD5值是根据前次安装包的可执行文件中不包括头部的固定段计算得到的;
生成模块,用于在所述第一MD5值和第二MD5值不一致时,根据所述当前安装包和前次安装包生成增量差异包;
升级模块,用于利用所述增量差异包对所述软件进行升级。
8.根据权利要求7所述的装置,其特征在于,所述获取模块还用于获取软件的前次安装包的可执行文件;
所述计算模块还用于根据前次安装包的可执行文件中不包括头部的固定段计算得到所述第二MD5值。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1~6中任一项所述的方法。
10.一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011574496.5A CN112379910A (zh) | 2020-12-28 | 2020-12-28 | 一种软件升级方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011574496.5A CN112379910A (zh) | 2020-12-28 | 2020-12-28 | 一种软件升级方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112379910A true CN112379910A (zh) | 2021-02-19 |
Family
ID=74589971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011574496.5A Pending CN112379910A (zh) | 2020-12-28 | 2020-12-28 | 一种软件升级方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112379910A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528086A (zh) * | 2016-10-10 | 2017-03-22 | 广州视源电子科技股份有限公司 | 一种安卓软件升级的方法及系统 |
CN106547572A (zh) * | 2016-12-06 | 2017-03-29 | 恒生电子股份有限公司 | 一种程序文件对比方法及装置 |
CN109426521A (zh) * | 2017-08-21 | 2019-03-05 | 深圳市中兴微电子技术有限公司 | 一种无线终端版本升级系统及方法 |
US20200005324A1 (en) * | 2013-09-09 | 2020-01-02 | UnitedLex Corp. | Organization based on hash values |
-
2020
- 2020-12-28 CN CN202011574496.5A patent/CN112379910A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200005324A1 (en) * | 2013-09-09 | 2020-01-02 | UnitedLex Corp. | Organization based on hash values |
CN106528086A (zh) * | 2016-10-10 | 2017-03-22 | 广州视源电子科技股份有限公司 | 一种安卓软件升级的方法及系统 |
CN106547572A (zh) * | 2016-12-06 | 2017-03-29 | 恒生电子股份有限公司 | 一种程序文件对比方法及装置 |
CN109426521A (zh) * | 2017-08-21 | 2019-03-05 | 深圳市中兴微电子技术有限公司 | 一种无线终端版本升级系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111967017B (zh) | 生成依赖关系的方法、装置、终端设备及存储介质 | |
CN110543327B (zh) | 业务组件复用方法、装置、计算机设备及存储介质 | |
CN106055375B (zh) | 应用程序安装方法及装置 | |
CN111930448B (zh) | 用于服务发布的方法、电子设备和存储介质 | |
CN112764792B (zh) | 一种关联服务器版本应用升级方法、装置和电子设备 | |
CN108920157B (zh) | Nginx软件的安装方法、装置、计算机设备及存储介质 | |
CN109491661B (zh) | 通用交叉编译方法及设备 | |
CN113672224A (zh) | 小程序页面代码生成方法、装置及计算机设备 | |
CN109977675B (zh) | 一种开源软件识别方法及装置 | |
CN110704025A (zh) | 编码规范工具的生成方法和装置、存储介质、电子设备 | |
CN113296828A (zh) | 一种发布应用的方法、服务器和系统 | |
CN113779004A (zh) | 一种数据校验的方法和装置 | |
CN114879985B (zh) | 一种证书文件的安装方法、装置、设备及存储介质 | |
CN112379910A (zh) | 一种软件升级方法和装置 | |
CN116204428A (zh) | 一种测试用例生成方法和装置 | |
CN113821486A (zh) | pod库之间依赖关系的确定方法及其装置、电子设备 | |
CN112835609B (zh) | 一种修改依赖包下载地址的方法和装置 | |
CN113535221A (zh) | 应用版本管理的方法和装置 | |
CN113535270B (zh) | 一种软件启动方法和装置 | |
CN109388536B (zh) | 一种数据收集的方法和装置 | |
CN111209014A (zh) | 一种参数校验的方法和装置 | |
CN112486556B (zh) | 一种服务器兼容bmc的方法、系统、终端及存储介质 | |
CN114785847B (zh) | 网络控制软件开发配置方法、终端及存储介质 | |
CN115774578A (zh) | 应用处理方法、装置、电子设备、存储介质及程序产品 | |
CN110727739B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210219 |