一种应用软件升级的方法及装置制造方法

文档序号:7778855阅读:283来源:国知局
一种应用软件升级的方法及装置制造方法
【专利摘要】本发明公开了一种应用软件升级的方法及装置,所述方法包括:在客户端侧向云端服务器发送获取增量升级包的升级请求消息;在客户端侧从云端服务器中下载增量升级包,增量升级包由云端服务器根据应用软件的描述信息在云端服务器的增量升级包数据库中匹配得到;在客户端侧将下载的得到增量升级包和应用软件的当前版本的安装包进行组合,得到应用软件的目标版本的安装包;以及在客户端侧安装应用软件的目标版本的安装包,以完成应用软件由当前版本升级到目标版本的升级操作。由于客户端只需要下载一个数据量较小的增量升级包,而不是完整的目标版本的安装包,大大节省了升级所耗费的时间和升级所耗费的流量,从而提升了用户体验。
【专利说明】一种应用软件升级的方法及装置
【技术领域】
[0001]本发明属于计算机【技术领域】,尤其涉及一种应用软件升级的方法及装置。
【背景技术】
[0002]现有技术中,安卓智能手机安装的各种应用软件,是通过应用商店、浏览器或PC上助手下载并安装。当应用软件的开发者(或开发商)对应用软件进行版本更新,手机上的低版本应用软件需要升级到高版本时,传统的技术方案是从服务端下载完整的高版本安装包到手机,然后调用手机上的安装程序进行高版本应用软件的安装。现有技术存在如下缺陷:
[0003]升级时,高版本的安装包必须完整的下载,用户需要消耗较多的手机流量以及等待更长的下载时间,在手机流量有限的情况下,升级一个较大的应用软件时,这种情况就尤为明显。

【发明内容】

[0004]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用软件升级的方法及装置。
[0005]依据本发明的一个方面,提供了一种应用软件升级的方法,应用于客户端侧,所述方法包括:在所述客户端侧向云端服务器发送获取增量升级包的升级请求消息,所述升级请求消息包括:应用软件的描述信息;在所述客户端侧从所述云端服务器中下载增量升级包,所述增量升级包由所述云端服务器根据所述应用软件的描述信息在云端服务器的增量升级包数据库中匹配得到;在所述客户端侧将下载的得到所述增量升级包和所述应用软件的当前版本的安装包进行组合,得到所述应用软件的目标版本的安装包;以及在所述客户端侧安装所述应用软件的目标版本的安装包,以完成所述应用软件由当前版本升级到目标版本的升级操作。
[0006]可选地,所述方法还包括:对所述客户端中已安装的应用软件进行版本检测;在客户端侧当检测到多个应用软件需要升级时,根据应用软件的标识信息、应用软件的当前版本信息以及应用软件的目标版本信息生成应用软件的描述信息。
[0007]可选地,所述方法还包括:在所述客户端侧获取所述应用软件的当前版本的安装包。
[0008]依据本发明的另一个方面,还提供了一种应用软件升级的方法,应用于云端服务器侧,所述方法包括:在所述云端服务器侧接收客户端发送的获取增量升级包的升级请求消息,所述升级请求消息包括:应用软件的描述信息;在所述云端服务器侧的增量升级包数据库中匹配得到与所述应用软件的描述信息对应的增量升级包;以及在所述云端服务器侧将匹配得到的增量升级包提供给所述客户端下载,由所述客户端根据所述升级请求消息从所述云端服务器下载所述增量升级包。
[0009]可选地,所述方法还包括:在所述云端服务器侧采用二进制比较算法预先计算出应用软件的高版本的安装包和低版本的安装包之间的一个或多个差异文件,并由计算得到的一个或多个差异文件生成由低版本升级到高版本所需的增量升级包。
[0010]可选地,所述方法还包括:获取应用软件的高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息;获取应用软件的低版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息;根据高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息,以及低版本的安装包的所有安装文件的标识信息和所有安装文件的校验信息进行匹配处理,得到所述应用软件由低版本升级到高版本所需的增量升级包。
[0011]依据本发明的另一个方面,还提供了一种客户端,其包括:升级请求模块,用于向云端服务器发送获取增量升级包的升级请求消息,所述升级请求消息包括:应用软件的描述信息;增量升级包下载模块,用于从所述云端服务器中下载增量升级包,所述增量升级包由所述云端服务器根据所述应用软件的描述信息在云端服务器的增量升级包数据库中匹配得到;安装包合并模块,用于将下载的得到所述增量升级包和所述应用软件的当前版本的安装包进行组合,得到所述应用软件的目标版本的安装包;以及应用软件升级模块,用于在所述客户端上安装所述应用软件的目标版本的安装包,以完成所述应用软件由当前版本升级到目标版本的升级操作。
[0012]可选地,所述客户端还包括:版本检测模块,用于对所述客户端中已安装的应用软件进行版本检测;信息生成模块,用于当检测到多个应用软件需要升级时,根据应用软件的标识信息、应用软件的当前版本信息以及应用软件的目标版本信息生成升级请求消息。
[0013]依据本发明的另一个方面,还提供了一种云端服务器,其包括:升级请求接收模块,用于接收客户端发送的获取增量升级包的升级请求消息,所述升级请求消息包括:应用软件的描述信息;增量升级包匹配模块,用于在所述云端服务器侧的增量升级包数据库中匹配得到与所述应用软件的描述信息对应的增量升级包;以及增量升级包发送模块,用于在所述云端服务器侧将匹配得到的增量升级包提供给所述客户端下载,由所述客户端根据所述升级请求消息从所述云端服务器下载所述增量升级包。
[0014]可选地,所述云端服务器还包括:文件获取模块,用于获取应用软件的高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息;以及获取应用软件的低版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息;增量升级包生成模块,用于根据高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息,以及低版本的安装包的所有安装文件的标识信息和所有安装文件的校验信息进行匹配处理,得到所述应用软件由低版本升级到高版本所需的增量升级包。
[0015]由上述技术方案可知,本发明的实施例具有如下有益效果:当客户端对已安装应用软件进行升级时,客户端不需要从云端服务器侧下载完整的目标版本的应用软件的安装包,而是在云端服务器侧通过算法计算出应用软件的安装包的高版本和低版本的一个或多个差异文件,并将一个或多个差异文件生成该应用软件的多种版本的增量升级包,云端服务器可以根据来自客户端的升级请求消息,匹配得到客户端此次升级所需的增量升级包,客户端只要下载该增量升级包,并在客户端侧利用增量升级包和当前版本的安装包进行组合,可以得到该应用软件的目标版本的安装包,然后在客户端侧安装应用软件的目标版本的安装包,以完成应用软件由当前版本升级到目标版本的升级操作,由于客户端只需要下载一个数据量较小的增量升级包,而不是完整的目标版本的安装包,大大节省了升级所耗费的时间和升级所耗费的流量,从而提升了用户体验。
【专利附图】

【附图说明】
[0016]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0017]图1示出了根据本发明的实施例一中的应用于客户端侧的应用软件升级的方法的流程图;
[0018]图2示出了根据本发明的实施例二中应用于云端服务器侧的应用软件升级的方法的流程图;
[0019]图3示出了根据本发明的实施例三中客户端的结构框图;以及
[0020]图4示出了根据本发明的实施例四中云端服务器的结构框图。
【具体实施方式】
[0021]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0022]实施例一
[0023]在本发明的实施例一客户端侧向云端服务器请求下载应用软件的增量升级包,然后在客户端侧将下载的增量升级包和应用软件的当前版本的安装包进行组合,得到应用软件的目标版本的安装包,然后在客户端侧安装应用软件的目标版本的安装包,以完成应用软件由当前版本升级到目标版本的升级操作,由于增量升级包相对于应用软件的目标版本的安装包在数据量上小了很多,从而可以很大程度上减少升级所耗费的客户端的上网流量。
[0024]如图1所示,本发明的实施例一提供了一种应用软件升级的方法,其应用于客户端侧,该方法100包括:
[0025]步骤S101、在客户端侧向云端服务器发送获取增量升级包的升级请求消息,该升级请求消息包括:应用软件的描述信息。
[0026]本发明的实施例中,客户端可以是计算设备,例如计算机,但不仅限于此。该客户端还可以是其他可供用户使用、能够安装各种应用软件的终端设备,例如手机等终端设备或其他智能终端等。
[0027]在本发明的实施例中,云端服务器具有数据存储以及处理的功能,例如在云端服务器的增量升级包数据库中存储有多个增量升级包,该云端服务器可以根据客户端的升级请求消息匹配得到与升级请求消息对应的增量升级包,并提供给客户端下载。
[0028]在本发明的实施例中,应用软件的描述信息包括:应用软件的名称和应用软件的安装包的校验值。其中,应用软件(application software)是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,包括办公类软件、图像处理软件、媒体播放器、聊天软件、安全软件等。应用软件的名称例如“360手机助手”;应用软件的安装包是指在移动设备上安装的当前版本的应用软件的安装包,该安装包的校验值可以采用如下方式计算得到:采用哈希算法,计算应用软件的当前版本的安装包中的内容的校验值,然后将计算得到的校验值作为应用软件的安装包的校验值,其中该校验值可以是MD5值,当然也并不限于此。。
[0029]步骤S103、在客户端侧从云端服务器中下载增量升级包,该增量升级包由云端服务器根据应用软件的描述信息在云端服务器的增量升级包数据库中匹配得到。
[0030]在云端服务器的增量升级包数据库中可以存储有多种应用软件的多个版本的增量升级包,每个增量升级包的描述信息至少包括:应用软件的名称和应用软件的安装包的校验值。由此,云端服务器可以根据升级请求中的应用软件的描述信息与增量升级包数据库中的增量升级包的描述信息进行匹配,如果能够在云端服务器中匹配得到与升级请求消息对应的增量升级包,即应用软件的名称和应用软件的安装包的校验值都能匹配上,则表示客户端侧可以通过该增量升级包完成应用软件由当前版本升级到目标版本,由云端服务器将匹配得到的增量升级包提供给客户端下载。
[0031]下面介绍云端服务器侧如何生成应用软件的增量升级包。以客户端的操作系统为安卓(Andriod)操作系统为例,Andriod软件的安装包是apk格式的文件,是一个zip压缩包。为了得到增量升级包,云端服务器侧可以采用二进制比较算法(例如bsdiff算法,一种二进制差分算法)计算得到该软件的两个不同版本的差异二进制文件,生成增量升级包,例如该增量升级包的文件名可以是“XX.patch”,当然也并不限于此。云端服务器将生成的增量升级包存储在增量升级包数据库中,供客户端下载。例如:应用软件的版本号包括1.0,1.1U.2,2.0,2.1,3.0,在云端服务器可以根据版本号为1.0的安装包中的所有安装文件和版本号为3.0的安装包中的所有安装文件,利用二进制比较算法,计算得到应用软件的两个不同版本的差异二进制文件,并利用计算得到的差异二进制文件生成该应用软件由1.0升级到3.0所需的增量升级包。步骤S105、在客户端侧将下载的增量升级包和应用软件的当前版本的安装包进行组合,得到应用软件的目标版本的安装包。
[0032]也就是,在客户端侧采用补丁合成工具将下载的增量升级包和应用软件的当前版本的安装包进行组合。具体地,在客户端侧获取应用软件的当前版本的安装包,例如通过系统API的PackageInfo类获取应用软件的当前版本的安装包,然后将增量升级包(相当于差异二进制文件)采用补丁合成工具合入到应用软件的当前版本的安装包,从而生成应用软件的目标版本的安装包。上述补丁合成工具可以采用差分压缩算法,例如bspatch算法或Courgette算法,当然也并不限于此。例如:客户端侧从云端服务器中下载该应用软件的版本由1.0升级到3.0所需的增量升级包,然后采用差分压缩算法将该增量升级包和该应用软件的版本号为1.0的安装包进行组合,得到该应用软件的版本号为3.0的安装包。
[0033]以客户端的操作系统为安卓(Andriod)操作系统为例,在本发明的实施例中,客户端侧可以通过安卓操作系统中的JNI (Java Native Interface)调用C语言编译的差分压缩算法,来实现对下载的增量升级包和应用软件的当前版本的安装包进行组合以得到应用软件的目标版本的安装包,由于C语言编译的差分压缩算法的处理速度相对于Java语言编译的算法的处理速度上会提高,从而可以有效提高客户端侧对增量升级包和安装包进行组合处理的速度。[0034]步骤S107、在客户端侧安装应用软件的目标版本的安装包,以完成应用软件由当前版本升级到目标版本的升级操作。
[0035]通过上述步骤获取了已安装的应用软件的低版本的安装包,并组合增量升级包后,得到目标版本的安装包,然后通过步骤S107自动安装目标版本的安装包,从而实现将应用软件由当前版本升级到目标版本。
[0036]可选地,在本发明的实施例一中,还可以由客户端侧自动检测是否需要进行软件的升级操作,也就是,在步骤SlOl之前,该方法100还包括:步骤S109和步骤S111,其中在步骤S109中,对客户端中已安装的应用软件进行版本检测。
[0037]在客户端开机之后延迟一段时间对客户端中已安装的应用软件进行版本检测,然后每隔一段预置时间对客户端中已安装的应用软件进行版本检测。这种版本检测是通过与在线的云端服务器的数据库比对来实现的,如果当前客户端中安装的应用软件的版本信息与数据库中最新的软件的版本信息不一致,则表示当前客户端中安装的应用软件需要升级。
[0038]当检测到多个应用软件需要升级时,进入到步骤S111、在客户端侧根据应用软件的名称和应用软件安装包的校验值生成升级请求消息。
[0039]在本发明的实施例中,云端服务器可以预先将应用软件的低版本的安装包与高版本的安装包做差分处理,得到更新的部分的增量升级包,例如低版本的安装包的数据量有5M (兆),高版本的安装包的数据量有SM,更新的部分的增量升级包的数据量可能只有3M左右(这里需要说明的是,得到的增量升级包大小并不是简单的相减,这里只是为了举例说明),因此,客户端在进行软件升级操作时,实际上只需要下载数据量为3M的增量升级包,而不需要下载完整的数据量为8M的高版本的安装包,从而可以很大程度上减少升级所耗费的客户端的上网流量,其中高版本的版本号大于低版本的版本号。
[0040]实施例二
[0041]在本发明的实施例二中云端服务器根据客户端的升级请求消息,将应用软件的增量升级包供客户端下载,客户端侧可以利用增量升级包完成应用软件由当前版本升级到目标版本的升级操作,由于增量升级包相对于应用软件的目标版本的安装包在数据量上小了很多,从而可以很大程度上减少升级所耗费的客户端的上网流量。
[0042]如图2所示,本发明的实施例二提供了一种应用软件升级的方法,应用于云端服务器侧,所述方法包括:
[0043]步骤S201、在云端服务器侧接收客户端发送的获取增量升级包的升级请求消息,升级请求消息包括:应用软件的描述信息;
[0044]在本发明的实施例中,应用软件的描述信息包括:应用软件的名称和应用软件的安装包的校验值。其中,应用软件(application software)是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,包括办公类软件、图像处理软件、媒体播放器、聊天软件、安全软件等。应用软件的名称例如“360手机助手”;应用软件的安装包是指在移动设备上安装的当前版本的应用软件的安装包,该安装包的校验值可以采用如下方式计算得到:采用哈希算法,计算应用软件的当前版本的安装包中的内容的校验值,然后将计算得到的校验值作为应用软件的安装包的校验值,其中该校验值可以是MD5值,当然也并不限于此。步骤S203、在云端服务器侧的增量升级包数据库中匹配得到与应用软件的描述信息对应的增量升级包。
[0045]在云端服务器的增量升级包数据库中可以存储有多种应用软件的多个版本的增量升级包,每个应用软件的描述信息至少包括:应用软件的名称和应用软件的安装包的校验值。由此,云端服务器可以根据升级请求中的应用软件的描述信息与增量升级包数据库中的增量升级包进行匹配,如果能够在云端服务器中匹配得到与升级请求消息对应的增量升级包,即应用软件的名称和应用软件的安装包的校验值都能匹配上,则表示客户端侧可以通过该增量升级包完成应用软件由当前版本升级到目标版本,由云端服务器将匹配得到的增量升级包提供给客户端下载。以客户端的操作系统为安卓(Andriod)操作系统为例,Andriod软件的安装包是apk格式的文件,是一个zip压缩包。为了得到增量升级包,云端服务器侧可以采用二进制比较算法(例如bsdiff算法,一种二进制差分算法)计算得到该应用软件的两个不同版本的差异二进制文件,生成增量升级包,例如该增量升级包的文件名可以是“XX.patch”,当然也并不限于此。云端服务器将生成的增量升级包存储在增量升级包数据库中,供客户端下载。
[0046]例如:应用软件的版本号包括1.0,1.1、1.2,2.0,2.1,3.0,在云端服务器可以根
据版本号为1.0的安装包中的所有安装文件和版本号为3.0的安装包中的所有安装文件,利用二进制比较算法,计算得到应用软件的两个不同版本的差异二进制文件,并利用计算得到的差异二进制文件生成该应用软件的版本由1.0升级到3.0所需的增量升级包。在本发明的一个实施例中,在云端服务器侧可以采用二进制比较算法预先计算出多个应用软件的高版本(相当于目标版本)的安装包和低版本(相当于当前版本)的安装包之间的一个或多个差异文件,并由计算得到的一个或多个差异文件分别生成由低版本升级到高版本所需的增量升级包。
[0047]在本发明的另一个实施例,云端服务器采用以下方式生成增量升级包,首先,获取应用软件的高版本(相当于目标版本)的安装包中的所有安装文件的标识信息和所有安装文件的校验信息,以及低版本(相当于当前版本)的安装包中的所有安装文件的标识信息和所有安装文件的校验信息。
[0048]可选地,安装文件的标识信息可以是文件的名称,当然也并不限于此。安装文件的校验信息用于验证当前文件是否正确,该校验信息可以是通过哈希算法(Hash算法)计算得到的该安装文件的MD5值,当然也并不限于此。
[0049]然后,根据高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息,以及低版本的安装包的所有安装文件的标识信息和所有安装文件的校验信息进行匹配处理,得到应用软件由低版本升级到高版本所需的多个增量升级包。例如比较低版本和高版本的安装包中的所有安装文件的标识信息,如果该安装文件仅在高版本的安装中,则可以记录这类安装文件;如果安装文件的标识信息都相同,可进一步比较安装文件的校验信息,如果校验信息不相同,则也可以记录这类安装文件,然后将之前记录的安装文件合并压缩形成增量升级包。
[0050]继续参见图2,步骤S205、在云端服务器侧将匹配得到的增量升级包提供给客户端下载,由客户端根据升级请求消息从云端服务器下载增量升级包。
[0051]在本发明的实施例中,云端服务器可以预先将应用软件的低版本的安装包与高版本的安装包做差分处理,得到更新的部分的增量升级包,例如低版本的安装包的数据量有5M (兆),高版本的安装包的数据量有SM,更新的部分的增量升级包的数据量可能只有3M左右(这里需要说明的是,得到的增量升级包大小并不是简单的相减,这里只是为了举例说明),因此,客户端在进行软件升级操作时,实际上只需要下载数据量为3M的增量升级包,而不需要下载完整的数据量为8M的高版本的安装包,从而可以很大程度上减少升级所耗费的客户端的上网流量。
[0052]实施例三
[0053]如图3所示,本发明的实施例三提供了一种客户端,该客户端300包括:
[0054]升级请求模块301,用于向云端服务器发送获取增量升级包的升级请求消息,所述升级请求消息包括:应用软件的描述信息;在本发明的实施例中,应用软件的描述信息包括:应用软件的名称和应用软件的安装包的校验值。其中,应用软件(applicationsoftware)是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,包括办公类软件、图像处理软件、媒体播放器、聊天软件、安全软件等。应用软件的名称例如“360手机助手”;应用软件的安装包是指在移动设备上安装的当前版本的应用软件的安装包,该安装包的校验值可以采用如下方式计算得到:采用哈希算法,计算应用软件的当前版本的安装包中的内容的校验值,然后将计算得到的校验值作为应用软件的安装包的校验值,其中该校验值可以是MD5值,当然也并不限于此。增量升级包下载模块303,用于从所述云端服务器中下载增量升级包,所述增量升级包由所述云端服务器根据所述应用软件的描述信息在云端服务器的增量升级包数据库中匹配得到。在云端服务器的增量升级包数据库中可以存储有多种应用软件的多个版本的增量升级包,每个应用软件的描述信息至少包括:应用软件的名称和应用软件的安装包的校验值。由此,云端服务器可以根据升级请求中的应用软件的描述信息与增量升级包数据库中的增量升级包进行匹配,如果能够在云端服务器中匹配得到与升级请求消息对应的增量升级包,即应用软件的名称和应用软件的安装包的校验值都能匹配上,则表示客户端侧可以通过该增量升级包完成应用软件由当前版本升级到目标版本,由云端服务器将匹配得到的增量升级包提供给客户端下载。以客户端的操作系统为安卓(Andriod)操作系统为例,Andriod软件的安装包是apk格式的文件,是一个zip压缩包。为了得到增量升级包,云端服务器侧可以采用二进制比较算法(例如bsdiff算法,一种二进制差分算法)计算得到该软件的两个不同版本的二进制文件,生成增量升级包,例如该增量升级包的文件名可以是“XX.patch”,当然也并不限于此。云端服务器将生成的增量升级包存储在增量升级包数据库中,供客户端下载。
[0055]安装包合并模块305,用于将下载的得到所述增量升级包和所述应用软件的当前版本的安装包进行组合,得到所述应用软件的目标版本的安装包。具体地,在客户端侧获取应用软件的当前版本的安装包,例如通过系统API的PackageInfo类获取应用软件的当前版本的安装包,然后将增量升级包(相当于差异二进制文件)采用补丁合成工具合入到应用软件的当前版本的安装包,从而生成应用软件的目标版本的安装包。上述补丁合成工具可以采用差分压缩算法,例如bspatch算法或Courgette算法,当然也并不限于此。
[0056]应用软件升级模块307,用于在所述客户端上安装所述应用软件的目标版本的安装包,以完成所述应用软件由当前版本升级到目标版本的升级操作。
[0057]在本发明的实施例一中,可以由客户端侧自动检测是否需要进行软件的升级操作。可选地,在本发明的实施例中,所述客户端300还包括:版本检测模块和信息生成模块,其中
[0058]版本检测模块,用于对所述客户端中已安装的应用软件进行版本检测;在客户端开机之后延迟一段时间对客户端中已安装的应用软件进行版本检测,然后每隔一段预置时间对客户端中已安装的应用软件进行版本检测。这种版本检测是通过与在线的云端服务器的数据库比对来实现的,如果当前客户端中安装的应用软件的版本信息与数据库中最新的软件的版本信息不一致,则表示当前客户端中安装的应用软件需要升级。
[0059]信息生成模块,用于当检测到多个应用软件需要升级时,根据应用软件的标识信息、应用软件的当前版本信息以及应用软件的目标版本信息生成升级请求消息。
[0060]在本发明的实施例中,云端服务器可以预先将应用软件的低版本的安装包与高版本的安装包做差分处理,得到更新的部分的增量升级包,例如低版本的安装包的数据量有5M (兆),高版本的安装包的数据量有SM,更新的部分的增量升级包的数据量可能只有3M左右(这里需要说明的是,得到的增量升级包大小并不是简单的相减,这里只是为了举例说明),因此,客户端在进行软件升级操作时,实际上只需要下载数据量为3M的增量升级包,而不需要下载完整的数据量为8M的高版本的安装包,从而可以很大程度上减少升级所耗费的客户端的上网流量。
[0061]实施例四
[0062]如图4所示,本发明的实施例四提供了一种云端服务器,该云端服务器400其包括:
[0063]升级请求接收模块401,用于接收客户端发送的获取增量升级包的升级请求消息,所述升级请求消息包括:应用软件的描述信息;在本发明的实施例中,应用软件的描述信息包括:应用软件的名称和应用软件的安装包的校验值。其中,应用软件(applicationsoftware)是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,包括办公类软件、图像处理软件、媒体播放器、聊天软件、安全软件等。应用软件的名称例如“360手机助手”;应用软件的安装包是指在移动设备上安装的当前版本的应用软件的安装包,该安装包的校验值可以采用如下方式计算得到:采用哈希算法,计算应用软件的当前版本的安装包中的内容的校验值,然后将计算得到的校验值作为应用软件的安装包的校验值,其中该校验值可以是MD5值,当然也并不限于此。增量升级包匹配模块403,用于在所述云端服务器侧的增量升级包数据库中匹配得到与所述应用软件的描述信息对应的增量升级包;在云端服务器的增量升级包数据库中可以存储有多种应用软件的多个版本的增量升级包,每个应用软件的描述信息至少包括:应用软件的名称和应用软件的安装包的校验值。由此,云端服务器可以根据升级请求中的应用软件的描述信息与增量升级包数据库中的增量升级包进行匹配,如果能够在云端服务器中匹配得到与升级请求消息对应的增量升级包,即应用软件的名称和应用软件的安装包的校验值都能匹配上,则表示客户端侧可以通过该增量升级包完成应用软件由当前版本升级到目标版本,由云端服务器将匹配得到的增量升级包提供给客户端下载。以客户端的操作系统为安卓(Andriod)操作系统为例,Andriod软件的安装包是apk格式的文件,是一个zip压缩包。为了得到增量升级包,云端服务器侧可以采用二进制比较算法(例如bsdiff算法,一种二进制差分算法)计算得到该软件的两个不同版本的二进制文件,生成增量升级包,例如该增量升级包的文件名可以是“XX.patch”,当然也并不限于此。云端服务器将生成的增量升级包存储在增量升级包数据库中,供客户端下载。
[0064]增量升级包发送模块405,用于在所述云端服务器侧将匹配得到的增量升级包提供给所述客户端下载,由所述客户端根据所述升级请求消息从所述云端服务器下载所述增量升级包。
[0065]可选地,所述云端服务器400还包括:
[0066]文件获取模块,用于获取应用软件的高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息;以及获取应用软件的低版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息;可选地,安装文件的标识信息可以是文件的名称,当然也并不限于此。安装文件的校验信息用于验证当前文件是否正确,该校验信息可以是通过哈希算法(Hash算法)计算得到的该安装文件的MD5值,当然也并不限于此。
[0067]增量升级包生成模块,用于根据高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息,以及低版本的安装包的所有安装文件的标识信息和所有安装文件的校验信息进行匹配处理,得到所述应用软件由低版本升级到高版本所需的增量升级包。
[0068]由上述技术方案可知,本发明的实施例具有如下有益效果:当客户端对已安装应用软件进行升级时,客户端不需要从云端服务器侧下载完整的目标版本的应用软件的安装包,而是在云端服务器侧通过算法计算出应用软件的安装包的高版本和低版本的一个或多个差异文件,并将一个或多个差异文件生成该应用软件的多种版本的增量升级包,云端服务器可以根据来自客户端的升级请求消息,匹配得到客户端此次升级所需的增量升级包,客户端只要下载该增量升级包,并在客户端侧利用增量升级包和当前版本的安装包进行组合,可以得到该应用软件的目标版本的安装包,然后在客户端侧安装应用软件的目标版本的安装包,以完成应用软件由当前版本升级到目标版本的升级操作,由于客户端只需要下载一个数据量较小的增量升级包,而不是完整的目标版本的安装包,大大节省了升级所耗费的时间和升级所耗费的流量,从而提升了用户体验。
[0069]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0070]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0071]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。[0072]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
[0073]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0074]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的应用软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP )来实现根据本发明实施例的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0075]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干设备的单元权利要求中,这些设备中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
【权利要求】
1.一种应用软件升级的方法,应用于客户端侧,所述方法包括: 在所述客户端侧向云端服务器发送获取增量升级包的升级请求消息,所述升级请求消息包括:应用软件的描述信息; 在所述客户端侧从所述云端服务器中下载增量升级包,所述增量升级包由所述云端服务器根据所述应用软件的描述信息在云端服务器的增量升级包数据库中匹配得到; 在所述客户端侧将下载的得到所述增量升级包和所述应用软件的当前版本的安装包进行组合,得到所述应用软件的目标版本的安装包;以及 在所述客户端侧安装所述应用软件的目标版本的安装包,以完成所述应用软件由当前版本升级到目标版本的升级操作。
2.根据权利要求1所述的方法,所述方法还包括: 对所述客户端中已安装的应用软件进行版本检测; 在客户端侧当检测到多个应用软件需要升级时,根据应用软件的名称和应用软件的安装包的校验值生成应用软件的描述信息。
3.根据权利要求1所述的方法,所述方法还包括: 在所述客户端侧获取所述应用软件的当前版本的安装包。
4.一种应用软件升级的方法,应用于云端服务器侧,所述方法包括: 在所述云端服务器侧接收客户端发送的获取增量升级包的升级请求消息,所述升级请求消息包括:应用软件的描述信息; 在所述云端服务器侧的增量升级包数据库中匹配得到与所述应用软件的描述信息对应的增量升级包;以及 在所述云端服务器侧将匹配得到的增量升级包提供给所述客户端下载,由所述客户端根据所述升级请求消息从所述云端服务器下载所述增量升级包。
5.根据权利要求4所述的方法,所述方法还包括: 在所述云端服务器侧采用二进制比较算法预先计算出应用软件的高版本的安装包和低版本的安装包之间的一个或多个差异文件,并由计算得到的一个或多个差异文件生成由低版本升级到高版本所需的增量升级包。
6.根据权利要求4所述的方法,所述方法还包括: 获取应用软件的高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息; 获取应用软件的低版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息; 根据高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息,以及低版本的安装包的所有安装文件的标识信息和所有安装文件的校验信息进行匹配处理,得到所述应用软件由低版本升级到高版本所需的增量升级包。
7.一种客户端,其包括: 升级请求模块,用于向云端服务器发送获取增量升级包的升级请求消息,所述升级请求消息包括:应用软件的描述信息; 增量升级包下载模块,用于从所述云端服务器中下载增量升级包,所述增量升级包由所述云端服务器根据所述应用软件的描述信息在云端服务器的增量升级包数据库中匹配得到; 安装包合并模块,用于将下载的得到所述增量升级包和所述应用软件的当前版本的安装包进行组合,得到所述应用软件的目标版本的安装包;以及 应用软件升级模块,用于在所述客户端上安装所述应用软件的目标版本的安装包,以完成所述应用软件由当前版本升级到目标版本的升级操作。
8.根据权利要求7所述的客户端,所述客户端还包括: 版本检测模块,用于对所述客户端中已安装的应用软件进行版本检测; 信息生成模块,用于当检测到多个应用软件需要升级时,根据应用软件的名称和应用软件的安装包的校验值生成升级请求消息。
9.一种云端服务器,其包括: 升级请求接收模块,用于接收客户端发送的获取增量升级包的升级请求消息,所述升级请求消息包括:应用软件的描述信息; 增量升 级包匹配模块,用于在所述云端服务器侧的增量升级包数据库中匹配得到与所述应用软件的描述信息对应的增量升级包;以及 增量升级包发送模块,用于在所述云端服务器侧将匹配得到的增量升级包提供给所述客户端下载,由所述客户端根据所述升级请求消息从所述云端服务器下载所述增量升级包。
10.根据权利要求9所述的云端服务器,其中,所述云端服务器还包括: 文件获取模块,用于获取应用软件的高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息;以及获取应用软件的低版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息; 增量升级包生成模块,用于根据高版本的安装包中的所有安装文件的标识信息和所有安装文件的校验信息,以及低版本的安装包的所有安装文件的标识信息和所有安装文件的校验信息进行匹配处理,得到所述应用软件由当前版本升级到高版本所需的增量升级包。
【文档编号】H04L29/08GK103647816SQ201310642252
【公开日】2014年3月19日 申请日期:2013年12月3日 优先权日:2013年12月3日
【发明者】李小庆, 王卫平, 蒋又新, 田野 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1