CN108804130A - 程序安装包生成方法及装置 - Google Patents

程序安装包生成方法及装置 Download PDF

Info

Publication number
CN108804130A
CN108804130A CN201710305417.2A CN201710305417A CN108804130A CN 108804130 A CN108804130 A CN 108804130A CN 201710305417 A CN201710305417 A CN 201710305417A CN 108804130 A CN108804130 A CN 108804130A
Authority
CN
China
Prior art keywords
file
differential
installation kit
differential file
merging
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
Application number
CN201710305417.2A
Other languages
English (en)
Other versions
CN108804130B (zh
Inventor
徐文平
杨仲夫
余光镇
曹飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710305417.2A priority Critical patent/CN108804130B/zh
Publication of CN108804130A publication Critical patent/CN108804130A/zh
Application granted granted Critical
Publication of CN108804130B publication Critical patent/CN108804130B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明是关于一种程序安装包生成方法及装置。该方法包括:服务器在生成更新数据包时,先将差异文件进行合并,并对合并获得的第一合并文件进行差分计算获得差分文件,生成包含差分文件的更新数据包;终端根据差分数据包中包含的差分文件,以及终端中预存的旧版本的安装包进行逆差分计算,获得第一合并文件,根据第一合并文件生成新版本的安装包;即终端在生成新版本的数据包时,只需要对差分文件进行一次逆差分计算既可以获得各个差异文件,不需要对每一个差异文件分别逆差分计算,能够减少终端逆差分计算的次数,从而减少终端侧生成新版本的安装包的时间,提高终端侧对应用程序进行更新的效率。

Description

程序安装包生成方法及装置
技术领域
本发明涉及网络应用技术领域,特别涉及一种程序安装包生成方法及装置。
背景技术
随着计算机和网络应用技术的不断发展,以及智能手机等智能设备的不断普及,越来越多的应用程序正在不断丰富着人们的网络生活。
应用程序的提供商通常会定期对应用程序进行更新改进,以便向用户提供更好的使用体验,其中,增量更新是一种常用的生成应用程序的新版本的安装包的算法。具体的,对应用程序提供更新服务的服务器接收到某个应用程序的新版本的安装包后,将该新版本的安装包与旧版本的安装包进行比对,确定新版本的安装包中的差异文件,并对每一个差异文件与其在旧版本的安装包中的对应文件进行差分计算,获得该差异文件对应的差分数据,并对各个差异文件的差分数据分别进行压缩后生成更新数据包并发送给终端;终端接收到更新数据包后,根据更新数据包中每个差异文件对应的差分数据,并根据旧版本的安装包以及差分数据进行逆差分计算获得差异文件,并根据差异文件还原生成新版本的安装包。
在相关技术中,由于服务器需要对每个差异文件都进行一次差分计算,相应的,客户端也需要对每个差异文件都进行一次逆差分计算,当差异文件数量较多时,客户端还原新版本安装包的过程需要消耗较多的处理资源和处理时间,更新效率较低。
发明内容
为了解决现有技术中服务器需要对每个差异文件都进行一次差分计算,相应的,客户端也需要对每个差异文件都进行一次逆差分计算,客户端还原新版本安装包的过程需要消耗较多的时间,影响更新效率的问题,本发明实施例提供了一种程序安装包生成方法及装置,技术方案如下:
第一方面,提供了一种程序安装包生成方法,所述方法包括:
服务器获取应用程序的旧版本的安装包和新版本的安装包;
所述服务器提取所述新版本的安装包中的差异文件,所述差异文件是在所述旧版本的安装包中存在对应文件,且与所述对应文件之间存在部分数据差异的至少两个文件;
所述服务器将所述差异文件进行合并,获得第一合并文件;
所述服务器对所述第一合并文件进行差分计算,获得差分文件,所述差分文件用于指示所述差异文件与各自的所述对应文件之间的数据差异;
所述服务器生成包含所述差分文件的更新数据包;
所述服务器将所述更新数据包发送给终端;
所述终端根据所述差分数据包中包含的所述差分文件,以及所述终端中预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件;
所述终端根据所述第一合并文件生成所述新版本的安装包。
第二方面,提供了一种程序安装包生成方法,所述方法包括:
接收服务器发送的,应用程序的更新数据包,所述更新数据包中包含差分文件;所述差分文件是所述服务器将所述应用程序的新版本的安装包中包含的差异文件进行合并获得第一合并文件,并对所述第一合并文件进行差分计算所获得的文件;所述差异文件是在所述应用程序的旧版本的安装包中存在对应文件,且与所述对应文件之间存在部分数据差异的至少两个文件;所述差分文件用于指示所述差异文件与各自的所述对应文件之间的数据差异;
根据所述差分数据包中包含的所述差分文件,以及预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件;
根据所述第一合并文件生成所述新版本的安装包。
第三方面,提供了一种程序安装包生成方法,所述方法包括:
获取应用程序的旧版本的安装包和新版本的安装包;
提取所述新版本的安装包中的差异文件,所述差异文件是在所述旧版本的安装包中存在对应文件,且与所述对应文件之间存在部分数据差异的至少两个文件;
将所述差异文件进行合并,获得第一合并文件;
对所述第一合并文件进行差分计算,获得差分文件,所述差分文件用于指示所述差异文件与各自的所述对应文件之间的数据差异;
生成包含所述差分文件的更新数据包;
将所述更新数据包发送给终端,以便所述终端根据所述差分数据包中包含的所述差分文件,以及所述终端中预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件,并根据所述第一合并文件生成所述新版本的安装包。
本发明实施例提供的技术方案可以包括以下有益效果:
服务器在生成更新数据包时,先将各个差异文件进行合并,并对合并获得的第一合并文件进行差分计算,不需要对每一个差分文件分别进行差分计算;而终端在生成新版本的数据包时,也只需要对差分文件进行一次逆差分计算既可以获得各个差异文件,不需要对每一个差异文件分别逆差分计算;即本发明实施例所示的方案能够减少终端逆差分计算的次数,从而减少终端侧生成新版本的安装包的时间,提高终端侧对应用程序进行更新的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种程序安装包生成系统的结构示意图;
图2是根据一示例性实施例示出的一种程序安装包生成方法的流程图;
图3是图2所示实施例涉及的一种新旧版本的安装包对比示意图;
图4是图2所示实施例涉及的一种差异文件合并示意图;
图5是图2所示实施例涉及的另一种差异文件合并示意图;
图6是图2所示实施例涉及的一种更新数据包结构示意图;
图7是图2所示实施例涉及的终端生成新版本的安装包的流程示意图;
图8是根据一示例性实施例示出的一种程序安装包生成装置的结构方框图;
图9是根据一示例性实施例示出的一种程序安装包生成装置的结构方框图;
图10是根据一示例性实施例示出的一种终端的结构示意图;
图11是根据一示例性实施例示出的一种服务器的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是本发明一示例性实施例示出的一种程序安装包生成系统的结构示意图。该系统包括:若干个终端120和服务器集群140。
终端120可以是手机、平板电脑、电子书阅读器、MP3播放器(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPicture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
终端120与服务器集群140之间通过通信网络相连。可选的,通信网络是有线网络或无线网络。
服务器集群140是一台服务器,或者由若干台服务器,或者是一个虚拟化平台,或者是一个云计算服务中心。可选的,服务器集群140可以包括用于实现更新数据包管理平台142的服务器,可选的,服务器集群140还包括用于实现安装包管理平台144的服务器。可选的,服务器集群140还包括用于实现应用程序更新管理平台146的服务器。
可选的,更新数据包管理平台142用于实现应用程序的更新数据包的生成和存储。
其中,更新数据包是应用程序的旧版本的安装包通过增量更新方式更新为新版本的安装包时使用的数据包。
可选的,安装包管理平台144用于存储和维护应用程序的各个版本的安装包。
可选的,应用程序更新管理平台146用于向终端提供应用程序的更新数据包。
需要说明的是,上述用于实现更新数据包管理平台142、安装包管理平台144以及应用程序更新管理平台146的服务器可以是相互之间独立的服务器;或者,上述更新数据包管理平台142、安装包管理平台144以及应用程序更新管理平台146中的两个平台可以实现在同一个服务器中,而另外一个平台可以实现在另一个服务器中;或者,用户实现上述三个平台的服务器也可以是同一个服务器。当上述三个平台实现在两个或者三个服务器中时,这两个或者三个服务器之间通过通信网络相连。
可选的,该系统还可以包括管理设备160,该管理设备160与服务器集群140之间通过通信网络相连。可选的,通信网络是有线网络或无线网络。
可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(Extensible MarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Trassport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet ProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
在本发明实施例中,服务器在生成更新数据包时,可以获取应用程序的旧版本的安装包和新版本的安装包,并提取新版本的安装包中的差异文件,差异文件是在旧版本的安装包中存在对应文件,且与对应文件之间存在部分数据差异的至少两个文件;在提取到差异文件后,服务器将差异文件进行合并,获得第一合并文件,并对第一合并文件进行差分计算,获得差分文件,该差分文件用于指示差异文件与各自的对应文件之间的数据差异;之后,服务器生成包含该差分文件的更新数据包。
相应的,服务器将更新数据包发送给终端后,终端根据差分数据包中包含的差分文件,以及终端中预存的旧版本的安装包进行逆差分计算,获得第一合并文件,并根据第一合并文件生成新版本的安装包。
在本发明实施例中,服务器在生成更新数据包时,先将差异文件进行合并,并对合并获得的第一合并文件进行差分计算,不需要对每一个差异文件分别进行差分计算;而终端在生成新版本的数据包时,也只需要对差分文件进行一次逆差分计算既可以获得各个差异文件,不需要对每一个差异文件分别逆差分计算;即本发明实施例所示的方案能够减少终端逆差分计算的次数,从而减少终端侧生成新版本的安装包的时间,提高终端侧对应用程序进行更新的效率。
图2是根据一示例性实施例示出的一种程序安装包生成方法的流程图,以应用于如图1所示的系统为例,该程序安装包生成方法可以包括如下几个步骤:
步骤201,服务器获取应用程序的旧版本的安装包和新版本的安装包。
其中,该服务器可以是图1所示系统中的服务器集群140的全部或者部分。
应用程序的提供商在推出应用程序的新版本时,开发人员可以将该应用程序的新版本的安装包打包上传至服务器,或者,服务器也可以从其它设备中获取该新版本的安装包。
服务器在获取到应用程序的新版本的安装包后,还同时获取该应用程序的旧版本的安装包。
其中,相对于一个应用程序的最新版本来说,可能存在该应用程序的多个旧版本。在本发明实施例中,服务器每次获得应用程序的最高版本的安装包后,可以获取该应用程序低于该最高版本的其它各个版本的安装包,并将该最高版本的安装包作为新版本的安装包,将其它各个版本的安装包分别作为旧版本的安装包并执行后续步骤。
比如,假设服务器新获取到某个应用程序的最高版本的安装包A,并且,服务器中还存储有该应用程序的其它各个较低版本的安装包(比如,分别为安装包B、安装包C和安装包D),此时,新版本的安装包和旧版本的安装包可以有以下表1所示的三种组合情况:
表1
如表1所示,上述三种组合中,新版本的安装包都是安装包A,而旧版本的安装包为安装包B、安装包C或者安装包D。服务器对于上述每一种组合分别执行后续步骤。
步骤202,提取新版本的安装包中的差异文件,差异文件是在旧版本的安装包中存在对应文件,且与对应文件之间存在部分数据差异的至少两个文件。
服务器可以将该应用程序的新版本的安装包和旧版本的安装包进行比对,获得该新版本的安装包中的差异文件。
应用程序的开发人员在开发应用程序的新版本后,通常不会更改应用程序中的所有内容,因此,在应用程序的新版本的安装包中的,通常只有部分的文件与旧版本的安装包中的文件不一致,这些不一致的文件中有些是旧版本的安装包中不存在,而新版本的安装包中新增的文件,也有一些是旧版本的安装包中存在,但是具体数据存在差别的文件,本发明实施例中,可以将这些旧版本的安装包中存在,且具体数据存在差别的文件称为差异文件。
可选的,新版本的安装包中的差异文件和该差异文件在旧版本的安装包中的对应文件可以是文件标识(比如文件名)相同的文件。即差异文件满足两点要求:1、在旧版本的安装包中存在文件名一致的文件;2、差异文件的具体数据与旧版本的安装包中存在的文件名一致的文件的具体数据不完全相同。服务器在提取新版本的安装包中的差异文件,可以首先确定新版本的安装包和旧版本的安装包中包含的文件名一致的文件,再将新版本的安装包和旧版本的安装包分别包含的文件名一致的文件进行比对,以确定出具体数据不完全相同的差异文件。
比如,请参考图3,其示出了本发明实施例涉及的一种新旧版本的安装包对比示意图。在图3中,旧版本安装包中包含A、B、C、D和E五个文件,而新版本安装包中包含A’、B、D’、E’和F这五个文件,其中,文件A’与文件A的文件名相同,且各自包含的具体数据不完全相同,类似的,D’与D的文件名相同,且各自包含的具体数据不完全相同,E’与E的文件名相同,且各自包含的具体数据不完全相同,因此,A’、D’和E’为差异文件。图3中,F是旧版本安装包中不存在的文件,即新增的文件,而旧版本安装包中的文件C在新版本安装包中被移除。
步骤203,服务器将差异文件进行合并,获得第一合并文件。
可选的,服务器将该各个差异文件首尾相连,获得该第一合并文件。
可选的,服务器在对各个差异文件进行合并时,先获取各个差异文件的合并顺序,再按照合并顺序将各个差异文件首尾相连进行合并。
其中,上述差异文件的合并顺序可以是默认顺序,比如,可以是差异文件在新版本的安装包中的排列顺序,或者,也可以是差异文件在新版本的安装包中的排列顺序的倒序等等。
具体的,请参考图4,其示出了本发明实施例涉及的一种差异文件合并示意图。其中,以差异文件为A’、D’和E’,默认的合并顺序是差异文件在新版本的安装包中的排列顺序(即合并顺序为A’、D’、E’)为例,服务器将独立的文件A’、D’和E’合并为一个文件A’D’E’。
或者,上述差异文件的合并顺序也可以是由服务器通过计算确定的合并顺序。比如,服务器按照某个预定的原则(比如,差分效果最优化原则)来计算确定差异文件的合并顺序。
具体的,请参考图5,其示出了本发明实施例涉及的另一种差异文件合并示意图。以差异文件为A’、D’和E’,服务器确定的合并顺序为D’、E’和A’为例,服务器对独立的文件A’、D’和E’进行合并时,获得的合并文件为文件D’E’A’。
步骤204,服务器对第一合并文件进行差分计算,获得差分文件,该差分文件用于指示差异文件与各自的对应文件之间的数据差异。
其中,服务器可以按照预定的差分算法对合并后的差异文件进行差分计算,以获得差分文件。
比如,该预定的差分算法可以是Bsdiff算法,或者,服务器也可以使用其它的差分算法,本发明实施例不对服务器使用的差分算法进行限定。
其中,服务器对第一合并文件进行差分计算时,需要结合差异文件在旧版本的安装包中的对应文件进行差分计算。具体的,服务器可以获取该差异文件各自在旧版本的安装包中的对应文件,并按照该差异文件的合并顺序,对该差异文件各自在旧版本的安装包中的对应文件进行合并,获得第二合并文件,根据该第一合并文件和第二合并文件进行差分计算,获得差分文件。
比如,以差异文件为A’、D’和E’,合并顺序是差异文件在新版本的安装包中的排列顺序为例,服务器将旧版本的安装包中的文件A、D和E合并为文件ADE,并根据文件A’D’E’和文件ADE进行差分计算,获得差异文件。
步骤205,服务器生成包含差分文件的更新数据包。
在本发明实施例中,更新数据包中除了包含上述差异文件之外,还可以包含其它指示终端生成完成的新版本的安装包的数据或信息,比如,该更新数据包中还包含校验信息、版本信息、新版本的安装包中的各个文件的排列顺序以及新版本的安装包中的各个文件的组成方法等等;当新版本的安装包中还包含新增的文件(比如上述文件F)时,该更新数据包还可以包含该新增的文件。
可选的,该更新数据包中包含差异文件合并为第一合并文件时的合并顺序,以及差异文件各自的文件长度。
比如,请参考图6,其示出了本发明实施例涉及的一种更新数据包结构示意图。以服务器按照Bsdiff差分算法对第一合并文件进行合并计算为例,在图6中,更新数据包包括以下几个部分:
1)包头:更新数据包头部信息,也可以称为PFH(Patch File Head,补丁文件头),主要包含校验信息以及版本信息(比如新旧版本号等)。
具体比如,以BSdiff差分算法为例,该包头中包含的信息以及取值说明可以参考表2。
表2
2)对应文件记录:也可以称为Bsdiff-record,主要用于指示差异文件各自在旧版本的安装包中的对应文件,比如,可以指示差异文件各自的对应文件在旧版本的安装包中起始位置和文件长度。具体的,在图6中,该对应文件记录中第一段数据是对应文件的数量,后续紧接着各个对应文件的偏移量(Offset)和文件长度(Length)。其中,在图6中,偏移量1指示第一个对应文件在旧版本的安装包中的偏移量,文件长度1指示第一个对应文件的文件长度。
具体比如,以BSdiff差分算法为例,该对应文件记录中包含的信息以及取值说明可以参考表3。
表3
3)差分文件:也可以称为Bsdiff-body,即上述差分计算获得的差分文件。
具体比如,以BSdiff差分算法为例,该差分文件中包含的信息以及取值说明可以参考表4。
表4
4)合成指示文件:也可以称为Files,主要记录了新版本的安装包中的各个文件,以及各个文件的合成方式。其中,新版本的安装包中的文件可以分为目录、新版本安装包中新增的文件、旧版本安装包中包含的文件以及差异文件等,其中,当新版本的安装包中包含新增的文件时,该新增的文件的数据也可以保存在合成指示文件中。比如,如图6所示,当文件为目录时,合成方式为:文件头(即图6中的FH)+补充数据(即图6中的DD,可以为空);当文件为新版本的安装包中新增的文件时,合成方式为:文件头+补充数据(可以为空)+新增的文件的数据(即图6中的FD);当文件为旧版本的安装包中新增的文件时,合成方式为:文件头+补充数据(可以为空)+按照偏移量(即图6中的offset)和文件长度(即图6中的length)从旧版本的安装包中提取出的数据;当文件为差异文件时,合成方式为:文件头+补充数据(可以为空)+差异文件的数据。
具体比如,以BSdiff差分算法为例,该合成指示文件中包含的信息以及取值说明可以参考表5。
表5
5)压缩的目录源数据:也称为CDFH(Central directory file header,中央目录文件头)list,表示新包中的压缩源文件目录区。
具体比如,以BSdiff差分算法为例,该压缩的目录源数据中包含的信息以及取值说明可以参考表6。
表6
6)目录结束标识结构:也称为EOCD(End of central directory record,中央目录记录结束结构)。表示新版本的安装包中的目录结束标识结构。
可选的,该更新数据包中还包括差异文件合并为所述第一合并文件时的合并顺序,以及所述差异文件各自的文件长度。
其中,上述合成指示文件所指示的各个文件的合成方式中,各个文件的指示顺序为各个文件在新版本的安装包中的排列顺序。当该差异文件合并为所述第一合并文件时的合并顺序为默认顺序时,该差异文件合并为所述第一合并文件时的合并顺序由上述合成指示文件中的各个文件的顺序来指示。比如,当该默认顺序是差异文件在新版本的安装包中的顺序时,该默认顺序就是合成指示文件所指示的差异文件的顺序。
当该差异文件合并为所述第一合并文件时的合并顺序为服务器通过计算确定的顺序时,该更新数据包中可以新增一个字段来指示该合并顺序,比如,可以在上述差分文件中增加一个字段来指示该合并顺序。
上述差异文件各自的文件长度也可以通过更新数据包中新增的字段来指示。比如,可以在上述差分文件中增加至少两个字段来指示上述差异文件各自的文件长度。
步骤206,服务器将更新数据包发送给终端,终端接收该更新数据包。
当终端中安装的该应用程序的版本为上述旧版本时,服务器可以将该更新数据包发送给终端。
比如,应用程序启动时,向服务器查询应用程序的最新版本号,若应用程序的最新版本号高于终端中安装的应用程序的当前版本号,则终端向服务器请求更新数据包,该请求中可以包含终端中安装的应用程序的当前版本号,服务器根据该应用程序的当前版本号确定以该当前版本号的安装包为旧版本的安装包的更新数据包,并将更新数据包发送给终端。
或者,服务器也可以获取终端中安装的应用程序的当前版本号,若应用程序的最新版本号高于终端中安装的应用程序的当前版本号,则服务器可以主动向终端推送更新数据包。
可选的,服务器生成的差分文件可以是压缩后的文件,比如,当服务器按照Bsdiff算法进行差分计算时,可以对差分计算获得的未压缩的计算结果进行压缩,获得差分文件。
其中,由于本发明实施例中服务器对差异文件合并后进行差分并压缩,相比于对每个差异文件分别进行差分并压缩的方式,本发明实施例中待压缩的数据更多,冗余数据也更多,因此压缩后的数据量更少,压缩效果更好,相应的,后续生成的更新数据包所包含的数据量也更小,在向终端发送更新数据包时,能够节约终端的传输资源,并且减少传输时间,进一步提高更新效率。
步骤207,终端根据差分数据包中包含的差分文件,以及终端中预存的旧版本的安装包进行逆差分计算,获得第一合并文件。
其中,终端可以按照与上述步骤204中的差分算法相对应的逆差分算法对差分文件进行逆差分计算。比如,当上述差分算法为Bsdiff算法时,终端可以按照bspatch算法进行逆差分计算。
可选的,终端可以从旧版本的安装包中提取差异文件各自的对应文件,将差异文件各自的对应文件进行合并,获得第二合并文件,并根据差分文件以及第二合并文件进行逆差分计算,获得第一合并文件。
其中,在从旧版本的安装包中提取差异文件各自的对应文件时,终端可以提取差分数据包中包含的,差异文件各自的对应文件在旧版本的安装包中的起始位置和文件长度,并根据差异文件各自的对应文件的起始位置和文件长度,从旧版本的安装包中提取差异文件各自的对应文件。
比如,终端可以从图6所示的对应文件记录中提取差异文件各自的对应文件的偏移量和文件长度,并按照差异文件各自的对应文件的偏移量和文件长度,从旧版本的安装包中提取差异文件各自的对应文件。
其中,在将差异文件各自的对应文件进行合并,终端可以按照差异文件合并为第一合并文件时的合并顺序,将差异文件各自的对应文件进行合并,获得第二合并文件。
当差异文件合并为第一合并文件时的合并顺序为默认顺序时,终端可以按照该默认顺序将差异文件各自的对应文件进行合并。此时,更新数据包中可以不设置额外的字段来指示该差异文件合并为第一合并文件时的合并顺序。
比如,以差异文件合并为第一合并文件时的合并顺序为差异文件在新版本的安装包中的排列顺序为例,假设差异文件为A’、D’和E’,终端可以从旧版本的安装包中获取文件A、D和E,并对文件A、D和E进行合并,获得文件ADE,并按照BsPatch算法对文件ADE以及差分文件进行处理,获得合并后的差异文件A’D’E’。
或者,当该差异文件合并为第一合并文件时的合并顺序为服务器通过计算确定的顺序时,终端可以从更新数据包中提取该差异文件合并为第一合并文件时的合并顺序,并按照提取到的合并顺序,对该差异文件各自的对应文件进行合并。
比如,假设差异文件为A’、D’和E’,更新数据包中包含的差异文件的合并顺序为D’、E’、A’,则终端按照文件D、E、A的顺序进行合并,获得第二合并文件DEA。
步骤208,终端根据第一合并文件生成新版本的安装包。
可选的,终端从差分数据包中提取差异文件合并为第一合并文件时的合并顺序,以及差异文件各自的文件长度,根据合并顺序以及差异文件各自的文件长度,将第一合并文件分解为差异文件,并根据差异文件生成新版本的安装包。
请参考图7,其实出本发明实施例涉及的终端生成新版本的安装包的流程示意图。结合图6所示的更新数据包,如图7所示,终端生成新版本的安装包的流程如下:
1、终端获取更新数据包和旧版本的安装包。
2、终端解析旧版本的安装包和更新数据包的包头。
3、终端校验更新数据包和旧版本的安装包是否匹配,若是,进入步骤4和步骤5,否则,步骤结束。
4、终端解析更新数据包中的对应文件记录,从旧版本的安装包中依次解压获得差异文件各自的对应文件,并将差异文件各自的对应文件合并,获得第二合并文件。
5、终端从更新数据包中读取差分文件。
6、终端按照BsPatch算法对差分文件和第二合并文件进行逆差分处理,获得第一合并文件,并将第一合并文件分解为差异文件。
7、遍历更新数据包中合成指示文件所指示的各个文件的合并方式。
8、当遍历到的文件为目录时,终端将目录的文件头(可选的,还可能包含补充数据)写入合成文件。
9、当遍历到的文件为新增的文件时,终端将合成指示文件中包含的该新增的文件的数据、文件头(可选的,还可能包含补充数据)写入合成文件。
10、当遍历到的文件为旧版本的安装包中包含的文件时,终端将合成指示文件中包含的该文件的文件头(可选的,还可能包含补充数据)以及从旧版本的安装包提取到的该文件的数据写入合成文件。
11、当遍历到的文件为差异文件时,终端按照更新数据包中包含的压缩级别,对该差异文件进行压缩后,连同该差异文件的文件头(可选的,还可能包含补充数据)写入合成文件。
12、当所有文件遍历完成后,将更新数据包中的压缩的目录源数据(CDFH)以及目录结束标识结构(EOCD)写入合成文件的尾部。
13、终端将合成文件输出为新版本的安装包。
步骤209,终端根据新版本的安装包安装新版本的应用程序。
综上所述,本发明实施例所示的方法,服务器对新版本安装包进行差分算法计算时,先将各个差异文件合并成第一合并文件,并对合并后的第一合并文件进行差分计算,同样的,终端也只需要进行一次逆差分计算,即可以获得各个差异文件,即本发明实施例所示的方法能够减少终端逆差分计算的次数,从而减少终端侧生成新版本的安装包的时间,提高终端侧对应用程序进行更新的效率。
此外,本发明实施例所示的方法,由于对差异文件进行合并差分并压缩,压缩的文件冗余度更高,从而使得压缩效果更好,生成的更新数据包的数据量更小,从而减少数据包传输的时间,进一步提高更新效率,并降低网络资源占用量。
图8是根据一示例性实施例示出的一种程序安装包生成装置的结构方框图。该程序安装包生成装置可以用于图1所示系统中的终端120中,以执行图2所示实施例中由终端执行的全部或者部分步骤。该程序安装包生成装置可以包括:
数据包接收模块801,用于接收服务器发送的,应用程序的更新数据包,所述更新数据包中包含差分文件;所述差分文件是所述服务器将所述应用程序的新版本的安装包中包含的差异文件进行合并获得第一合并文件,并对所述第一合并文件进行差分计算所获得的文件;所述差异文件是在所述应用程序的旧版本的安装包中存在对应文件,且与所述对应文件之间存在部分数据差异的至少两个文件;所述差分文件用于指示所述差异文件与各自的所述对应文件之间的数据差异;
逆差分模块802,用于根据所述差分数据包中包含的所述差分文件,以及预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件;
安装包生成模块803,用于根据所述第一合并文件生成所述新版本的安装包。
可选的,所述逆差分模块802,包括:
第一提取单元,用于从所述旧版本的安装包中提取所述差异文件各自的所述对应文件;
合并单元,用于将所述差异文件各自的所述对应文件进行合并,获得第二合并文件;
计算单元,用于根据所述差分数据包以及所述第二合并文件进行逆差分计算,获得所述第一合并文件。
可选的,所述合并单元,用于按照所述差异文件合并为所述第一合并文件时的合并顺序,将所述差异文件各自的所述对应文件进行合并,获得所述第二合并文件。
可选的,所述第一提取单元,包括:
第一提取子单元,用于提取所述差分数据包中包含的,所述差异文件各自的所述对应文件在所述旧版本的安装包中的起始位置和文件长度;
第二提取子单元,用于根据所述差异文件各自的所述对应文件的起始位置和文件长度,从所述旧版本的安装包中提取所述差异文件各自的所述对应文件。
可选的,所述第一合并文件由所述差异文件首尾相连组成,所述安装包生成模块803,包括:
第二提取单元,用于从所述差分数据包中提取所述差异文件各自的文件长度;
分解单元,用于根据所述差异文件合并为所述第一合并文件时的合并顺序以及所述差异文件各自的文件长度,将所述第一合并文件分解为所述差异文件;
生成单元,用于根据所述差异文件生成所述新版本的安装包。
综上所述,本发明实施例所示的装置,终端只需要进行一次逆差分计算,即可以获得各个差异文件,即本发明实施例所示的方法能够减少终端逆差分计算的次数,从而减少终端侧生成新版本的安装包的时间,提高终端侧对应用程序进行更新的效率。
图9是根据一示例性实施例示出的一种程序安装包生成装置的结构方框图。该程序安装包生成装置可以用于图1所示系统中的服务器集群140中,以执行图2所示实施例中由服务器执行的全部或者部分步骤。该程序安装包生成装置可以包括:
安装包获取模块901,用于获取应用程序的旧版本的安装包和新版本的安装包;
差异文件提取模块902,用于提取所述新版本的安装包中的差异文件,所述差异文件是在所述旧版本的安装包中存在对应文件,且与所述对应文件之间存在部分数据差异的至少两个文件;
合并模块903,用于将所述差异文件进行合并,获得第一合并文件;
差分计算模块904,用于对所述第一合并文件进行差分计算,获得差分文件,所述差分文件用于指示所述差异文件与各自的所述对应文件之间的数据差异;
数据包生成模块905,用于生成包含所述差分文件的更新数据包;
数据包发送模块906,用于将所述更新数据包发送给终端,以便所述终端根据所述差分数据包中包含的所述差分文件,以及所述终端中预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件,并根据所述第一合并文件生成所述新版本的安装包。
可选的,所述更新数据包中包含所述差异文件合并为所述第一合并文件时的合并顺序,以及所述差异文件各自的文件长度。
综上所述,本发明实施例所示的装置,服务器对新版本安装包进行差分算法计算时,先将各个差异文件合并成第一合并文件,并对第一合并文件进行差分计算,同样的,终端也只需要进行一次逆差分计算,即可以获得各个差异文件,即本发明实施例所示的方法能够减少终端逆差分计算的次数,从而减少终端侧生成新版本的安装包的时间,提高终端侧对应用程序进行更新的效率。
此外,本发明实施例所示的装置,由于对各个差异文件进行合并差分并压缩,压缩的文件冗余度更高,从而使得压缩效果更好,生成的更新数据包的数据量更小,从而减少数据包传输的时间,进一步提高更新效率,并降低网络资源占用量。
图10是根据一示例性实施例示出的一种终端1000的结构示意图。本发明实施例中的终端1000可以包括一个或多个如下组成部分:用于执行计算机程序指令以完成各种流程和方法的处理器,用于信息和存储程序指令随机接入存储器(RAM)和只读存储器(ROM),用于存储数据和信息的存储器,I/O设备,界面,天线等。具体来讲:
终端1000可以包括RF(Radio Frequency,射频)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、WiFi(wireless fidelity,无线保真)模块1070、处理器1080、电源1082、摄像头1090等部件。本领域技术人员可以理解,图10中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图10对终端1000的各个构成部件进行具体的介绍:
RF电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1080处理;另外,将设计上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路1010还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobilecommunication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband CodeDivision Multiple Access,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器1020可用于存储软件程序以及模块,处理器1080通过运行存储在存储器1020的软件程序以及模块,从而执行终端1000的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1000的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1030可用于接收输入的数字或字符信息,以及产生与终端1000的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1080,并能接收处理器1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及终端1000的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用LCD(Liquid CrystalDisplay,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给处理器1080以确定触摸事件的类型,随后处理器1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图10中,触控面板1031与显示面板1041是作为两个独立的部件来实现终端1000的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现终端1000的输入和输出功能。
终端1000还可包括至少一种传感器1050,比如陀螺仪传感器、磁感应传感器、光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在终端1000移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端1000还可配置的气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1060、扬声器1081,传声器1062可提供用户与终端1000之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出处理器1080处理后,经RF电路1010以发送给比如另一终端,或者将音频数据输出至存储器1020以便进一步处理。
WiFi属于短距离无线传输技术,终端1000通过WiFi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图10示出了WiFi模块1070,但是可以理解的是,其并不属于终端1000的必须构成,完全可以根据需要在不改变公开的本质的范围内而省略。
处理器1080是终端1000的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行终端1000的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器1080可包括一个或多个处理单元;优选的,处理器1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1080中。
终端1000还包括给各个部件供电的电源1082(比如电池),优选的,电源可以通过电源管理系统与处理器1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
摄像头1090一般由镜头、图像传感器、接口、数字信号处理器、CPU、显示屏幕等组成。其中,镜头固定在图像传感器的上方,可以通过手动调节镜头来改变聚焦;图像传感器相当于传统相机的“胶卷”,是摄像头采集图像的心脏;接口用于把摄像头利用排线、板对板连接器、弹簧式连接方式与终端主板连接,将采集的图像发送给所述存储器1020;数字信号处理器通过数学运算对采集的图像进行处理,将采集的模拟图像转换为数字图像并通过接口发送给存储器1020。
尽管未示出,终端1000还可以包括蓝牙模块等,在此不再赘述。
终端1000除了包括一个或者多个处理器1080,还包括有存储器,以及一个或者多个模块,其中一个或者多个模块存储于存储器中,并被配置成由一个或者多个处理器执行,以实现上述图2所示方法中由终端执行的全部或者部分步骤。
图11是根据一示例性实施例示出的一种服务器的结构示意图。所述服务器1100包括中央处理单元(CPU)1101、包括随机存取存储器(RAM)1102和只读存储器(ROM)1103的系统存储器1104,以及连接系统存储器1104和中央处理单元1101的系统总线1105。所述服务器1100还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1106,和用于存储操作系统1113、应用程序1114和其他程序模块1115的大容量存储设备1107。
所述基本输入/输出系统1106包括有用于显示信息的显示器1108和用于用户输入信息的诸如鼠标、键盘之类的输入设备1109。其中所述显示器1108和输入设备1109都通过连接到系统总线1105的输入输出控制器1110连接到中央处理单元1101。所述基本输入/输出系统1106还可以包括输入输出控制器1110以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1110还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1107通过连接到系统总线1105的大容量存储控制器(未示出)连接到中央处理单元1101。所述大容量存储设备1107及其相关联的计算机可读介质为服务器1100提供非易失性存储。也就是说,所述大容量存储设备1107可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1104和大容量存储设备1107可以统称为存储器。
根据本发明的各种实施例,所述服务器1100还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1100可以通过连接在所述系统总线1105上的网络接口单元1111连接到网络1112,或者说,也可以使用网络接口单元1111来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理器1101通过执行该一个或一个以上程序来实现图2所示方法中由服务器执行的全部或者部分步骤。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由终端的处理器执行以完成本发明图2所示方法中由终端执行的全部或者部分步骤,或者,上述指令可由服务器的处理器执行以完成本发明图2所示方法中由服务器执行的全部或者部分步骤。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (15)

1.一种程序安装包生成方法,其特征在于,所述方法包括:
接收服务器发送的应用程序的更新数据包,所述更新数据包中包含差分文件;所述差分文件是所述服务器将所述应用程序的新版本的安装包中包含的差异文件进行合并获得第一合并文件,并对所述第一合并文件进行差分计算所获得的文件;所述差异文件是在所述应用程序的旧版本的安装包中存在对应文件,且与所述对应文件之间存在部分数据差异的至少两个文件;所述差分文件用于指示所述差异文件与各自的所述对应文件之间的数据差异;
根据所述差分数据包中包含的所述差分文件,以及预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件;
根据所述第一合并文件生成所述新版本的安装包。
2.根据权利要求1所述的方法,其特征在于,所述根据所述差分数据包中包含的所述差分文件,以及预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件,包括:
从所述旧版本的安装包中提取所述差异文件各自的所述对应文件;
将所述差异文件各自的所述对应文件进行合并,获得第二合并文件;
根据所述差分文件以及所述第二合并文件进行逆差分计算,获得所述第一合并文件。
3.根据权利要求2所述的方法,其特征在于,所述将所述差异文件各自的所述对应文件进行合并,获得第二合并文件,包括:
按照所述差异文件合并为所述第一合并文件时的合并顺序,将所述差异文件各自的所述对应文件进行合并,获得所述第二合并文件。
4.根据权利要求2所述的方法,其特征在于,所述从所述旧版本的安装包中提取所述差异文件各自的所述对应文件,包括:
提取所述更新数据包中包含的,所述差异文件各自的所述对应文件在所述旧版本的安装包中的起始位置和文件长度;
根据所述差异文件各自的所述对应文件的起始位置和文件长度,从所述旧版本的安装包中提取所述差异文件各自的所述对应文件。
5.根据权利要求1至4任一所述的方法,其特征在于,所述第一合并文件由所述差异文件首尾相连组成,所述根据所述第一合并文件生成所述新版本的安装包,包括:
从所述差分数据包中提取所述差异文件各自的文件长度;
根据所述差异文件合并为所述第一合并文件时的合并顺序,以及所述差异文件各自的文件长度,将所述第一合并文件分解为所述差异文件;
根据所述差异文件生成所述新版本的安装包。
6.一种程序安装包生成方法,其特征在于,所述方法包括:
获取应用程序的旧版本的安装包和新版本的安装包;
提取所述新版本的安装包中的差异文件,所述差异文件是在所述旧版本的安装包中存在对应文件,且与所述对应文件之间存在部分数据差异的至少两个文件;
将所述差异文件进行合并,获得第一合并文件;
对所述第一合并文件进行差分计算,获得差分文件,所述差分文件用于指示所述差异文件与各自的所述对应文件之间的数据差异;
生成包含所述差分文件的更新数据包;
将所述更新数据包发送给终端,以便所述终端根据所述差分数据包中包含的所述差分文件,以及所述终端中预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件,并根据所述第一合并文件生成所述新版本的安装包。
7.根据权利要求6所述的方法,其特征在于,所述更新数据包中包含所述差异文件合并为所述第一合并文件时的合并顺序信息,以及所述差异文件各自的文件长度信息。
8.一种程序安装包生成装置,其特征在于,所述装置包括:
数据包接收模块,用于接收服务器发送的应用程序的更新数据包,所述更新数据包中包含差分文件;所述差分文件是所述服务器将所述应用程序的新版本的安装包中包含的差异文件进行合并获得第一合并文件,并对所述第一合并文件进行差分计算所获得的文件;所述差异文件是在所述应用程序的旧版本的安装包中存在对应文件,且与所述对应文件之间存在部分数据差异的至少两个文件;所述差分文件用于指示所述差异文件与各自的所述对应文件之间的数据差异;
逆差分模块,用于根据所述差分数据包中包含的所述差分文件,以及预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件;
安装包生成模块,用于根据所述第一合并文件生成所述新版本的安装包。
9.根据权利要求8所述的装置,其特征在于,所述逆差分模块,包括:
第一提取单元,用于从所述旧版本的安装包中提取所述差异文件各自的所述对应文件;
合并单元,用于将所述差异文件各自的所述对应文件进行合并,获得第二合并文件;
计算单元,用于根据所述差分文件以及所述第二合并文件进行逆差分计算,获得所述第一合并文件。
10.根据权利要求9所述的装置,其特征在于,
所述合并单元,用于按照所述差异文件合并为所述第一合并文件时的合并顺序,将所述差异文件各自的所述对应文件进行合并,获得所述第二合并文件。
11.根据权利要求9所述的装置,其特征在于,所述第一提取单元,包括:
第一提取子单元,用于提取所述更新数据包中包含的,所述差异文件各自的所述对应文件在所述旧版本的安装包中的起始位置和文件长度;
第二提取子单元,用于根据所述差异文件各自的所述对应文件的起始位置和文件长度,从所述旧版本的安装包中提取所述差异文件各自的所述对应文件。
12.根据权利要求8至11任一所述的装置,其特征在于,所述第一合并文件由所述差异文件首尾相连组成,所述安装包生成模块,包括:
第二提取单元,用于从所述差分数据包中提取所述差异文件各自的文件长度;
分解单元,用于根据所述差异文件合并为所述第一合并文件时的合并顺序以及所述差异文件各自的文件长度,将所述第一合并文件分解为所述差异文件;
生成单元,用于根据所述差异文件生成所述新版本的安装包。
13.一种程序安装包生成装置,其特征在于,所述装置包括:
安装包获取模块,用于获取应用程序的旧版本的安装包和新版本的安装包;
差异文件提取模块,用于提取所述新版本的安装包中的差异文件,所述差异文件是在所述旧版本的安装包中存在对应文件,且与所述对应文件之间存在部分数据差异的至少两个文件;
合并模块,用于将所述差异文件进行合并,获得第一合并文件;
差分计算模块,用于对所述第一合并文件进行差分计算,获得差分文件,所述差分文件用于指示所述差异文件与各自的所述对应文件之间的数据差异;
数据包生成模块,用于生成包含所述差分文件的更新数据包;
数据包发送模块,用于将所述更新数据包发送给终端,以便所述终端根据所述差分数据包中包含的所述差分文件,以及所述终端中预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件,并根据所述第一合并文件生成所述新版本的安装包。
14.根据权利要求13所述的装置,其特征在于,所述更新数据包中包含所述差异文件合并为所述第一合并文件时的合并顺序,以及所述差异文件各自的文件长度。
15.一种程序安装包生成方法,其特征在于,所述方法包括:
服务器获取应用程序的旧版本的安装包和新版本的安装包;
所述服务器提取所述新版本的安装包中的差异文件,所述差异文件是在所述旧版本的安装包中存在对应文件,且与所述对应文件之间存在部分数据差异的至少两个文件;
所述服务器将所述差异文件进行合并,获得第一合并文件;
所述服务器对所述第一合并文件进行差分计算,获得差分文件,所述差分文件用于指示所述差异文件与各自的所述对应文件之间的数据差异;
所述服务器生成包含所述差分文件的更新数据包;
所述服务器将所述更新数据包发送给终端;
所述终端根据所述差分数据包中包含的所述差分文件,以及所述终端中预存的所述旧版本的安装包进行逆差分计算,获得所述第一合并文件;
所述终端根据所述第一合并文件生成所述新版本的安装包。
CN201710305417.2A 2017-05-03 2017-05-03 程序安装包生成方法及装置 Active CN108804130B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710305417.2A CN108804130B (zh) 2017-05-03 2017-05-03 程序安装包生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710305417.2A CN108804130B (zh) 2017-05-03 2017-05-03 程序安装包生成方法及装置

Publications (2)

Publication Number Publication Date
CN108804130A true CN108804130A (zh) 2018-11-13
CN108804130B CN108804130B (zh) 2020-12-01

Family

ID=64054241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710305417.2A Active CN108804130B (zh) 2017-05-03 2017-05-03 程序安装包生成方法及装置

Country Status (1)

Country Link
CN (1) CN108804130B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109685A (zh) * 2019-04-23 2019-08-09 维沃移动通信有限公司 快应用的更新、安装包的制作方法、装置及移动终端
CN111556127A (zh) * 2020-04-24 2020-08-18 广东乐心医疗电子股份有限公司 一种可穿戴设备升级方法及相关设备
WO2021097623A1 (zh) * 2019-11-18 2021-05-27 深圳市欢太科技有限公司 一种文件处理方法、文件处理装置及终端设备
CN112947983A (zh) * 2021-04-15 2021-06-11 网易(杭州)网络有限公司 应用程序更新方法及装置、电子设备、存储介质
CN113031988A (zh) * 2021-03-26 2021-06-25 北京字节跳动网络技术有限公司 应用程序更新方法、装置、设备和存储介质
WO2021128269A1 (zh) * 2019-12-27 2021-07-01 深圳市欢太科技有限公司 文件处理方法、文件处理装置、移动终端及服务器
WO2021128371A1 (zh) * 2019-12-28 2021-07-01 深圳市欢太科技有限公司 差分文件生成方法、增量更新方法、计算设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8171141B1 (en) * 2009-04-02 2012-05-01 Vmware, Inc. Provisioning system including stack manager
CN102693145A (zh) * 2012-05-31 2012-09-26 红石阳光(北京)科技有限公司 用于嵌入式系统的差分升级方法
US20130117424A1 (en) * 2011-11-08 2013-05-09 Vmware, Inc. Computer Device and Method of Providing Configuration Files in a Computer Device
CN103136013A (zh) * 2011-12-01 2013-06-05 腾讯科技(深圳)有限公司 软件升级方法和系统
US20140025714A1 (en) * 2012-01-08 2014-01-23 Nick Alex Lieven Reyntjens Method and Apparatus for Realizing a Dynamically Typed File or Object System Enabling the User to Perform Calculations Over the Properties Associated with the Files or Objects in the System
CN103713928A (zh) * 2013-12-31 2014-04-09 优视科技有限公司 增量文件生成方法、应用程序安装文件更新方法及装置
CN103729225A (zh) * 2014-01-22 2014-04-16 中国人民解放军国防科学技术大学 一种基于内容分块的远程文件实时更新方法
CN104252364A (zh) * 2013-06-25 2014-12-31 腾讯科技(深圳)有限公司 增量更新的方法、设备及系统
CN105468412A (zh) * 2015-11-26 2016-04-06 金蝶软件(中国)有限公司 动态打包方法和装置
CN105808284A (zh) * 2014-12-31 2016-07-27 广州市动景计算机科技有限公司 一种增量升级方法及应用其的服务器

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8171141B1 (en) * 2009-04-02 2012-05-01 Vmware, Inc. Provisioning system including stack manager
US20130117424A1 (en) * 2011-11-08 2013-05-09 Vmware, Inc. Computer Device and Method of Providing Configuration Files in a Computer Device
CN103136013A (zh) * 2011-12-01 2013-06-05 腾讯科技(深圳)有限公司 软件升级方法和系统
US20140025714A1 (en) * 2012-01-08 2014-01-23 Nick Alex Lieven Reyntjens Method and Apparatus for Realizing a Dynamically Typed File or Object System Enabling the User to Perform Calculations Over the Properties Associated with the Files or Objects in the System
CN102693145A (zh) * 2012-05-31 2012-09-26 红石阳光(北京)科技有限公司 用于嵌入式系统的差分升级方法
CN104252364A (zh) * 2013-06-25 2014-12-31 腾讯科技(深圳)有限公司 增量更新的方法、设备及系统
CN103713928A (zh) * 2013-12-31 2014-04-09 优视科技有限公司 增量文件生成方法、应用程序安装文件更新方法及装置
CN103729225A (zh) * 2014-01-22 2014-04-16 中国人民解放军国防科学技术大学 一种基于内容分块的远程文件实时更新方法
CN105808284A (zh) * 2014-12-31 2016-07-27 广州市动景计算机科技有限公司 一种增量升级方法及应用其的服务器
CN105468412A (zh) * 2015-11-26 2016-04-06 金蝶软件(中国)有限公司 动态打包方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ADD_ADA: ""[差量更新系列1]BSDiff算法学习笔记_add_ada的博客-CSDN博客_bsdiff算法原理"", 《HTTPS://BLOG.CSDN.NET/ADD_ADA/ARTICLE/DETAILS/51232889》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109685A (zh) * 2019-04-23 2019-08-09 维沃移动通信有限公司 快应用的更新、安装包的制作方法、装置及移动终端
WO2021097623A1 (zh) * 2019-11-18 2021-05-27 深圳市欢太科技有限公司 一种文件处理方法、文件处理装置及终端设备
WO2021128269A1 (zh) * 2019-12-27 2021-07-01 深圳市欢太科技有限公司 文件处理方法、文件处理装置、移动终端及服务器
WO2021128371A1 (zh) * 2019-12-28 2021-07-01 深圳市欢太科技有限公司 差分文件生成方法、增量更新方法、计算设备及存储介质
CN114424165A (zh) * 2019-12-28 2022-04-29 深圳市欢太科技有限公司 差分文件生成方法、增量更新方法、计算设备及存储介质
CN111556127A (zh) * 2020-04-24 2020-08-18 广东乐心医疗电子股份有限公司 一种可穿戴设备升级方法及相关设备
CN113031988A (zh) * 2021-03-26 2021-06-25 北京字节跳动网络技术有限公司 应用程序更新方法、装置、设备和存储介质
CN113031988B (zh) * 2021-03-26 2024-05-14 北京字节跳动网络技术有限公司 应用程序更新方法、装置、设备和存储介质
CN112947983A (zh) * 2021-04-15 2021-06-11 网易(杭州)网络有限公司 应用程序更新方法及装置、电子设备、存储介质
CN112947983B (zh) * 2021-04-15 2024-03-15 网易(杭州)网络有限公司 应用程序更新方法及装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN108804130B (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
CN108804130A (zh) 程序安装包生成方法及装置
CN110582017B (zh) 一种视频播放方法、装置、终端及存储介质
US11847576B2 (en) Methods and system for managing predictive models
CN106775637B (zh) 一种应用程序的页面显示方法和装置
CN111178012A (zh) 一种表单渲染方法、装置、设备及存储介质
CN104978176B (zh) 应用程序接口调用方法、装置及计算机可读存储介质
CN105302587B (zh) 数据更新方法及装置
US20170249934A1 (en) Electronic device and method for operating the same
CN108399074A (zh) 一种应用程序的更新方法、终端及计算机可读存储介质
CN108280341B (zh) 渠道号添加、安装包校验方法及装置
US20170075654A1 (en) Electronic device and method for controlling an operation thereof
CN108702480A (zh) 电子设备和用于驱动其显示器的方法
CN107967322A (zh) 文件分类显示方法、移动终端及计算机可读存储介质
CN106598678A (zh) 向终端设备提供应用程序安装包的方法及装置
CN109067582A (zh) 一种数据管理系统、方法及装置
CN106101169A (zh) 一种终端及数据上报方法
WO2021104117A1 (zh) 一种构建应用程序资源包的方法、构建装置及终端设备
CN107341052A (zh) 一种消息处理方法及装置
CN112084959A (zh) 一种人群图像处理方法及装置
CN114372032A (zh) 资源文件同步方法、装置、设备、存储介质
CN110300047A (zh) 一种动画播放方法、装置及存储介质
CN109144596A (zh) 快捷启动方法、装置、终端、服务器及系统
CN107368998A (zh) 日程管理方法及相关产品
CN108141517A (zh) 用于处理图像的电子设备和方法
CN111709843B (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
GR01 Patent grant
GR01 Patent grant