CN104298517A - 一种软件更新方法及系统 - Google Patents
一种软件更新方法及系统 Download PDFInfo
- Publication number
- CN104298517A CN104298517A CN201410321645.5A CN201410321645A CN104298517A CN 104298517 A CN104298517 A CN 104298517A CN 201410321645 A CN201410321645 A CN 201410321645A CN 104298517 A CN104298517 A CN 104298517A
- Authority
- CN
- China
- Prior art keywords
- file
- version software
- software
- eigenwert
- format
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种软件更新方法及系统,用于更新包含有通用对象文件格式文件的软件,该方法包括:对新版本软件中的通用对象文件格式的文件进行分析,获取有效格式文件;计算出所述新版本软件中有效格式文件的特征值;判断所述新版本软件中有效格式文件的特征值是否与原版本软件中有效格式文件的特征值相匹配;所述新版本软件中有效格式文件的特征值与原版本软件中有效格式文件的特征值不匹配时,将特征值不同的有效格式文件筛选出来作为更新包,利用更新包对原版本软件进行更新;其中,新版本软件和原版本软件为同一软件的不同版本。本发明大大减少了软件更新过程中需要更新的文件量,提高了软件更新的效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种软件更新方法及系统。
背景技术
各类软件在开发过程中或正式发布后,由于存在各种需求或者技术限制,通常需要通过更新进行升级并不断完善。目前软件更新主要有两种思路,一种是根据文件的修改时间进行全局更新,另一类是建立特征值表进行更新。
第一种思路通常是先重新编译生成新目标软件可执行文件,然后根据文件的修改时间将更新的数据文件直接打包到更新包中,并以追加和覆盖的方式替换掉原有文件。这种方法会导致相同内容的文件被反复替换的问题,并增加在线更新过程中网络流量和更新时间,因此,这种方法不适用于中大型的软件更新。
另一种思路是采用哈希映射表进行更新。具体是在文件打包后的完整包中建立特征值表;然后,为每一个打包文件计算出特征值并保存到特征值表中;比较更新文件的特征值与完整包里特征值表中的数据;若特征值不存在于此表中,则认为完整包中尚未存在此文件,此时将文件的数据和索引信息写入更新包,并将其更新后的位置信息与特征值记录到特征值表中;若特征值存在于特征值表中,则表明此文件已经存在于完整包中,此时仅将特征值对应的位置信息写入更新包的索引中。采用此思路进行软件更新时,对于仅发生软件编译时间等细微变化时,也会产生频繁更新特征值现象,导致软件更新效率不高、时间成本增加、网络流量增加的问题,因此,这种方法不适用于软件版本频繁发生细微变化的软件更新。
发明内容
针对目前软件更新效率不高、更新时间长、更新过程繁琐的缺点,本发明所要解决的技术问题是提出一种软件更新方法,能够在新版软件发布时,快速有效地筛选出更新包,完成软件特别是中大型软件的有效快速更新。
为了解决上述技术问题,本发明提供了一种软件更新方法,用于更新包含有通用对象文件格式文件的软件,所述方法包括:对新版本软件中的通用对象文件格式的文件进行分析,获取有效格式文件;计算出所述新版本软件中有效格式文件的特征值;判断所述新版本软件中有效格式文件的特征值是否与原版本软件中有效格式文件的特征值相匹配;所述新版本软件中有效格式文件的特征值与原版本软件中有效格式文件的特征值不匹配时,将所述新版本软件中特征值不同的有效格式文件筛选出来作为更新包,利用所述更新包对所述原版本软件进行更新;其中,所述新版本软件和原版本软件为同一软件的不同版本。
进一步,根据所述有效格式文件的类型确定文件特征值算法,通过所述算法计算出文件特征值,且每个所述有效格式文件对应唯一的特征值。
进一步,所述有效格式文件中包含有与文件更新属性相关的特征。
进一步,所述通用对象文件格式为可移植可执行文件标准格式。
进一步,对所述新版本软件中的通用对象文件格式的文件进行分析的方式包括头文件分析和/或段分析。
进一步,所述头文件分析中,数据目录表、区块的数量、区块数据的大小特征所对应的文件为有效格式文件。
进一步,所述段分析中,段名、实际被使用的区块大小、相应块在磁盘文件中所占的大小、块属性特征所对应的文件为有效格式文件。
根据本发明的另一方面,还提供了一种软件更新系统,用于更新包含有通用对象文件格式文件的软件,所述系统包括:分析模块,用于对新版本软件中的通用对象文件格式的文件进行分析,获取有效格式文件;计算模块,用于计算出所述新版本软件中有效格式文件的特征值;判断模块,用于判断所述新版本软件中有效格式文件的特征值是否与原版本软件中有效格式文件的特征值相匹配;更新模块,用于所述新版本软件中有效格式文件的特征值与原版本软件中有效格式文件的特征值不匹配时,将所述新版本软件中特征值不同的有效格式文件筛选出来作为更新包,利用所述更新包对所述原版本软件进行更新;其中,所述新版本软件和原版本软件为同一软件的不同版本。
进一步,所述分析模块所分析的通用对象文件格式为可移植可执行文件标准格式。
进一步,所述分析模块对所述新版本软件中的通用对象文件格式的文件进行分析的方式包括头文件分析和/或段分析。
进一步,所述分析模块进行头文件分析时,数据目录表、区块的数量以及区块数据的大小特征所对应的文件为所述有效格式文件;所述分析模块进行段分析时,段名、实际被使用的区块大小、相应块在磁盘文件中所占的大小以及块属性特征所对应的文件为所述有效格式文件。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
本发明所涉及的软件更新方法及系统通过对通用对象文件格式文件进行分析归类,筛选出更新包,利用更新包对原版本软件进行更新,从而大大减少了软件更新过程中需要更新的文件量,提高了软件更新的效率。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书,权利要求书,以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。
图1是根据本发明一实施例的软件更新方法的流程示意图。
图2是根据本发明一实施例的软件更新系统的结构示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明涉及一种软件更新方法及系统,下面将结合附图及实施例对本发明进行进一步详细说明。
实施例一
图1为本发明实施例的软件更新方法的流程示意图,所述方法具体包括以下步骤:
步骤S101,对新版本软件中的通用对象文件格式的文件进行分析,并获取有效格式文件。具体是按照能否体现文件更新属性的原则,对新版本软件文件格式进行分类,划分为有效格式和无效格式。其中,有效格式文件中包含所有能体现文件更新的属性,当修改或增加软件功能时,有效格式文件中相关属性会发生变化;无效格式文件没有包含与软件修改相关的属性,如仅因重新编译软件后产生文件格式时间戳属性改变、编译修改后的源代码产生的文件格式DOS部首不改变等属性。
本实施例以通用对象文件格式(COFF,Common Object File Format)中的可移植可执行文件标准格式(PE,Portable Executable,32位Windows可移植可执行文件标准格式)为例对步骤S101进行详细说明。Windows平台下应用程序的可执行文件或动态链接库是采用可移植可执行文件标准格式(PE格式)存储的,以下主要介绍针对PE格式进行分析的过程。
1、头文件分析(file-header分析)
头文件结构中的属性用来说明文件的运行环境、运行区段、链接时间以及文件类型等。
其中,PE格式PE头结构中数据目录表IMAGE_DATA_DIRECTORYDataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]、PE头结构中区块的数量NumberOfSections、PE头结构中区块数据的大小SizeOfOptionalHeader等特征与文件更新密切相关,作为有效格式;由于软件在每次重新编译后,已修改的文件与未修改的文件的时间信息均会改变,因此,资源的产生时间TimeDateStamp、资源的主版本号MajorVersion、资源的次版本号MinorVersion等特征与文件更新关联不大,作为无效格式。
2、段分析(section分析)
段结构是由节目录和节原始数据两部分组成。
其中,段名Name[IMAGE_SIZEOF_SHORT_NAME]、实际被使用的区块大小VirtualSize、相应块在磁盘文件中所占的大小SizeOfRawData、块属性Characteristics等特征与文件更新密切相关,作为有效格式;而PhysicalAddress属性、PointerToRelocations属性等特征与文件更新关联不大,作为无效格式。
此外,DOS-stub结构中包含了兼容原有DOS系统的相关信息,确保文件为一个有效的可执行文件,此结构中的格式属性不能体现软件更新过程汇中文件的改变,因此,属于无效格式。
步骤S102,根据步骤S101中获取的有效格式文件确定文件特征值算法,通过执行该算法,确保每个文件对应一个唯一的特征值;而对步骤S101中的无效格式文件不做处理。
步骤S103,当接收到升级命令需要对原版本软件进行升级时,依据步骤S102中的特征值算法计算出的原版本软件中有效格式文件的特征值,判断所述新版本软件中有效格式文件的特征值是否与原版本软件中有效格式文件的特征值相匹配。
步骤S104,所述新版本软件中有效格式文件的特征值与原版本软件中有效格式文件的特征值不匹配时,将所述新版本软件中特征值不同的有效格式文件筛选出来作为更新包,利用更新包对原版本软件进行更新。
步骤S105,所述新版本软件中有效格式文件的特征值与原版本软件中有效格式文件的特征值相匹配时,对原版本软件不做更新。
实施例二
图2为本发明实施例的软件更新系统的结构示意图,所述系统用于更新包含有通用对象文件格式文件的软件,所述系统包括以下模块:
分析模块(101),用于对新版本软件中的通用对象文件格式的文件进行分析,并获取有效格式文件。
本实施例以分析模块所分析的通用对象文件格式为可移植可执行文件标准格式(PE格式)为例进行说明。本实施例中,分析模块对新版本软件中的可移植可执行文件标准格式的文件进行分析的方式包括头文件分析和/或段分析。
其中,所述分析模块进行头文件分析时,PE格式PE头结构中数据目录表IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]、PE头结构中区块的数量NumberOfSections、PE头结构中区块数据的大小SizeOfOptionalHeader等特征与文件更新密切相关,作为有效格式;由于软件在每次重新编译后,已修改的文件与未修改的文件的时间信息均会改变,因此,资源的产生时间TimeDateStamp、资源的主版本号MajorVersion、资源的次版本号MinorVersion等特征与文件更新关联不大,作为无效格式;所述分析模块进行段分析时,段名、实际被使用的区块大小、相应块在磁盘文件中所占的大小以及块属性特征所对应的文件为所述有效格式文件。
所述分析模块进行段分析时,段名Name[IMAGE_SIZEOF_SHORT_NAME]、实际被使用的区块大小VirtualSize、相应块在磁盘文件中所占的大小SizeOfRawData、块属性Characteristics等特征与文件更新密切相关,作为有效格式;而PhysicalAddress属性、PointerToRelocations属性等特征与文件更新关联不大,作为无效格式。
计算模块(102),用于计算出所述新版本软件中有效格式文件的特征值;
判断模块(103),用于判断所述新版本软件中有效格式文件的特征值是否与原版本软件中有效格式文件的特征值相匹配;
更新模块(104),用于所述新版本软件中有效格式文件的特征值与原版本软件中有效格式文件的特征值不匹配时,将所述新版本软件中特征值不同的有效格式文件筛选出来作为更新包,利用更新包对原版本软件进行更新。
本发明实施例适用于所有包含有通用对象文件格式文件的软件的更新,本发明实施例的软件更新方法有效地解决了在现有的软件更新过程中更新效率不高、更新时间长、更新过程繁琐的缺陷问题。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种软件更新方法,用于更新包含有通用对象文件格式文件的软件,其特征在于,所述方法包括:
对新版本软件中的通用对象文件格式的文件进行分析,获取有效格式文件;
计算出所述新版本软件中有效格式文件的特征值;
判断所述新版本软件中有效格式文件的特征值是否与原版本软件中有效格式文件的特征值相匹配;
所述新版本软件中有效格式文件的特征值与原版本软件中有效格式文件的特征值不匹配时,将所述新版本软件中特征值不同的有效格式文件筛选出来作为更新包,利用所述更新包对所述原版本软件进行更新;其中,所述新版本软件和原版本软件为同一软件的不同版本。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:根据所述有效格式文件的类型确定文件特征值算法,利用所述算法计算出所述有效格式文件的特征值,且每个所述有效格式文件对应唯一的特征值。
3.如权利要求1所述的方法,其特征在于,所述有效格式文件中包含有与文件更新属性相关的特征。
4.如权利要求1至3任一项所述的方法,其特征在于,所述通用对象文件格式为可移植可执行文件标准格式。
5.如权利要求4所述的方法,其特征在于,
对所述新版本软件中的通用对象文件格式的文件进行分析的方式包括头文件分析和/或段分析。
6.如权利要求5所述的方法,其特征在于,所述头文件分析中,数据目录表、区块的数量以及区块数据的大小特征所对应的文件为所述有效格式文件;所述段分析中,段名、实际被使用的区块大小、相应块在磁盘文件中所占的大小以及块属性特征所对应的文件为所述有效格式文件。
7.一种软件更新系统,用于更新包含有通用对象文件格式文件的软件,其特征在于,所述系统包括:
分析模块,用于对新版本软件中的通用对象文件格式的文件进行分析,获取有效格式文件;
计算模块,用于计算出所述新版本软件中有效格式文件的特征值;
判断模块,用于判断所述新版本软件中有效格式文件的特征值是否与原版本软件中有效格式文件的特征值相匹配;
更新模块,用于所述新版本软件中有效格式文件的特征值与原版本软件中有效格式文件的特征值不匹配时,将所述新版本软件中特征值不同的有效格式文件筛选出来作为更新包,利用所述更新包对所述原版本软件进行更新;其中,所述新版本软件和原版本软件为同一软件的不同版本。
8.如权利要求7所述的系统,其特征在于,所述分析模块所分析的通用对象文件格式为可移植可执行文件标准格式。
9.如权利要求8所述的系统,其特征在于,所述分析模块对所述新版本软件中的通用对象文件格式的文件进行分析的方式包括头文件分析和/或段分析。
10.如权利要求9所述的系统,其特征在于,所述分析模块进行头文件分析时,数据目录表、区块的数量以及区块数据的大小特征所对应的文件为所述有效格式文件;所述分析模块进行段分析时,段名、实际被使用的区块大小、相应块在磁盘文件中所占的大小以及块属性特征所对应的文件为所述有效格式文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410321645.5A CN104298517B (zh) | 2014-07-08 | 2014-07-08 | 一种软件更新方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410321645.5A CN104298517B (zh) | 2014-07-08 | 2014-07-08 | 一种软件更新方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104298517A true CN104298517A (zh) | 2015-01-21 |
CN104298517B CN104298517B (zh) | 2018-03-02 |
Family
ID=52318259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410321645.5A Active CN104298517B (zh) | 2014-07-08 | 2014-07-08 | 一种软件更新方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104298517B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105607927A (zh) * | 2015-12-18 | 2016-05-25 | 小米科技有限责任公司 | 页面显示方法及装置 |
CN109902272A (zh) * | 2019-01-28 | 2019-06-18 | 平安科技(深圳)有限公司 | 电子表格数据处理方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017435A (zh) * | 2006-04-14 | 2007-08-15 | 北京瑞星国际软件有限公司 | 一种用于软件升级的方法及装置 |
CN101102229A (zh) * | 2007-08-09 | 2008-01-09 | 中兴通讯股份有限公司 | 一种数字信号处理器升级方法及系统 |
CN101359293A (zh) * | 2008-09-04 | 2009-02-04 | 腾讯科技(深圳)有限公司 | 制作部分更新包的方法和装置 |
US20120254850A1 (en) * | 2011-03-31 | 2012-10-04 | International Business Machines Corporation | System for inspecting information processing unit to which software update is applied |
CN102724308A (zh) * | 2012-06-13 | 2012-10-10 | 腾讯科技(深圳)有限公司 | 软件更新方法及软件更新系统 |
-
2014
- 2014-07-08 CN CN201410321645.5A patent/CN104298517B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017435A (zh) * | 2006-04-14 | 2007-08-15 | 北京瑞星国际软件有限公司 | 一种用于软件升级的方法及装置 |
CN101102229A (zh) * | 2007-08-09 | 2008-01-09 | 中兴通讯股份有限公司 | 一种数字信号处理器升级方法及系统 |
CN101359293A (zh) * | 2008-09-04 | 2009-02-04 | 腾讯科技(深圳)有限公司 | 制作部分更新包的方法和装置 |
US20120254850A1 (en) * | 2011-03-31 | 2012-10-04 | International Business Machines Corporation | System for inspecting information processing unit to which software update is applied |
CN102724308A (zh) * | 2012-06-13 | 2012-10-10 | 腾讯科技(深圳)有限公司 | 软件更新方法及软件更新系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105607927A (zh) * | 2015-12-18 | 2016-05-25 | 小米科技有限责任公司 | 页面显示方法及装置 |
CN109902272A (zh) * | 2019-01-28 | 2019-06-18 | 平安科技(深圳)有限公司 | 电子表格数据处理方法、装置、计算机设备和存储介质 |
CN109902272B (zh) * | 2019-01-28 | 2024-02-06 | 平安科技(深圳)有限公司 | 电子表格数据处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104298517B (zh) | 2018-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106775723B (zh) | 基于Android平台的系统固件定制的方法和Android设备 | |
CN102609328B (zh) | 系统差分升级方法和装置、移动终端 | |
US11327744B2 (en) | Equivalency of revisions on modern version control systems | |
CN101697131B (zh) | 一种可重定位文件动态加载的方法及装置 | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
CN111176717B (zh) | 生成安装包的方法、装置及电子设备 | |
CN107506219A (zh) | 一种基于Android系统的通用版本升级方法 | |
KR20200146006A (ko) | 애플리케이션 업그레이드 방법, 장치, 기기 및 저장 매체 | |
US10592220B2 (en) | Metadata-driven binding of converted source code to original source code | |
CN103984582A (zh) | 一种热更新方法和装置 | |
CN106843842B (zh) | 一种应用程序配置文件的更新方法及装置 | |
CN108595187A (zh) | 安卓安装包集成软件开发工具包的法、装置及存储介质 | |
EP3198452B1 (en) | On-demand loading of dynamic scripting language code for reduced memory usage | |
CN104714788A (zh) | 一种软件安装包自动生成的方法及装置 | |
CN103412754A (zh) | 动态语言代码执行方法和装置 | |
CN109947432B (zh) | 汇编程序处理方法及相关装置 | |
US20180052667A1 (en) | Emulation device, emulation method, and recording medium storing emulation program | |
CN110333872A (zh) | 一种应用的处理方法、装置、设备和介质 | |
CN103853587A (zh) | 一种基于cramfs和jffs2的烧写flash的方法 | |
CN104298517A (zh) | 一种软件更新方法及系统 | |
CN109933410A (zh) | 一种基于虚拟化技术的虚拟指令下发方法及系统 | |
CN111142877B (zh) | Rom芯片补丁的接口函数及参数类型自动化提取方法、系统及存储介质 | |
CN106484375B (zh) | 一种指令块加载方法、软交换设备及系统 | |
CN103778114B (zh) | 文件修复系统和方法 | |
CN107402885A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |