CN103699410A - 一种应用程序的更新方法和装置 - Google Patents
一种应用程序的更新方法和装置 Download PDFInfo
- Publication number
- CN103699410A CN103699410A CN201310714581.0A CN201310714581A CN103699410A CN 103699410 A CN103699410 A CN 103699410A CN 201310714581 A CN201310714581 A CN 201310714581A CN 103699410 A CN103699410 A CN 103699410A
- Authority
- CN
- China
- Prior art keywords
- file
- version
- application program
- files
- updating
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000012856 packing Methods 0.000 claims description 20
- 238000009434 installation Methods 0.000 claims description 11
- 230000006837 decompression Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 abstract description 5
- 230000003247 decreasing effect Effects 0.000 abstract 1
- 238000004422 calculation algorithm Methods 0.000 description 66
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 25
- 230000006870 function Effects 0.000 description 23
- 230000008569 process Effects 0.000 description 12
- 230000015572 biosynthetic process Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000007689 inspection Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 230000001846 repelling effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种应用程序的更新方法和装置,所述方法包括:分别获取第一版本的应用程序的一个或多个第一文件和第二版本的应用程序的一个或多个第二文件;生成所述一个或多个第一文件与对应的一个或多个第二文件的更新差异文件;发布所述更新差异文件;所述更新差异文件包括下载地址;生成配置文件;所述配置文件包括所述第二版本的版本信息和所述更新差异文件的下载地址;发布所述配置文件。本发明防止客户端盲目访问服务器请求更新服务,减少了服务器的应答次数,降低了服务器的资源耗费,同时,采用数据差异制作的更新差异文件相比完整的版本更新数据包的体积大大减少了,大大降低了网络带宽资源,提高了下载的成功率,提高了更新的成功率。
Description
技术领域
本发明涉及电通信技术的领域,具体涉及一种应用程序的更新方法和一种应用程序的更新装置。
背景技术
当应用程序存在缺陷或者需要添加某些功能时,都需要对客户端上的应用程序进行版本升级。
目前升级客户端的应用程序的方法大致分为以下两种:
一种方法是服务器将新版本的应用程序中包含的所有组成文件做成单个安装程序供客户端下载安装。客户端在与服务器下载并运行安装程序,利用新版本应用程序中的所有组成文件对客户端的旧版本应用程序中的所有组成文件进行替换。
这种方法会导致重复进行安装操作,更新步骤繁杂并且没有实际意义,更新时间很长,用户体验很低。安装程序一般很大,会极大地浪费网络带宽资源,并且容易出现下载失败的情形,导致更新的成功率将低。随着应用程序功能的不断增强,应用程序升级给服务器带来的下载压力也越来越大。
另一种方法是服务器将新版本的应用程序中某些基础的组成文件提供客户端下载。客户端从服务器端下载相应组成文件,并将其保存在临时目录中,再将下载的组成文件替换到客户端的应用程序中。
这种方法制约性很大,无法对应用程序进行完整的更新,可能会导致应用程序的组成文件功能不一致而导致崩溃。基础的组成文件一般也很大,也会浪费网络带宽资源,并且容易出现下载失败的情形,导致更新的成功率将低。随着应用程序功能的不断增强,基础的组成文件的更新给服务器带来的下载压力也越来越大。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种应用程序的更新方法和相应的一种应用程序的更新装置。
依据本发明的一个方面,提供了一种应用程序的更新方法,包括:
分别获取第一版本的应用程序的一个或多个第一文件和第二版本的应用程序的一个或多个第二文件;
生成所述一个或多个第一文件与对应的一个或多个第二文件的更新差异文件;
发布所述更新差异文件;所述更新差异文件包括下载地址;
生成配置文件;所述配置文件包括所述第二版本的版本信息和所述更新差异文件的下载地址;
发布所述配置文件。
可选地,所述一个或多个第一文件为将所有文件按照所述第一版本的应用程序的结构目录打包生成的一个或多个第一文件;
所述一个或多个第二文件为将所有文件按照第二版本的应用程序按照结构目录打包生成的一个或多个第二文件;
所述第一版本的版本信息高于所述第二版本的版本信息。
可选地,所述一个或多个第一文件包括第一基础组件文件和/或第一扩展组件文件;
所述一个或多个第一文件通过以下方式生成:
将第一版本的应用程序的基础组件按照结构目录打包为第一基础组件文件;
将第一版本的应用程序的扩展组件按照结构目录打包为第一扩展组件文件。
可选地,所述一个或多个第二文件包括第二基础组件文件和/或第二扩展组件文件;
所述一个或多个第二文件通过以下方式生成:
将第二版本的应用程序的基础组件按照结构目录打包为第二基础组件文件;
将第二版本的应用程序的扩展组件按照结构目录打包为第二扩展组件文件。
可选地,所述生成所述一个或多个第一文件与对应的一个或多个第二文件的差异文件的步骤包括:
采用差异算法Courgette计算所述第一基础组件文件和所述第二基础组件文件的基础组件差异文件;
采用差异算法Courgette计算所述第一扩展组件文件和所述第二扩展组件文件的扩展组件差异文件;
将所述基础组件差异文件和/或所述扩展组件差异文件压缩为版本更新包;
将所述版本更新包压缩为更新差异文件。
根据本发明的另一方面,提供了一种应用程序的更新方法,包括:
从服务器侧获取配置文件;所述配置文件包括第二版本的版本信息和更新差异文件的下载地址;
当客户端的版本信息为所述第二版本的版本信息时,从所述下载地址下载所述更新差异文件;
采用预置的一个或多个第三文件和所述更新差异文件生成更新文件;
对所述更新文件进行解压;
安装解压后的更新文件。
可选地,所述一个或多个第三文件包括第三基础组件文件和/或第三扩展组件文件;所述更新文件包括基础组件更新包和/或扩展组件更新包;所述更新文件包括基础组件更新包和/或扩展组件更新包;
所述采用预置的一个或多个第三文件和所述更新差异文件生成更新文件的步骤包括:
解压所述更新差异文件,获得版本更新包;
解压所述版本更新包,获得基础组件差异文件和/或扩展组件差异文件;
采用差异算法Courgette将所述第三基础组件文件和所述基础组件差异文件生成基础组件更新包;
采用差异算法Courgette将所述第三扩展组件文件和所述扩展组件差异文件生成扩展组件更新包。
根据本发明的另一方面,提供了一种应用程序的更新方法,包括:
生成第一文件与第二文件的更新差异文件;其中,所述第一文件为第一版本的应用程序的组成文件,所述第二文件为第二版本的应用程序的组成文件;
发布所述更新差异文件;所述更新差异文件包括下载地址;
生成配置文件;所述配置文件包括所述组成文件的版本信息和所述更新差异文件的下载地址;
发布所述配置文件。
可选地,所述第一版本的版本信息高于所述第二版本的版本信息。
可选地,所述生成第一文件与第二文件的更新差异文件的步骤包括:
采用差异算法Courgette计算第一文件和第二文件的数据差异文件;
将所述数据差异文件压缩为文件更新包;
将所述文件更新包压缩为更新差异文件。
根据本发明的另一方面,提供了一种应用程序的更新方法,包括:
从服务器侧获取配置文件;所述配置文件包括组成文件的版本信息和更新差异文件的下载地址;
当预置的第三文件的版本信息为所述组成文件的版本信息时,从所述下载地址下载所述更新差异文件;
采用所述第三文件和所述更新差异文件生成更新文件;
将所述更新文件替换所述第三文件。
可选地,所述采用所述第三文件和所述更新差异文件生成更新文件的步骤包括:
解压所述更新差异文件,获得文件更新包;
解压所述文件更新包,获得数据差异文件;
采用差异算法Courgette将所述第三文件和所述数据差异文件生成更新文件。
根据本发明的另一方面,提供了一种应用程序的更新装置,包括:
第一获取模块,适于分别获取第一版本的应用程序的一个或多个第一文件和第二版本的应用程序的一个或多个第二文件;
第一生成模块,适于生成所述一个或多个第一文件与对应的一个或多个第二文件的更新差异文件;
第一发布模块,适于发布所述更新差异文件;所述更新差异文件包括下载地址;
第二生成模块,适于生成配置文件;所述配置文件包括所述第二版本的版本信息和所述更新差异文件的下载地址;
第二发布模块,适于发布所述配置文件。
可选地,所述一个或多个第一文件为将所有文件按照所述第一版本的应用程序的结构目录打包生成的一个或多个第一文件;
所述一个或多个第二文件为将所有文件按照第二版本的应用程序按照结构目录打包生成的一个或多个第二文件;
所述第一版本的版本信息高于所述第二版本的版本信息。
可选地,所述一个或多个第一文件包括第一基础组件文件和/或第一扩展组件文件;
所述一个或多个第一文件通过以下方式生成:
将第一版本的应用程序的基础组件按照结构目录打包为第一基础组件文件;
将第一版本的应用程序的扩展组件按照结构目录打包为第一扩展组件文件。
可选地,所述一个或多个第二文件包括第二基础组件文件和/或第二扩展组件文件;
所述一个或多个第二文件通过以下方式生成:
将第二版本的应用程序的基础组件按照结构目录打包为第二基础组件文件;
将第二版本的应用程序的扩展组件按照结构目录打包为第二扩展组件文件。
可选地,所述第一生成模块还适于:
采用差异算法Courgette计算所述第一基础组件文件和所述第二基础组件文件的基础组件差异文件;
采用差异算法Courgette计算所述第一扩展组件文件和所述第二扩展组件文件的扩展组件差异文件;
将所述基础组件差异文件和/或所述扩展组件差异文件压缩为版本更新包;
将所述版本更新包压缩为更新差异文件。
根据本发明的另一方面,提供了一种应用程序的更新装置,包括:
第二获取模块,适于从服务器侧获取配置文件;所述配置文件包括第二版本的版本信息和更新差异文件的下载地址;
第一下载模块,适于在客户端的版本信息为所述第二版本的版本信息时,从所述下载地址下载所述更新差异文件;
第三生成模块,适于采用预置的一个或多个第三文件和所述更新差异文件生成更新文件;
解压模块,适于对所述更新文件进行解压;
安装模块,适于安装解压后的更新文件。
可选地,所述一个或多个第三文件包括第三基础组件文件和/或第三扩展组件文件;所述更新文件包括基础组件更新包和/或扩展组件更新包;所述更新文件包括基础组件更新包和/或扩展组件更新包;
所述第三生成模块还适于:
解压所述更新差异文件,获得版本更新包;
解压所述版本更新包,获得基础组件差异文件和/或扩展组件差异文件;
采用差异算法Courgette将所述第三基础组件文件和所述基础组件差异文件生成基础组件更新包;
采用差异算法Courgette将所述第三扩展组件文件和所述扩展组件差异文件生成扩展组件更新包。
根据本发明的另一方面,提供了一种应用程序的更新装置,包括:
第四生成模块,适于生成第一文件与第二文件的更新差异文件;其中,所述第一文件为第一版本的应用程序的组成文件,所述第二文件为第二版本的应用程序的组成文件;
第三发布模块,适于发布所述更新差异文件;所述更新差异文件包括下载地址;
第五生成模块,适于生成配置文件;所述配置文件包括所述组成文件的版本信息和所述更新差异文件的下载地址;
第四发布模块,适于发布所述配置文件。
可选地,所述第一版本的版本信息高于所述第二版本的版本信息。
可选地,所述第四生成模块还适于:
采用差异算法Courgette计算第一文件和第二文件的数据差异文件;
将所述数据差异文件压缩为文件更新包;
将所述文件更新包压缩为更新差异文件。
根据本发明的另一方面,提供了一种应用程序的更新装置,包括:
第三获取模块,适于从服务器侧获取配置文件;所述配置文件包括组成文件的版本信息和更新差异文件的下载地址;
第二下载模块,适于在预置的第三文件的版本信息为所述组成文件的版本信息时,从所述下载地址下载所述更新差异文件;
第六生成模块,适于采用所述第三文件和所述更新差异文件生成更新文件;
替换模块,适于将所述更新文件替换所述第三文件。
可选地,所述第六生成模块还适于:
解压所述更新差异文件,获得文件更新包;
解压所述文件更新包,获得数据差异文件;
采用差异算法Courgette将所述第三文件和所述数据差异文件生成更新文件。
本发明在服务器计算出新版本和旧版本的应用程序之间的数据差异制作更新差异文件,并制作配置文件进行发布,客户端下载配置文件检查是否满足更新条件,当满足时才下载更新差异文件进行更新,防止客户端盲目访问服务器请求更新服务,减少了服务器的应答次数,降低了服务器的资源耗费,同时,采用数据差异制作的更新差异文件相比完整的版本更新数据包的体积大大减少了,大大降低了网络带宽资源,提高了下载的成功率,提高了更新的成功率。进一步地,服务器可以增加更新的速度和频率,使得应用程序的功能更加完善,提高了用户体验。
本发明基于基础组件和扩展组件进行打包,采用差异算法Courgette计算新版本和旧版本的应用程序的基础组件和扩展组件的数据差异制作更新差异文件,使得客户端可以双线程进行新版本的基础组件和扩展组件的组合,在不影响客户端性能的前提下,双线程大大加快了组合速度,进而提高了整个更新速度。
本发明在服务器计算出新版本和旧版本的应用程序的组成文件之间的数据差异制作更新差异文件,并制作配置文件进行发布,客户端下载配置文件检查是否满足更新条件,当满足时才下载更新差异文件进行更新,防止客户端盲目访问服务器请求更新服务,减少了服务器的应答次数,降低了服务器的资源耗费,同时,采用数据差异制作的更新差异文件相比完整的组成文件新数据包的体积大大减少了,大大降低了网络带宽资源,提高了下载的成功率,提高了更新的成功率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种应用程序的更新方法实施例1的步骤流程图;
图2示出了根据本发明一个实施例的一种应用程序的更新方法实施例2的步骤流程图;
图3示出了根据本发明一个实施例的一种应用程序的更新方法实施例3的步骤流程图;
图4示出了根据本发明一个实施例的一种应用程序的更新方法实施例4的步骤流程图;
图5示出了根据本发明一个实施例的一种应用程序的更新装置实施例1的结构框图;
图6示出了根据本发明一个实施例的一种应用程序的更新装置实施例2的结构框图;
图7示出了根据本发明一个实施例的一种应用程序的更新装置实施例3的结构框图;以及,
图8示出了根据本发明一个实施例的一种应用程序的更新装置实施例4的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1,示出了根据本发明一个实施例的一种应用程序的更新方法实施例1的步骤流程图,所述方法可以包括如下步骤:
步骤101,分别获取第一版本的应用程序的一个或多个第一文件和第二版本的应用程序的一个或多个第二文件;
在本发明实施例中,第一文件和第二文件可以为预先生成的文件,直接提取即可;第一文件和第二文件也可以是当前生成的。
为使本领域技术人员更好地理解本发明实施例,在本说明书中,将浏览器作为应用程序的一种示例进行说明。
在本发明的一种优选实施例中,所述一个或多个第一文件可以为将所有文件按照所述第一版本的应用程序的结构目录打包生成的一个或多个第一文件;
在实际应用中,由于一个应用程序(例如浏览器)的组成文件通常都是几十个、甚至上百个。若升级一个版本的应用程序需要对每个组成文件都配置升级,会造成升级十分之复杂,因此应用程序(例如浏览器)的所有文件必须按照目录结构打成一个压缩包或多个压缩包。这些压缩包都仅仅是把文件打包,不使用任何压缩算法,以便于进行增量计算。
作为本发明实施例的一种优选示例,所述一个或多个第一文件可以包括第一基础组件文件和/或第一扩展组件文件;
在具体实现中,所述一个或多个第一文件可以通过以下方式生成:
子步骤S11,将第一版本的应用程序的基础组件按照结构目录打包为第一基础组件文件;
子步骤S12,将第一版本的应用程序的扩展组件按照结构目录打包为第一扩展组件文件。
一个应用程序可以有很多个文件组成,其中大部分都是些扩展插件以及其他一些小程序。基础组件可以为实现应用程序的基础部分功能的文件,例如浏览器中的渲染功能等等,扩展组件可以为实现应用程序的扩展部分功能的文件,例如浏览器中的手势操作功能、搜索插件等等。
需要说明的是,不同应用程序在不同需求下,基础部分功能和扩展部分功能可以是不同的,本发明实施例可以指定应用程序中任意的文件为基础组件或者扩展组件,例如可以将上述浏览器的手势操作功能归入基础组件。
应用程序的结构目录可以为安装后的结构化的目录文件,基础组件和扩展组件可以具有指定的存放目录,该存放目录可以为根目录,可以为二级目录等等。
在本发明的一种优选实施例中,所述一个或多个第二文件可以为所有文件按照第二版本的应用程序按照结构目录打包生成的一个或多个第二文件;
其中,所述第一版本的版本信息可以高于所述第二版本的版本信息。
则在本示例中,第一版本的应用程序可以为新版本的应用程序,第二版本的应用程序可以为旧版本的应用程序,应用程序进行了比较大范围的更新,需要对整个版本的应用程序进行更新。
需要说明的是,第二版本的应用程序的结构目录与第一版本的应用程序的结构目录可以是相对应的。
作为本发明实施例的一种优选示例,所述一个或多个第二文件可以包括第二基础组件文件和/或第二扩展组件文件;
在具体实现中,所述一个或多个第二文件可以通过以下方式生成:
子步骤S21,将第二版本的应用程序的基础组件按照结构目录打包为第二基础组件文件;
子步骤S22,将第二版本的应用程序的扩展组件按照结构目录打包为第二扩展组件文件。
需要说明的是,第二基础组件文件和第二扩展组件文件的应用与第一基础组件文件和第一扩展组件文件的应用基本是相同的,相关之处可以参照第一基础组件文件和第一扩展组件文件的相关说明,本发明实施例在此不加以详述。
此外,在客户端性能允许的前提下,本发明实施例亦可以将应用程序按照功能划分为三个、四个等多个组件进行打包,然后计算新旧版本的数据差异制作差异更新文件,本发明实施例对此不加以限制。
步骤102,生成所述一个或多个第一文件与对应的一个或多个第二文件的更新差异文件;
更新差异文件可以为第一文件与第二文件存在差异的数据所生成的文件。
在本发明的一种优选实施中,所述步骤102可以包括如下子步骤:
子步骤S31,采用差异算法Courgette计算所述第一基础组件文件和所述第二基础组件文件的基础组件差异文件;
子步骤S32,采用差异算法Courgette计算所述第一扩展组件文件和所述第二扩展组件文件的扩展组件差异文件;
差异算法Courgette是构建在一个开源代码bsdiff和bspatch基础上的,可以用于针对两个不同版本(旧版本和新版本)的二进制文件(BinaryFile),寻找其中区别,生成补丁文件;另外根据这个补丁文件加上旧版本的二进制文件生成新版本的二进制文件。
需要说明的是,第一基础组件文件和第二基础组件文件,以及,第一扩展组件文件和第二扩展组件文件中可以包括二进制文件,也可以包括非二进制文件。对于二进制文件,差异算法Courgette可以先进行反汇编,然后再采用bsdiff进行差异文件的计算。对于非二进制文件,差异算法Courgette可以直接采用bsdiff进行差异文件的计算。
对于编译后的应用程序而言,即使改变了很小的源代码,也会导致不成比例的大量二进制级别的变化。如果添加几行代码,比如,一个范围的检查来防止缓存溢出,后面所有的代码都会被移动来容纳新的指令。一些指令和数据经常是另外的指令和数据的地址,所以编译后的代码到处都是内部引用。但是在这些内部指针改变之前,仅仅是少数的几行代码的变动,而且是大量的内部指针,诸如浏览器主DLL(Dynamic LinkLibrary,动态链接库)大小的程序,内部指针的数量大概有50万个。
而源代码则没有上述问题,因为源代码所有的元素是符号化的。在编译和链接的过程中,函数是在后面的阶段被转化(commite)成指定地址的。
差异算法Courgette可以用了一个原始的分解器(disassembler)来找到内部指针。分解器把程序分割成3部分:一个内部指针目的地址的列表;其他的字节和一个指令(Instruction)序列来决定普通的字节和指针通过调整和穿插来回到原来的输入。则可以将此称为“分解的语言”(assemblylanguage),因为可以使用一个分解器来处理这些指令和发布这个字节序列来恢复到原始的文件。
非指针的部分大概占了原来应用程序的80%,因为没有混合任何的指针,比较起来效果更好一些,差异包的大小和源代码的改变成线性关系。简单的使用分解的语言比较出来的版本更新包大概比原来的小30%。
差异算法Courgette引进标签来标识地址,使得指针可以被控制。这些地址被存在数组里面,而指针列表会被数组的下标列表所代替。这个数据是一个原始的符号表,这些符号的名字,或者标签其实是整型的数组下标。利用符号表,使得差异算法Courgette如何表达应用程序有一定的自由度。通过改变相应的列表索引,使得差异算法Courgette可以移动数组周围的地址。
差异算法Courgette把程序转换成原始的assemblylanguage,然后在assembly的级别上比较出差异:
Server:
asm_old=disassemble(original)
asm_new=disassemble(update)
asm_new_adjusted=adjust(asm_new,asm_old)
asm_diff=bsdiff(asm_old,asm_new_adjusted)
transmit asm_diff
差异算法Courgette通过移动asm_new内符号表的地址(asm_new_adjusted=adjust(asm_new,asm_old)),使得版本更新文件的最小化。两个符号表中的地址是匹配的,在它们的统计属性上保证索引列表拥有很多公共的字串。根据周围的代码或者调试信息,对齐的地址不使用任何的探索法来进行匹配。
旧版的应用程序和新版的应用程序必须是一个良好的可执行文件。如果旧版的应用程序和新版的应用程序可以包含几个可执行文件,也可以包含非编译的文件如JavaScript和PNG图片,将会更加有用。对于浏览器而言,旧版的应用程序和新版的应用程序是一种存档文件,可以包含所有安装和运行需要的文件。
差异算法Courgette把输入转换成另外一种更有效的二进制差异的形式,在转换空间中做差分压缩,并通过相反的转换来从原始文件中获取打了补丁后的输出。通过差异算法Courgette的转换方式之后,可以获得一个更小的升级包。
子步骤S33,将所述基础组件差异文件和/或所述扩展组件差异文件压缩为版本更新包;
在为进一步减少网络流量的占用,可以对基础组件差异文件和/或扩展组件差异文件进行压缩打包,版本更新包具体可以为7z压缩格式的压缩包。
子步骤S34,将所述版本更新包压缩为更新差异文件。
为了便于发布和进一步减少网络流量的占用,把要发布的版本更新包压缩成更新差异文件,具体可以为CAB文件,同时便于客户端可以马上解压处理。
CAB为Microsoft制订的压缩包格式,常用于应用程序的安装程序,使用Windows自带的实用程序Extract.exe可以对其解压缩,WinZip、WinRAR、WinMount等都支持这种格式。
步骤103,发布所述更新差异文件;所述更新差异文件可以包括下载地址;
将更新差异文件上传到服务器中指定的位置进行发布,对外网具有一个下载地址。
步骤104,生成配置文件;所述配置文件可以包括所述第二版本的版本信息和所述更新差异文件的下载地址;
配置文件config.ini可以具有指示第二版本(旧版本)的版本信息和下载地址之外,还可以具有用于标识配置文件的名称信息,用于安全性校验的校验信息,例如MD5(Message Digest Algorithm,消息摘要算法第五版),第一版本(新版本)的版本信息等等,本发明实施例对此不加以限制。
步骤105,发布所述配置文件。
将配置文件config.ini上传到服务器中指定的位置进行发布,使得客户端可以下载配置文件config.ini进行更新。
需要说明的是,前最新版本的应用程序可以为一个,但是客户端有可能不会在每次应用程序的版本更新后都会进行更新,因此客户端的应用程序版本可以存在多个,则进行更新的更新差异文件可以为多个,而配置文件可以为一个,即配置文件中包括旧版本的应用程序(可以为部分,也可以为全部)的版本信息,以及,对应的更新文件的下载地址。当然,配置文件也可以为多个,即一个配置文件只包括一个旧版本的应用程序的版本信息以及对应的更新文件的下载地址。
参照图2,示出了根据本发明一个实施例的一种应用程序的更新方法实施例2的步骤流程图,所述方法可以包括如下步骤:
步骤201,从服务器侧获取配置文件;所述配置文件包括第二版本的版本信息和更新差异文件的下载地址;
应用本发明实施例,客户端(可以为应用程序)可以在预设的时间(例如每天早上6点、每周六的6点等等),也可以间隔预设的时间段(例如每6小时、8小时等等)主动从服务器下载配置文件。
服务器也可以主动在预设的时间(例如每天早上6点、每周六的6点等等),或者间隔预设的时间段(例如每6小时、8小时等等)主动向客户端推送配置文件。
服务器还可以在应用程序更新后主动从客户端中采集版本信息,向客户端推送该版本信息进行更新对应的配置文件。客户端为了保证用户的隐私权和知情权,在服务器得到授权后可以采集该客户端上的应用程序的版本信息。进一步地,可以先检查该客户端的用户是否加入了指定计划,如果是,则确认该客户端用户对服务器的应用程序的版本信息采集进行了授权,服务器可以继续执行采集流程,如果该客户端的用户没有加入执行计划,则确认该客户端用户未对服务器端的应用程序的版本信息采集进行授权,服务器端不可以获取该客户端上的应用程序的版本信息。
步骤202,当客户端的版本信息为所述第二版本的版本信息时,从所述下载地址下载所述更新差异文件;
客户端可以逐项检查配置文件config.ini中的信息,当客户端的版本信息与配置文件config.ini中的第二版本的版本信息相同时,访问对应的下载地址从服务器中下载更新差异文件。
步骤203,采用预置的一个或多个第三文件和所述更新差异文件生成更新文件;
在本发明的一种优选实施例中,所述一个或多个第三文件可以为将所有文件按照所述第二版本的应用程序的结构目录打包生成的一个或多个第一文件。第三文件可以为客户端上一次更新之后留下的更新文件,可以为客户端预先生成的文件,还可以是客户端当前生成的。
作为本发明实施例的一种优选示例,所述一个或多个第三文件可以包括第三基础组件文件和/或第三扩展组件文件;
在具体实现中,若第三文件为客户端预先生成的或者在当前生成的,则所述一个或多个第一文件可以通过以下方式生成:
子步骤S31,将第二版本的应用程序的基础组件按照结构目录打包为第三基础组件文件;
子步骤S32,将第二版本的应用程序的扩展组件按照结构目录打包为第三扩展组件文件。
需要说明的是,第三基础组件文件和第三扩展组件文件的应用与第一基础组件文件和第一扩展组件文件的应用基本是相同的,相关之处可以参照第一基础组件文件和第一扩展组件文件的相关说明,本发明实施例在此不加以详述。
在发明实施例中,所述更新文件可以包括基础组件更新包和/或扩展组件更新包;所述更新文件可以包括基础组件更新包和/或扩展组件更新包;
则所述步骤203可以包括如下子步骤:
子步骤S41,解压所述更新差异文件,获得版本更新包;
当更新差异文件为CAB文件时,可以采用Extract.exe、WinZip、WinRAR或者WinMount对其解压。
子步骤S42,解压所述版本更新包,获得基础组件差异文件和/或扩展组件差异文件;
当对版本更新包进一步解压,可以获得差异文件和/或扩展组件差异文件。当版本更新包可以为7z压缩格式的压缩包时,可以采用对应的解压算法进行解压。
子步骤S43,采用差异算法Courgette将所述第三基础组件文件和所述基础组件差异文件生成基础组件更新包;
子步骤S44,采用差异算法Courgette将所述第三扩展组件文件和所述扩展组件差异文件生成扩展组件更新包。
在具体实现中,可以通过以下流程进行基础组件更新包和/或扩展组件更新包的组合。
Client:
receive asm_diff
asm_old=disassemble(original)
asm_new_adjusted=bspatch(asm_old,asm_diff)
update=assemble(asm_new_adjusted)
在采用差异算法Courgette计算出来的基础组件更新包实质上可以与新版本的应用程序的基础组件文件的打包文件(例如第一基础组件文件)相同,扩展组件更新包实质上可以与新版本的应用程序的扩展组件文件的打包文件(例如第一扩展组件文件)相同。
对于二进制文件,差异算法Courgette可以采用bsdiff进行差异文件的组合,再进行反汇编的对应操作。对于非二进制文件,差异算法Courgette可以直接采用bsdiff进行差异文件的组合。
需要说明的是,由于方法实施例2中差异算法Courgette的组合操作,可以与方法实施例1中差异算法Courgette的分解操作严格相反的,相关之处可以参照方法实施例1中差异算法Courgette的分解操作的部分说明即可,本发明实施例在此不加以详述。
本发明基于基础组件和扩展组件进行打包,采用差异算法Courgette计算新版本和旧版本的应用程序的基础组件和扩展组件的数据差异制作更新差异文件,使得客户端可以双线程进行新版本的基础组件和扩展组件的组合,在不影响客户端性能的前提下,双线程大大加快了组合速度,进而提高了整个更新速度。
步骤203,对所述更新文件进行解压;
解压后的更新文件可以为新版本的应用程序。
步骤204,安装解压后的更新文件。
在本发明实施例中,客户端可以将基础组件更新包和/或扩展组件更新包安装到指定的位置即可完成应用程序的更新。
需要说明的是,客户端在安装完基础组件更新包和/或扩展组件更新包后,可以包括基础组件更新包和/或扩展组件,以备下次更新,即作为第三基础组件文件和/或第三扩展组件文件。
本发明在服务器计算出新版本和旧版本的应用程序之间的数据差异制作更新差异文件,并制作配置文件进行发布,客户端下载配置文件检查是否满足更新条件,当满足时才下载更新差异文件进行更新,防止客户端盲目访问服务器请求更新服务,减少了服务器的应答次数,降低了服务器的资源耗费,同时,采用数据差异制作的更新差异文件相比完整的版本更新数据包的体积大大减少了,大大降低了网络带宽资源,提高了下载的成功率,提高了更新的成功率。进一步地,服务器可以增加更新的速度和频率,使得应用程序的功能更加完善,提高了用户体验。
为了方便本领域技术人员更好地理解本发明,以下通过一个浏览器的更新示例更进一步说明本发明实施例的应用程序更新过程:
在服务器侧:
1、按照结构目录打包浏览器的基础组件为Chrome.core.7z;
按照结构目录打包浏览器的扩展组件为Chrome.ext.7z;
Chrome.core.7z打包了所有的浏览器核心文件,这个包解压出来之后浏览器即可运行。大致文件如下:
360se.exe(执行文件)
6.5.1.134(版本目录文件)
Chrome.dll
gcswf32.dll
...
Chrome.ext.7z打包了所有的浏览器扩展文件,这个包里面的文件通常用得不多。大致文件如下:
6.5.1.134(版本目录文件)
pdf.dll
...
2、计算新版本和旧版本的浏览器的Chrome.core.7z和Chrome.ext.7z的差异文件。
Chrome.core.diff=GetDiff(chrome.core.7z(new),chrome.core.7z(old))
Chrome.ext.diff=GetDiff(chrome.ext.7z(new),chrome.ext.7z(old))
其中,GetDiff为差异文件。
3、把Chrome.core.diff和Chrome.ext.diff打成一个压缩包diff.7z。
4、把diff.7z打包成diff.cab文件。
5、将diff.cab文件上传到指定位置发布,下载地址为http://xxx.com/file_diff.cab。
6、生成配置文件config.ini。其中新版本为6.3.1.100,旧版本为6.2.1.200。
[se6.2.1.200_6.3.1.100.7z]
ver=6.3.1.100
md5=1bdedd0ad00b758fa92b2b9edaa9a120
check=(%fver_old%=="6.2.1.200")
URL=http://xxx.com/diff.cab
7、将配置文件config.ini上传到指定的位置发布。
在客户端侧:
8、每隔固定的时间(如6个小时),去下载升级配置文件config.ini。
9、逐项检查配置文件config.ini,判断浏览器当前的版本号满足(%fver_old%=="6.2.1.200")。
10、当满足版本号"6.2.1.200"时,从http://xxx.com/diff.cab下载diff.cab文件。
11、解压diff.cab为diff.7z。
12、解压diff.7z为chrome.core.diff,chrome.ext.diff。
13、计算新版本的浏览器的基础组件和扩展组件。
Chrome.core.7z(new)=ApplyDiff(chrome.core.7z(old),chrome.core.diff)
Chrome.ext.7z(new)=ApplyDiff(chrome.ext.7z(old),chrome.ext.diff)
其中,ApplyDiff为更新文件。
14、解压新的Chrome.core.7z和Chrome.ext.7z得到新版本的浏览器。
15、安装新版本的浏览器。
对于整个浏览器,升级一个安装包和升级一个差异文件打成的7z包的大小差异为:
All | 40M |
Diff.7z | 2M |
参照图3,示出了根据本发明一个实施例的一种应用程序的更新方法实施例3的步骤流程图,所述方法可以包括如下步骤:
步骤301,生成第一文件与第二文件的更新差异文件;其中,所述第一文件为第一版本的应用程序的组成文件,所述第二文件为第二版本的应用程序的组成文件;
在实际应用中,第一文件和第二文件可以为同一个组成文件的不同版本。具体地,该组成文件可以为可执行文件(二进制文件),也可以为非可执行文件(非二进制文件)。
在本发明实施例的一种优选示例中,所述第一版本的版本信息可以高于所述第二版本的版本信息。
则在本示例中,第一版本的应用程序可以为新版本的应用程序,第二版本的应用程序可以为旧版本的应用程序,应用程序进行了组成文件的更新,可以只基于组成文件进行更新。
在本发明的一种优选实施例中,所述步骤301可以包括如下子步骤:
子步骤S51,采用差异算法Courgette计算第一文件和第二文件的数据差异文件;
需要说明的是,第一文件和第二文件中可以包括二进制文件,也可以包括非二进制文件。对于二进制文件,差异算法Courgette可以先进行反汇编,然后再采用bsdiff进行差异文件的计算。对于非二进制文件,差异算法Courgette可以直接采用bsdiff进行差异文件的计算。
对于单个可执行文件,在更新时通常可能都只是修改了其中一两行代码,但这个修改却可能导致该函数之后的所有的函数都向后移动固定的长度。所以在采用差异算法Courgette计算数据差异的时候,可以先反汇编,然后仅选择其中的差异块计算。
具体地,在一个二进制文件里面,包含了代码部分(函数,数据),指向这些函数的指针列表(编译链接产生,包含了如何定位函数等信息),由于这些地址是内部的相对地址,即使更改了一小行代码,重新编译后,函数的地址将发生变化了,指向这些函数的指针值也全部变化了。因此,即使更改了一个小小的变量,也会导致很多部分的修改。
Bsdiff的原理就是对二进制文件进行反汇编,将上面所说的两部分进行分别处理,对于代码部分,其实就和普通的文本文件类似了,改变不会太大,这部分体积基本上占去了整个二进制文件的80%左右。然后对动态指针部分进行一些更新处理,就基本上达到了打补丁的目标了。
对于非可执行文件,基本的计算流程如下:
Server:
diff=bsdiff(original,update)
transmit diff
对于可执行文件,基本的计算流程如下:
server:
asm_old=disassemble(original)
asm_new=disassemble(update)
asm_new_adjusted=adjust(asm_new,asm_old)
asm_diff=bsdiff(asm_old,asm_new_adjusted)
transmit asm_diff
子步骤S52,将所述数据差异文件压缩为文件更新包;
在为进一步减少网络流量的占用,可以对数据差异文件进行压缩打包,版本更新包具体可以为7z压缩格式的压缩包。
子步骤S53,将所述文件更新包压缩为更新差异文件。
为了便于发布和进一步减少网络流量的占用,把要发布的文件更新包压缩成更新差异文件,具体可以为CAB文件,同时便于客户端可以马上解压处理。
步骤302,发布所述更新差异文件;所述更新差异文件包括下载地址;
将更新差异文件上传到服务器中指定的位置进行发布,对外网具有一个下载地址。
步骤303,生成配置文件;所述配置文件包括所述组成文件的版本信息和所述更新差异文件的下载地址;
配置文件config.ini可以具有指示第二版本(旧版本)的版本信息和下载地址之外,还可以具有用于标识配置文件的名称信息,用于安全性校验的校验信息,例如MD5(Message Digest Algorithm,消息摘要算法第五版),第一版本(新版本)的版本信息等等,本发明实施例对此不加以限制。
步骤304,发布所述配置文件。
将配置文件config.ini上传到服务器中指定的位置进行发布,使得客户端可以下载配置文件config.ini进行更新。
需要说明的是,前最新版本的应用程序可以为一个,但是客户端有可能不会在每次应用程序的版本更新后都会进行更新,因此客户端的应用程序版本可以存在多个,则进行更新的更新差异文件可以为多个,而配置文件可以为一个,即配置文件中包括旧版本的应用程序(可以为部分,也可以为全部)的版本信息,以及,对应的更新文件的下载地址。当然,配置文件也可以为多个,即一个配置文件只包括一个旧版本的应用程序的版本信息以及对应的更新文件的下载地址。
参照图4,示出了根据本发明一个实施例的一种应用程序的更新方法实施例4的步骤流程图,所述方法可以包括如下步骤:
步骤401,从服务器侧获取配置文件;所述配置文件包括组成文件的版本信息和更新差异文件的下载地址;
应用本发明实施例,客户端(可以为应用程序)可以在预设的时间(例如每天早上6点、每周六的6点等等),也可以间隔预设的时间段(例如每6小时、8小时等等)主动从服务器下载配置文件。
服务器也可以主动在预设的时间(例如每天早上6点、每周六的6点等等),或者间隔预设的时间段(例如每6小时、8小时等等)主动向客户端推送配置文件。
服务器还可以在应用程序更新后主动从客户端中采集版本信息,向客户端推送该版本信息进行更新对应的配置文件。客户端为了保证用户的隐私权和知情权,在服务器得到授权后可以采集该客户端上的应用程序的版本信息。进一步地,可以先检查该客户端的用户是否加入了指定计划,如果是,则确认该客户端用户对服务器的应用程序的版本信息采集进行了授权,服务器可以继续执行采集流程,如果该客户端的用户没有加入执行计划,则确认该客户端用户未对服务器端的应用程序的版本信息采集进行授权,服务器端不可以获取该客户端上的应用程序的版本信息。
步骤402,当预置的第三文件的版本信息为所述组成文件的版本信息时,从所述下载地址下载所述更新差异文件;
客户端可以逐项检查配置文件config.ini中的信息,当客户端的版本信息与配置文件config.ini中的第二版本的版本信息相同时,访问对应的下载地址从服务器中下载更新差异文件。
步骤403,采用所述第三文件和所述更新差异文件生成更新文件;
在本发明的一种优选实施例中,所述第三文件可以为与更新差异文件对应的同一个组成文件。第三文件可以为客户端上一次更新之后留下的更新文件,还可以是客户端当前使用的组成文件。
在本发明的一种优选实施例中,所述步骤403可以包括如下子步骤:
子步骤S61,解压所述更新差异文件,获得文件更新包;
当更新差异文件为CAB文件时,可以采用Extract.exe、WinZip、WinRAR或者WinMount对其解压。
子步骤S62,解压所述文件更新包,获得数据差异文件;
当对版本更新包进一步解压,可以获得数据差异文件。当版本更新包可以为7z压缩格式的压缩包时,可以采用对应的解压算法进行解压。
子步骤S63,采用差异算法Courgette将所述第三文件和所述数据差异文件生成更新文件。
在具体实现中,可以通过以下流程进行数据第三文件和差异文件更新包的组合。
对于非可执行文件,基本的计算流程如下:
Client:
receive diff
update=bspatch(original,diff)
对于可执行文件,基本的计算流程如下:
Client:
receive asm_diff
asm_old=disassemble(original)
asm_new_adjusted=bspatch(asm_old,asm_diff)
update=assemble(asm_new_adjusted)
步骤404,将所述更新文件替换所述第三文件。
将生成的更新文件替换当前应用程序使用的第三文件即可完成更新。
本发明在服务器计算出新版本和旧版本的应用程序的组成文件之间的数据差异制作更新差异文件,并制作配置文件进行发布,客户端下载配置文件检查是否满足更新条件,当满足时才下载更新差异文件进行更新,防止客户端盲目访问服务器请求更新服务,减少了服务器的应答次数,降低了服务器的资源耗费,同时,采用数据差异制作的更新差异文件相比完整的组成文件新数据包的体积大大减少了,大大降低了网络带宽资源,提高了下载的成功率,提高了更新的成功率。
为了方便本领域技术人员更好地理解本发明,以下通过一个浏览器的组成文件的更新示例更进一步说明本发明实施例的应用程序更新过程:
在服务器侧:
1、计算新版本和旧版本的浏览器的组成文件的差异文件
file.diff=GetDiff(file(new),file(old))
其中,GetDiff为差异文件。
2、file.diff打成压缩包file_diff.7z。
3、把fille_diff.7z打包成file_diff.cab。
4、将file_diff.cab文件上传到指定位置发布,下载地址为http://xxx.com/file_diff.cab。
5、生成配置文件config.ini。其中新版本为6.3.1.100,旧版本为6.2.1.200。
[file_diff.cab]
ver=6.3.1.100
md5=1bdedd0ad00b758fa92b2b9edaa9a123
check=(%fver_file%=="6.2.1.200")
URL=http://xxx.com/file_diff.cab
6、将配置文件config.ini上传到指定的位置发布。
在客户端侧:
7、每隔固定的时间(如6个小时),去下载升级配置文件config.ini。
8、逐项检查配置文件config.ini,判断浏览器当前的版本号满足(%fver_old%=="6.2.1.200")。
9、当满足版本号"6.2.1.200"时,从http://xxx.com/file_diff.cab下载file_diff.cab文件。
10、解压file_diff.cab为file_diff.7z。
11、解压file_diff.7z为file.diff
12、计算新版本的浏览器的组成文件。
file(new)=ApplyDiff(file(old),file.diff)
其中,ApplyDiff为更新文件。
13、将更新文件替换当前浏览器的组成文件。
对于整个浏览器的一个组成文件,升级整个组成文件和升级一个差异文件打包的7z包的大小差异为
All | 1.5M |
File_diff.7z | 136K |
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参照图5,示出了根据本发明一个实施例的一种应用程序的更新装置实施例1的结构框图,所述装置可以包括如下模块:
第一获取模块501,适于分别获取第一版本的应用程序的一个或多个第一文件和第二版本的应用程序的一个或多个第二文件;
第一生成模块502,适于生成所述一个或多个第一文件与对应的一个或多个第二文件的更新差异文件;
第一发布模块503,适于发布所述更新差异文件;所述更新差异文件包括下载地址;
第二生成模块504,适于生成配置文件;所述配置文件包括所述第二版本的版本信息和所述更新差异文件的下载地址;
第二发布模块505,适于发布所述配置文件。
在本发明的一种优选实施例中,所述一个或多个第一文件可以为将所有文件按照所述第一版本的应用程序的结构目录打包生成的一个或多个第一文件;
所述一个或多个第二文件可以为将所有文件按照第二版本的应用程序按照结构目录打包生成的一个或多个第二文件;
所述第一版本的版本信息可以高于所述第二版本的版本信息。
在本发明的一种优选实施例中,所述一个或多个第一文件可以包括第一基础组件文件和/或第一扩展组件文件;
所述一个或多个第一文件可以通过以下方式生成:
将第一版本的应用程序的基础组件按照结构目录打包为第一基础组件文件;
将第一版本的应用程序的扩展组件按照结构目录打包为第一扩展组件文件。
在本发明的一种优选实施例中,所述一个或多个第二文件可以包括第二基础组件文件和/或第二扩展组件文件;
所述一个或多个第二文件可以通过以下方式生成:
将第二版本的应用程序的基础组件按照结构目录打包为第二基础组件文件;
将第二版本的应用程序的扩展组件按照结构目录打包为第二扩展组件文件。
在本发明的一种优选实施例中,所述第一生成模块还可以适于:
采用差异算法Courgette计算所述第一基础组件文件和所述第二基础组件文件的基础组件差异文件;
采用差异算法Courgette计算所述第一扩展组件文件和所述第二扩展组件文件的扩展组件差异文件;
将所述基础组件差异文件和/或所述扩展组件差异文件压缩为版本更新包;
将所述版本更新包压缩为更新差异文件。
对于图5的装置实施例而言,由于其与图1的方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图6,示出了根据本发明一个实施例的一种应用程序的更新装置实施例2的结构框图,所述装置可以包括如下模块:
第二获取模块601,适于从服务器侧获取配置文件;所述配置文件包括第二版本的版本信息和更新差异文件的下载地址;
第一下载模块602,适于在客户端的版本信息为所述第二版本的版本信息时,从所述下载地址下载所述更新差异文件;
第三生成模块603,适于采用预置的一个或多个第三文件和所述更新差异文件生成更新文件;
解压模块604,适于对所述更新文件进行解压;
安装模块605,适于安装解压后的更新文件。
在本发明的一种优选实施例中,所述一个或多个第三文件可以包括第三基础组件文件和/或第三扩展组件文件;所述更新文件可以包括基础组件更新包和/或扩展组件更新包;所述更新文件可以包括基础组件更新包和/或扩展组件更新包;
所述第三生成模块还可以适于:
解压所述更新差异文件,获得版本更新包;
解压所述版本更新包,获得基础组件差异文件和/或扩展组件差异文件;
采用差异算法Courgette将所述第三基础组件文件和所述基础组件差异文件生成基础组件更新包;
采用差异算法Courgette将所述第三扩展组件文件和所述扩展组件差异文件生成扩展组件更新包。
对于图6的装置实施例而言,由于其与图2的方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图7,示出了根据本发明一个实施例的一种应用程序的更新装置实施例3的结构框图,所述装置可以包括如下模块:
第四生成模块701,适于生成第一文件与第二文件的更新差异文件;其中,所述第一文件可以为第一版本的应用程序的组成文件,所述第二文件可以为第二版本的应用程序的组成文件;
第三发布模块702,适于发布所述更新差异文件;所述更新差异文件包括下载地址;
第五生成模块703,适于生成配置文件;所述配置文件包括所述组成文件的版本信息和所述更新差异文件的下载地址;
第四发布模块704,适于发布所述配置文件。
在本发明的一种优选实施例中,所述第一版本的版本信息可以高于所述第二版本的版本信息。
在本发明的一种优选实施例中,所述第四生成模块还可以适于:
采用差异算法Courgette计算第一文件和第二文件的数据差异文件;
将所述数据差异文件压缩为文件更新包;
将所述文件更新包压缩为更新差异文件。
对于图7的装置实施例而言,由于其与图3的方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图8,示出了根据本发明一个实施例的一种应用程序的更新装置实施例4的结构框图,所述装置可以包括如下模块:
第三获取模块801,适于从服务器侧获取配置文件;所述配置文件包括组成文件的版本信息和更新差异文件的下载地址;
第二下载模块802,适于在预置的第三文件的版本信息为所述组成文件的版本信息时,从所述下载地址下载所述更新差异文件;
第六生成模块803,适于采用所述第三文件和所述更新差异文件生成更新文件;
替换模块804,适于将所述更新文件替换所述第三文件。
在本发明的一种优选实施例中,所述第六生成模块还可以适于:
解压所述更新差异文件,获得文件更新包;
解压所述文件更新包,获得数据差异文件;
采用差异算法Courgette将所述第三文件和所述数据差异文件生成更新文件。
对于图8的装置实施例而言,由于其与图4的方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的应用程序的更新设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明的实施例公开了A1、一种应用程序的更新方法,包括:
分别获取第一版本的应用程序的一个或多个第一文件和第二版本的应用程序的一个或多个第二文件;
生成所述一个或多个第一文件与对应的一个或多个第二文件的更新差异文件;
发布所述更新差异文件;所述更新差异文件包括下载地址;
生成配置文件;所述配置文件包括所述第二版本的版本信息和所述更新差异文件的下载地址;
发布所述配置文件。
A2、如A1所述的方法,所述一个或多个第一文件为将所有文件按照所述第一版本的应用程序的结构目录打包生成的一个或多个第一文件;
所述一个或多个第二文件为将所有文件按照第二版本的应用程序按照结构目录打包生成的一个或多个第二文件;
所述第一版本的版本信息高于所述第二版本的版本信息。
A3、如A1所述的方法,所述一个或多个第一文件包括第一基础组件文件和/或第一扩展组件文件;
所述一个或多个第一文件通过以下方式生成:
将第一版本的应用程序的基础组件按照结构目录打包为第一基础组件文件;
将第一版本的应用程序的扩展组件按照结构目录打包为第一扩展组件文件。
A4、如A3所述的方法,所述一个或多个第二文件包括第二基础组件文件和/或第二扩展组件文件;
所述一个或多个第二文件通过以下方式生成:
将第二版本的应用程序的基础组件按照结构目录打包为第二基础组件文件;
将第二版本的应用程序的扩展组件按照结构目录打包为第二扩展组件文件。
A5、如A4所述的方法,所述生成所述一个或多个第一文件与对应的一个或多个第二文件的差异文件的步骤包括:
采用差异算法Courgette计算所述第一基础组件文件和所述第二基础组件文件的基础组件差异文件;
采用差异算法Courgette计算所述第一扩展组件文件和所述第二扩展组件文件的扩展组件差异文件;
将所述基础组件差异文件和/或所述扩展组件差异文件压缩为版本更新包;
将所述版本更新包压缩为更新差异文件。
本发明的实施例还公开了B6、一种应用程序的更新方法,包括:
从服务器侧获取配置文件;所述配置文件包括第二版本的版本信息和更新差异文件的下载地址;
当客户端的版本信息为所述第二版本的版本信息时,从所述下载地址下载所述更新差异文件;
采用预置的一个或多个第三文件和所述更新差异文件生成更新文件;
对所述更新文件进行解压;
安装解压后的更新文件。
B7、如B6所述的方法,所述一个或多个第三文件包括第三基础组件文件和/或第三扩展组件文件;所述更新文件包括基础组件更新包和/或扩展组件更新包;所述更新文件包括基础组件更新包和/或扩展组件更新包;
所述采用预置的一个或多个第三文件和所述更新差异文件生成更新文件的步骤包括:
解压所述更新差异文件,获得版本更新包;
解压所述版本更新包,获得基础组件差异文件和/或扩展组件差异文件;
采用差异算法Courgette将所述第三基础组件文件和所述基础组件差异文件生成基础组件更新包;
采用差异算法Courgette将所述第三扩展组件文件和所述扩展组件差异文件生成扩展组件更新包。
本发明的实施例还公开了C8、一种应用程序的更新方法,包括:
生成第一文件与第二文件的更新差异文件;其中,所述第一文件为第一版本的应用程序的组成文件,所述第二文件为第二版本的应用程序的组成文件;
发布所述更新差异文件;所述更新差异文件包括下载地址;
生成配置文件;所述配置文件包括所述组成文件的版本信息和所述更新差异文件的下载地址;
发布所述配置文件。
C9、如C8所述的方法,所述第一版本的版本信息高于所述第二版本的版本信息。
C10、如C8所述的方法,所述生成第一文件与第二文件的更新差异文件的步骤包括:
采用差异算法Courgette计算第一文件和第二文件的数据差异文件;
将所述数据差异文件压缩为文件更新包;
将所述文件更新包压缩为更新差异文件。
本发明的实施例还公开了D11、一种应用程序的更新方法,包括:
从服务器侧获取配置文件;所述配置文件包括组成文件的版本信息和更新差异文件的下载地址;
当预置的第三文件的版本信息为所述组成文件的版本信息时,从所述下载地址下载所述更新差异文件;
采用所述第三文件和所述更新差异文件生成更新文件;
将所述更新文件替换所述第三文件。
D12、如D11所述的方法,所述采用所述第三文件和所述更新差异文件生成更新文件的步骤包括:
解压所述更新差异文件,获得文件更新包;
解压所述文件更新包,获得数据差异文件;
采用差异算法Courgette将所述第三文件和所述数据差异文件生成更新文件。
本发明的实施例还公开了E13、一种应用程序的更新装置,包括:
第一获取模块,适于分别获取第一版本的应用程序的一个或多个第一文件和第二版本的应用程序的一个或多个第二文件;
第一生成模块,适于生成所述一个或多个第一文件与对应的一个或多个第二文件的更新差异文件;
第一发布模块,适于发布所述更新差异文件;所述更新差异文件包括下载地址;
第二生成模块,适于生成配置文件;所述配置文件包括所述第二版本的版本信息和所述更新差异文件的下载地址;
第二发布模块,适于发布所述配置文件。
E14、如E13所述的装置,所述一个或多个第一文件为将所有文件按照所述第一版本的应用程序的结构目录打包生成的一个或多个第一文件;
所述一个或多个第二文件为将所有文件按照第二版本的应用程序按照结构目录打包生成的一个或多个第二文件;
所述第一版本的版本信息高于所述第二版本的版本信息。
E15、如E13所述的装置,所述一个或多个第一文件包括第一基础组件文件和/或第一扩展组件文件;
所述一个或多个第一文件通过以下方式生成:
将第一版本的应用程序的基础组件按照结构目录打包为第一基础组件文件;
将第一版本的应用程序的扩展组件按照结构目录打包为第一扩展组件文件。
E16、如E15所述的装置,所述一个或多个第二文件包括第二基础组件文件和/或第二扩展组件文件;
所述一个或多个第二文件通过以下方式生成:
将第二版本的应用程序的基础组件按照结构目录打包为第二基础组件文件;
将第二版本的应用程序的扩展组件按照结构目录打包为第二扩展组件文件。
E17、如E16所述的装置,所述第一生成模块还适于:
采用差异算法Courgette计算所述第一基础组件文件和所述第二基础组件文件的基础组件差异文件;
采用差异算法Courgette计算所述第一扩展组件文件和所述第二扩展组件文件的扩展组件差异文件;
将所述基础组件差异文件和/或所述扩展组件差异文件压缩为版本更新包;
将所述版本更新包压缩为更新差异文件。
本发明的实施例还公开了F18、一种应用程序的更新装置,包括:
第二获取模块,适于从服务器侧获取配置文件;所述配置文件包括第二版本的版本信息和更新差异文件的下载地址;
第一下载模块,适于在客户端的版本信息为所述第二版本的版本信息时,从所述下载地址下载所述更新差异文件;
第三生成模块,适于采用预置的一个或多个第三文件和所述更新差异文件生成更新文件;
解压模块,适于对所述更新文件进行解压;
安装模块,适于安装解压后的更新文件。
F19、如F18所述的装置,所述一个或多个第三文件包括第三基础组件文件和/或第三扩展组件文件;所述更新文件包括基础组件更新包和/或扩展组件更新包;所述更新文件包括基础组件更新包和/或扩展组件更新包;
所述第三生成模块还适于:
解压所述更新差异文件,获得版本更新包;
解压所述版本更新包,获得基础组件差异文件和/或扩展组件差异文件;
采用差异算法Courgette将所述第三基础组件文件和所述基础组件差异文件生成基础组件更新包;
采用差异算法Courgette将所述第三扩展组件文件和所述扩展组件差异文件生成扩展组件更新包。
本发明的实施例还公开了G20、一种应用程序的更新装置,包括:
第四生成模块,适于生成第一文件与第二文件的更新差异文件;其中,所述第一文件为第一版本的应用程序的组成文件,所述第二文件为第二版本的应用程序的组成文件;
第三发布模块,适于发布所述更新差异文件;所述更新差异文件包括下载地址;
第五生成模块,适于生成配置文件;所述配置文件包括所述组成文件的版本信息和所述更新差异文件的下载地址;
第四发布模块,适于发布所述配置文件。
G21、如G20所述的装置,所述第一版本的版本信息高于所述第二版本的版本信息。
G22、如G20所述的装置,所述第四生成模块还适于:
采用差异算法Courgette计算第一文件和第二文件的数据差异文件;
将所述数据差异文件压缩为文件更新包;
将所述文件更新包压缩为更新差异文件。
本发明的实施例还公开了H23、一种应用程序的更新装置,包括:
第三获取模块,适于从服务器侧获取配置文件;所述配置文件包括组成文件的版本信息和更新差异文件的下载地址;
第二下载模块,适于在预置的第三文件的版本信息为所述组成文件的版本信息时,从所述下载地址下载所述更新差异文件;
第六生成模块,适于采用所述第三文件和所述更新差异文件生成更新文件;
替换模块,适于将所述更新文件替换所述第三文件。
H24、如H23所述的装置,所述第六生成模块还适于:
解压所述更新差异文件,获得文件更新包;
解压所述文件更新包,获得数据差异文件;
采用差异算法Courgette将所述第三文件和所述数据差异文件生成更新文件。
Claims (10)
1.一种应用程序的更新方法,包括:
分别获取第一版本的应用程序的一个或多个第一文件和第二版本的应用程序的一个或多个第二文件;
生成所述一个或多个第一文件与对应的一个或多个第二文件的更新差异文件;
发布所述更新差异文件;所述更新差异文件包括下载地址;
生成配置文件;所述配置文件包括所述第二版本的版本信息和所述更新差异文件的下载地址;
发布所述配置文件。
2.如权利要求1所述的方法,其特征在于,所述一个或多个第一文件为将所有文件按照所述第一版本的应用程序的结构目录打包生成的一个或多个第一文件;
所述一个或多个第二文件为将所有文件按照第二版本的应用程序按照结构目录打包生成的一个或多个第二文件;
所述第一版本的版本信息高于所述第二版本的版本信息。
3.如权利要求1所述的方法,其特征在于,所述一个或多个第一文件包括第一基础组件文件和/或第一扩展组件文件;
所述一个或多个第一文件通过以下方式生成:
将第一版本的应用程序的基础组件按照结构目录打包为第一基础组件文件;
将第一版本的应用程序的扩展组件按照结构目录打包为第一扩展组件文件。
4.一种应用程序的更新方法,包括:
从服务器侧获取配置文件;所述配置文件包括第二版本的版本信息和更新差异文件的下载地址;
当客户端的版本信息为所述第二版本的版本信息时,从所述下载地址下载所述更新差异文件;
采用预置的一个或多个第三文件和所述更新差异文件生成更新文件;
对所述更新文件进行解压;
安装解压后的更新文件。
5.一种应用程序的更新方法,包括:
生成第一文件与第二文件的更新差异文件;其中,所述第一文件为第一版本的应用程序的组成文件,所述第二文件为第二版本的应用程序的组成文件;
发布所述更新差异文件;所述更新差异文件包括下载地址;
生成配置文件;所述配置文件包括所述组成文件的版本信息和所述更新差异文件的下载地址;
发布所述配置文件。
6.一种应用程序的更新方法,包括:
从服务器侧获取配置文件;所述配置文件包括组成文件的版本信息和更新差异文件的下载地址;
当预置的第三文件的版本信息为所述组成文件的版本信息时,从所述下载地址下载所述更新差异文件;
采用所述第三文件和所述更新差异文件生成更新文件;
将所述更新文件替换所述第三文件。
7.一种应用程序的更新装置,包括:
第一获取模块,适于分别获取第一版本的应用程序的一个或多个第一文件和第二版本的应用程序的一个或多个第二文件;
第一生成模块,适于生成所述一个或多个第一文件与对应的一个或多个第二文件的更新差异文件;
第一发布模块,适于发布所述更新差异文件;所述更新差异文件包括下载地址;
第二生成模块,适于生成配置文件;所述配置文件包括所述第二版本的版本信息和所述更新差异文件的下载地址;
第二发布模块,适于发布所述配置文件。
8.一种应用程序的更新装置,包括:
第二获取模块,适于从服务器侧获取配置文件;所述配置文件包括第二版本的版本信息和更新差异文件的下载地址;
第一下载模块,适于在客户端的版本信息为所述第二版本的版本信息时,从所述下载地址下载所述更新差异文件;
第三生成模块,适于采用预置的一个或多个第三文件和所述更新差异文件生成更新文件;
解压模块,适于对所述更新文件进行解压;
安装模块,适于安装解压后的更新文件。
9.一种应用程序的更新装置,包括:
第四生成模块,适于生成第一文件与第二文件的更新差异文件;其中,所述第一文件为第一版本的应用程序的组成文件,所述第二文件为第二版本的应用程序的组成文件;
第三发布模块,适于发布所述更新差异文件;所述更新差异文件包括下载地址;
第五生成模块,适于生成配置文件;所述配置文件包括所述组成文件的版本信息和所述更新差异文件的下载地址;
第四发布模块,适于发布所述配置文件。
10.一种应用程序的更新装置,包括:
第三获取模块,适于从服务器侧获取配置文件;所述配置文件包括组成文件的版本信息和更新差异文件的下载地址;
第二下载模块,适于在预置的第三文件的版本信息为所述组成文件的版本信息时,从所述下载地址下载所述更新差异文件;
第六生成模块,适于采用所述第三文件和所述更新差异文件生成更新文件;
替换模块,适于将所述更新文件替换所述第三文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310714581.0A CN103699410B (zh) | 2013-12-20 | 2013-12-20 | 一种应用程序的更新方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310714581.0A CN103699410B (zh) | 2013-12-20 | 2013-12-20 | 一种应用程序的更新方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699410A true CN103699410A (zh) | 2014-04-02 |
CN103699410B CN103699410B (zh) | 2017-05-24 |
Family
ID=50360949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310714581.0A Active CN103699410B (zh) | 2013-12-20 | 2013-12-20 | 一种应用程序的更新方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103699410B (zh) |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199666A (zh) * | 2014-09-09 | 2014-12-10 | 北京京东尚科信息技术有限公司 | 一种应用程序动态配置方法及装置 |
CN104391728A (zh) * | 2014-12-12 | 2015-03-04 | 北京奇虎科技有限公司 | 软件升级差量包获取方法和相应的升级方法以及装置 |
CN104965720A (zh) * | 2014-07-03 | 2015-10-07 | 腾讯科技(深圳)有限公司 | 应用安装方法和装置 |
CN105739971A (zh) * | 2016-01-20 | 2016-07-06 | 网易(杭州)网络有限公司 | 校验文件的生成、使用方法及装置 |
CN106155651A (zh) * | 2015-03-31 | 2016-11-23 | 广州四三九九信息科技有限公司 | 应用程序版本的自动化发布及更新的方法和*** |
CN106708581A (zh) * | 2016-12-27 | 2017-05-24 | 北京奇虎科技有限公司 | 应用的更新包生成方法、装置和应用的更新方法、装置 |
CN106775802A (zh) * | 2016-11-14 | 2017-05-31 | 福建天泉教育科技有限公司 | 海量小文件快速更新的方法及其*** |
CN106775827A (zh) * | 2016-11-25 | 2017-05-31 | 广东欧珀移动通信有限公司 | 一种应用程序更新方法及装置、计算机设备 |
CN106886433A (zh) * | 2015-12-16 | 2017-06-23 | 阿里巴巴集团控股有限公司 | 客户端软件的更新方法和装置 |
CN107124446A (zh) * | 2017-04-01 | 2017-09-01 | 北京五八信息技术有限公司 | 应用程序下载方法、服务器及终端 |
CN107239299A (zh) * | 2017-04-28 | 2017-10-10 | 北京五八信息技术有限公司 | 插件升级方法及装置 |
CN107347101A (zh) * | 2016-08-19 | 2017-11-14 | 武汉英泰斯特电子技术有限公司 | 一种车联网can数据采集方法 |
CN107368290A (zh) * | 2016-05-12 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 确定增量数据方法及装置、更新数据包方法、装置及*** |
CN107643920A (zh) * | 2016-07-20 | 2018-01-30 | 平安科技(深圳)有限公司 | 应用软件更新方法和装置 |
CN107831721A (zh) * | 2017-10-24 | 2018-03-23 | 北京天地玛珂电液控制***有限公司 | 一种控制器程序升级装置和方法 |
CN108197020A (zh) * | 2017-12-28 | 2018-06-22 | 掌阅科技股份有限公司 | 插件校验方法、电子设备及计算机存储介质 |
WO2018177193A1 (zh) * | 2017-03-27 | 2018-10-04 | 中兴通讯股份有限公司 | 一种软件升级方法及装置 |
CN108710500A (zh) * | 2018-05-23 | 2018-10-26 | 北京五八信息技术有限公司 | 资源发布方法、更新方法和装置 |
CN109298881A (zh) * | 2018-08-30 | 2019-02-01 | 百度在线网络技术(北京)有限公司 | 自动打包数据方法、装置、设备及计算机可读存储介质 |
CN109308189A (zh) * | 2018-09-27 | 2019-02-05 | 珠海市君天电子科技有限公司 | 一种配置文件更新方法、装置及电子设备 |
CN109309725A (zh) * | 2018-10-25 | 2019-02-05 | 深圳市腾讯信息技术有限公司 | 应用下载和更新方法、装置、计算机设备及存储介质 |
CN109375932A (zh) * | 2018-09-18 | 2019-02-22 | 广州虎牙信息科技有限公司 | 一种app热修复脚本构建的方法、装置、终端及存储介质 |
CN109672534A (zh) * | 2017-10-16 | 2019-04-23 | 腾讯科技(深圳)有限公司 | 网络资源的处理方法、装置、存储介质和电子装置 |
CN109739551A (zh) * | 2018-12-29 | 2019-05-10 | 上海连尚网络科技有限公司 | 应用程序发布***、方法及装置,计算设备及存储介质 |
CN109766131A (zh) * | 2017-11-06 | 2019-05-17 | 上海宝信软件股份有限公司 | 基于多线程技术实现软件智能化自动升级的***及方法 |
CN110764815A (zh) * | 2019-09-26 | 2020-02-07 | 北京网聘咨询有限公司 | Web API项目发布方法及装置 |
CN111240767A (zh) * | 2020-02-04 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 组件和页面加载方法、装置、电子设备及存储介质 |
CN112068870A (zh) * | 2020-08-11 | 2020-12-11 | 广州点云科技有限公司 | 一种程序差异增量升级的方法 |
CN112579072A (zh) * | 2020-12-21 | 2021-03-30 | 深圳市欢太科技有限公司 | 浏览器打包方法、装置、存储介质以及终端 |
CN112799702A (zh) * | 2021-02-01 | 2021-05-14 | 北京百家科技集团有限公司 | 软件在线升级方法、相关设备及存储介质 |
CN113050972A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 一种***升级方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5004857B2 (ja) * | 2008-04-18 | 2012-08-22 | 日本電信電話株式会社 | アプリケーション更新情報提供システム、及びアプリケーション更新情報提供方法 |
CN102890636A (zh) * | 2011-07-20 | 2013-01-23 | 中兴通讯股份有限公司 | 安卓***下的固件升级方法及*** |
CN102799445A (zh) * | 2012-05-03 | 2012-11-28 | 陈昊 | 一种基于Android平台的应用升级方法及*** |
-
2013
- 2013-12-20 CN CN201310714581.0A patent/CN103699410B/zh active Active
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104965720A (zh) * | 2014-07-03 | 2015-10-07 | 腾讯科技(深圳)有限公司 | 应用安装方法和装置 |
CN104965720B (zh) * | 2014-07-03 | 2018-10-19 | 腾讯科技(深圳)有限公司 | 应用安装方法和装置 |
CN104199666B (zh) * | 2014-09-09 | 2018-05-29 | 北京京东尚科信息技术有限公司 | 一种应用程序动态配置方法及装置 |
CN104199666A (zh) * | 2014-09-09 | 2014-12-10 | 北京京东尚科信息技术有限公司 | 一种应用程序动态配置方法及装置 |
CN104391728A (zh) * | 2014-12-12 | 2015-03-04 | 北京奇虎科技有限公司 | 软件升级差量包获取方法和相应的升级方法以及装置 |
CN104391728B (zh) * | 2014-12-12 | 2018-01-16 | 北京奇虎科技有限公司 | 软件升级差量包获取方法和相应的升级方法以及装置 |
CN106155651B (zh) * | 2015-03-31 | 2019-03-01 | 广州四三九九信息科技有限公司 | 应用程序版本的自动化发布及更新的方法和*** |
CN106155651A (zh) * | 2015-03-31 | 2016-11-23 | 广州四三九九信息科技有限公司 | 应用程序版本的自动化发布及更新的方法和*** |
CN106886433A (zh) * | 2015-12-16 | 2017-06-23 | 阿里巴巴集团控股有限公司 | 客户端软件的更新方法和装置 |
CN105739971B (zh) * | 2016-01-20 | 2019-03-08 | 网易(杭州)网络有限公司 | 校验文件的生成、使用方法及装置 |
CN105739971A (zh) * | 2016-01-20 | 2016-07-06 | 网易(杭州)网络有限公司 | 校验文件的生成、使用方法及装置 |
CN107368290A (zh) * | 2016-05-12 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 确定增量数据方法及装置、更新数据包方法、装置及*** |
CN107643920A (zh) * | 2016-07-20 | 2018-01-30 | 平安科技(深圳)有限公司 | 应用软件更新方法和装置 |
CN107347101B (zh) * | 2016-08-19 | 2018-05-04 | 武汉英泰斯特电子技术有限公司 | 一种车联网can数据采集方法 |
CN107347101A (zh) * | 2016-08-19 | 2017-11-14 | 武汉英泰斯特电子技术有限公司 | 一种车联网can数据采集方法 |
CN106775802A (zh) * | 2016-11-14 | 2017-05-31 | 福建天泉教育科技有限公司 | 海量小文件快速更新的方法及其*** |
CN106775827B (zh) * | 2016-11-25 | 2020-05-12 | Oppo广东移动通信有限公司 | 一种应用程序更新方法及装置、计算机设备 |
CN106775827A (zh) * | 2016-11-25 | 2017-05-31 | 广东欧珀移动通信有限公司 | 一种应用程序更新方法及装置、计算机设备 |
CN106708581A (zh) * | 2016-12-27 | 2017-05-24 | 北京奇虎科技有限公司 | 应用的更新包生成方法、装置和应用的更新方法、装置 |
WO2018177193A1 (zh) * | 2017-03-27 | 2018-10-04 | 中兴通讯股份有限公司 | 一种软件升级方法及装置 |
CN107124446A (zh) * | 2017-04-01 | 2017-09-01 | 北京五八信息技术有限公司 | 应用程序下载方法、服务器及终端 |
CN107239299A (zh) * | 2017-04-28 | 2017-10-10 | 北京五八信息技术有限公司 | 插件升级方法及装置 |
CN107239299B (zh) * | 2017-04-28 | 2020-07-17 | 北京五八信息技术有限公司 | 插件升级方法及装置 |
CN109672534A (zh) * | 2017-10-16 | 2019-04-23 | 腾讯科技(深圳)有限公司 | 网络资源的处理方法、装置、存储介质和电子装置 |
CN109672534B (zh) * | 2017-10-16 | 2021-08-20 | 腾讯科技(深圳)有限公司 | 网络资源的处理方法、装置、存储介质和电子装置 |
CN107831721A (zh) * | 2017-10-24 | 2018-03-23 | 北京天地玛珂电液控制***有限公司 | 一种控制器程序升级装置和方法 |
CN109766131A (zh) * | 2017-11-06 | 2019-05-17 | 上海宝信软件股份有限公司 | 基于多线程技术实现软件智能化自动升级的***及方法 |
CN108197020A (zh) * | 2017-12-28 | 2018-06-22 | 掌阅科技股份有限公司 | 插件校验方法、电子设备及计算机存储介质 |
CN108710500A (zh) * | 2018-05-23 | 2018-10-26 | 北京五八信息技术有限公司 | 资源发布方法、更新方法和装置 |
CN109298881A (zh) * | 2018-08-30 | 2019-02-01 | 百度在线网络技术(北京)有限公司 | 自动打包数据方法、装置、设备及计算机可读存储介质 |
CN109375932A (zh) * | 2018-09-18 | 2019-02-22 | 广州虎牙信息科技有限公司 | 一种app热修复脚本构建的方法、装置、终端及存储介质 |
CN109308189A (zh) * | 2018-09-27 | 2019-02-05 | 珠海市君天电子科技有限公司 | 一种配置文件更新方法、装置及电子设备 |
CN109309725A (zh) * | 2018-10-25 | 2019-02-05 | 深圳市腾讯信息技术有限公司 | 应用下载和更新方法、装置、计算机设备及存储介质 |
CN109309725B (zh) * | 2018-10-25 | 2021-10-08 | 深圳市腾讯信息技术有限公司 | 应用下载和更新方法、装置、计算机设备及存储介质 |
CN109739551A (zh) * | 2018-12-29 | 2019-05-10 | 上海连尚网络科技有限公司 | 应用程序发布***、方法及装置,计算设备及存储介质 |
CN110764815A (zh) * | 2019-09-26 | 2020-02-07 | 北京网聘咨询有限公司 | Web API项目发布方法及装置 |
CN111240767A (zh) * | 2020-02-04 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 组件和页面加载方法、装置、电子设备及存储介质 |
CN112068870A (zh) * | 2020-08-11 | 2020-12-11 | 广州点云科技有限公司 | 一种程序差异增量升级的方法 |
CN112579072A (zh) * | 2020-12-21 | 2021-03-30 | 深圳市欢太科技有限公司 | 浏览器打包方法、装置、存储介质以及终端 |
CN112799702A (zh) * | 2021-02-01 | 2021-05-14 | 北京百家科技集团有限公司 | 软件在线升级方法、相关设备及存储介质 |
CN113050972A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 一种***升级方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103699410B (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103699410A (zh) | 一种应用程序的更新方法和装置 | |
US6151708A (en) | Determining program update availability via set intersection over a sub-optical pathway | |
CN102289378B (zh) | 自动生成应用程序的方法 | |
CN105045631A (zh) | 一种升级客户端侧应用程序的方法和装置 | |
US10235374B2 (en) | Key-value store for managing user files based on pairs of key-value pairs | |
US11979300B2 (en) | Standardized format for containerized applications | |
CN103002010A (zh) | 一种基于增量数据的数据更新方法、装置和*** | |
CN105389191A (zh) | 一种基于局域网的软件升级方法、装置和*** | |
US10560540B2 (en) | Optimizing provisioning of Java-based web applications on PaaS like cloud foundry | |
CN111176717B (zh) | 生成安装包的方法、装置及电子设备 | |
US11640441B2 (en) | Page displaying method and device, computer-readable storage medium and electronic device | |
CN101944032A (zh) | 一种微件更新的方法及客户端、服务器及*** | |
US9614901B2 (en) | Data infrastructure for providing interconnectivity between platforms, devices, and operating systems | |
US11474796B1 (en) | Build system for distributed applications | |
CN110162544A (zh) | 异构数据源数据获取方法及装置 | |
CN104461567A (zh) | 软件包的发布方法及*** | |
CN105553727A (zh) | 一种更新配置信息的方法、装置及*** | |
CN103377064A (zh) | 一种页面脚本的加载方法及装置 | |
US8341096B2 (en) | System, method and computer program product for incremental learning of system log formats | |
CN105095367A (zh) | 一种客户端数据的采集方法和装置 | |
US20150199408A1 (en) | Systems and methods for a high speed query infrastructure | |
CN105049514A (zh) | 一种文件下载方法和装置 | |
CN109145236A (zh) | 页面文件处理方法、装置及*** | |
CN104361007A (zh) | 浏览器及其收藏夹的处理方法 | |
CN104361004A (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220725 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |