一种更新应用软件的方法、装置、客户端、服务器及系统的制作方法

文档序号:6508532阅读:257来源:国知局
一种更新应用软件的方法、装置、客户端、服务器及系统的制作方法
【专利摘要】本发明公开了一种更新应用软件的方法、装置、客户端、服务器及系统,所述方法包括:获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系;获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件;根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件;将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。与现有技术相比,不需要保存各个版本的应用软件,利用来自客户端的摘要信息列表,即可以使所有用户实现应用软件的更新。
【专利说明】—种更新应用软件的方法、装置、客户端、服务器及系统

【技术领域】
[0001]本发明涉及数据处理领域,具体涉及一种更新应用软件的方法、装置、客户端、月艮务器及系统。

【背景技术】
[0002]随着计算机技术的发展,应用软件的种类和数量日益增加,与此同时,同一款应用软件的不同版本更新较快,用户可能刚安装的一个版本的应用软件,短时间内就会出现新的版本,所以,用户就面临了如何给旧版本的应用软件更新的问题。
[0003]现有技术中一般利用补丁文件为旧版本的应用软件更新,现以手机客户端中已安装的应用软件为例,参考图1,图1为一种应用软件更新的示意图,其中,服务器通过将旧版本的应用软件即oldVers1nQQ.apk与新版本的应用软件即newVers1nQQ.apk同时加入bsdiff工具中,最终得到补丁文件A。手机客户端获取补丁文件A后,将保存在客户端的oldVers1nQQ.apk与补丁文件A同时加入bspatch工具中,最终得到newVers1nQQ.apk完成应用软件的更新。
[0004]如上可知,现有技术的软件更新方法中,服务器最终能够得到任意一个应用软件的补丁文件的前提是服务器中必须同时存在该应用软件的新、旧版本,对于应用软件更新如此迅速的今天,服务器获取各个版本应用软件其实是比较困难的,所以,由于服务器不能获取所有版本的应用软件,这就限制了有些用户的应用软件不能够被更新。同时,由于bsdiff工具和bspatch工具的算法较复杂,运行速度较慢,所以,使用bsdiff工具和bspatch工具进行应用软件更新,一定程度上降低了应用软件更新的效率。


【发明内容】

[0005]本发明提供了一种更新应用软件的方法、装置、客户端、服务器及系统,使得服务器不需要保存各个版本的应用软件,从而更多的用户能够实现应用软件的更新,同时由于不需要使用bsdiff工具和bspatch工具,提高了应用软件更新的效率。
[0006]本发明提供一种更新应用软件的方法,所述方法包括:
[0007]获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系;
[0008]获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件;
[0009]根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件;
[0010]将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0011]优选地,所述根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件,包括:
[0012]将所述最新应用软件中的任一子项文件确定为目标子项,执行获取补丁文件流程:判断所述目标子项是否存在于所述摘要信息列表,如果是,则根据所述目标子项对应的摘要信息获取补丁文件,所述摘要信息包括第一摘要信息和第二摘要信息;如果否,则将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件;将所述最新应用软件中未执行所述获取补丁文件流程的任一子项文件确定为目标子项,继续执行所述获取补丁文件流程,直到所述最新应用软件中的子项文件全部完成执行所述获取补丁文件流程;
[0013]获取所述补丁文件。
[0014]优选地,所述根据所述目标子项对应的摘要信息获取补丁文件,所述摘要信息包括第一摘要信息和第二摘要信息,包括:
[0015]在所述摘要信息列表中,获取与所述目标子项对应的第一摘要信息,且在所述最新应用软件中,获取与所述目标子项对应的第二摘要信息;
[0016]判断所述第一摘要信息与第二摘要信息是否相同,如果是,则将所述目标子项标记为不更新并添加到补丁文件,如果否,则将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件。
[0017]优选地,所述将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新,包括:
[0018]将所述补丁文件传送至所述客户端;
[0019]在所述传送的过程中,所述客户端将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0020]优选地,所述在所述传送的过程中,所述客户端将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新,包括:
[0021]在所述传送的过程中,所述客户端获取所述补丁文件中的任一子项文件;
[0022]判断所述子项文件是否标记为不更新,如果是,则将所述待更新应用软件中所述子项文件对应的文件信息添加到更新后应用软件中,如果否,则将所述补丁文件中所述子项文件对应的文件信息添加到所述更新后应用软件;
[0023]所述客户端继续获取所述补丁文件中的未执行所述判断所述子项文件是否标记为不更新的任一子项文件,继续执行所述判断所述子项文件是否标记为不更新,直到所述补丁文件中的全部子项文件均完成执行所述判断所述子项文件是否标记为不更新;
[0024]获取所述更新后应用软件,以完成所述待更新应用软件的更新。
[0025]本发明还包括一种更新应用软件的装置,所述装置包括:
[0026]第一获取模块,用于获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系;
[0027]第二获取模块,用于获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件;
[0028]第三获取模块,用于根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件;
[0029]合成模块,用于将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0030]优选地,所述第三获取模块包括:
[0031]第一确定子模块,用于将所述最新应用软件中的任一子项文件确定为目标子项;
[0032]第一判断子模块,用于判断所述目标子项是否存在于所述摘要信息列表;
[0033]第一获取子模块,用于在所述第一判断子模块的结果为是时,根据所述目标子项对应的摘要信息获取补丁文件,所述摘要信息包括第一摘要信息和第二摘要信息;
[0034]第一添加子模块,用于在所述第一判断子模块的结果为否时,将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件;
[0035]第一触发子模块,用于将所述最新应用软件中未触发所述第一判断子模块的任一子项文件确定为目标子项,继续触发所述第一判断子模块,直到所述最新应用软件中的子项文件全部完成触发所述第一判断子模块;
[0036]第二获取子模块,用于获取所述补丁文件。
[0037]优选地,所述第一获取子模块包括:
[0038]第三获取子模块,用于在所述摘要信息列表中,获取与所述目标子项对应的第一摘要信息;
[0039]第四获取子模块,用于在所述最新应用软件中,获取与所述目标子项对应的第二摘要信息;
[0040]第二判断子模块,用于判断所述第一摘要信息与第二摘要信息是否相同;
[0041]第二添加子模块,用于第二判断子模块的结果为是时,将所述目标子项标记为不更新并添加到补丁文件;
[0042]第三添加子模块,用于第二判断子模块的结果为否时,将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件。
[0043]优选地,所述合成模块包括:
[0044]发送子模块,用于将所述补丁文件传送至所述客户端;
[0045]第一合成子模块,用于在所述传送的过程中,所述客户端将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0046]优选地,所述第一合成子模块包括:
[0047]第五获取子模块,用于在所述传送的过程中,所述客户端获取所述补丁文件中的任一子项文件;
[0048]第三判断子模块,用于判断所述子项文件是否标记为不更新;
[0049]第四添加子模块,用于在所述第二判断子模块的结果为是时,将所述待更新应用软件中所述子项文件对应的文件信息添加到更新后应用软件中;
[0050]第五添加子模块,用于在所述第二判断子模块的结果为否时,将所述补丁文件中所述子项文件对应的文件信息添加到所述更新后应用软件;
[0051]第二触发子模块,用于所述客户端继续获取所述补丁文件中的未触发所述第二判断子模块的任一子项文件,继续触发所述第二判断子模块,直到所述补丁文件中的全部子项文件均完成触发所述第二判断子模块;
[0052]第六获取子模块,用于获取所述更新后应用软件,以完成所述待更新应用软件的更新。
[0053]本发明还提供一种更新应用软件的客户端,所述客户端用于将待更新应用软件对应的摘要信息列表发送至服务器,并获取来自所述服务器的与所述待更新应用软件对应的补丁文件,将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0054]本发明还提供一种更新应用软件的服务器,所述服务器包括业务服务器和内容分发网络服务器;
[0055]所述业务服务器用于接收客户端发送的所述摘要信息列表,并将所述摘要信息列表发送至所述内容分发网络服务器;
[0056]所述内容分发网络服务器用于根据所述摘要信息列表与所述待更新应用软件对应的最新应用软件,获取所述待更新应用软件的补丁文件,并将所述补丁文件传送至客户端。
[0057]本发明还提供一种更新应用软件的系统,所述系统包括客户端和服务器;
[0058]所述客户端为上述的客户端;
[0059]所述服务器为上述的服务器。
[0060]本发明首先获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系;其次,获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件;再次,根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件;最后,将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。与现有技术相比,本发明的服务器不需要保存各个版本的应用软件,利用来自客户端的摘要信息列表,理论上可以使所有用户实现应用软件的更新。同时,不需要使用bsdiff工具和bspatch工具,提高了更新应用软件的效率。

【专利附图】

【附图说明】
[0061]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0062]图1为一种应用软件更新的示意图;
[0063]图2为本发明实施例一提供的更新应用软件的方法流程图;
[0064]图3为本发明实施例一提供的获取待更新应用软件的补丁文件的方法流程图;
[0065]图4为本发明实施例一提供的补丁文件与待更新应用软件合成方法流程图;
[0066]图5为本发明实施例二提供的更新应用软件的装置结构图;
[0067]图6为本发明实施例二提供的服务器结构示意图;
[0068]图7为本发明实施例二提供的更新应用软件的系统结构图;
[0069]图8为本发明实施例四提供的更新应用软件的系统的信息交互图;
[0070]图9为本发明实施例五提供的应用摘要信息的计算方法流程图;
[0071]图10为本发明实施例五提供的ZIP格式的文件结构图;
[0072]图11为本发明实施例五提供的补丁文件产生流程图;
[0073]图12为本发明实施例五提供的补丁包合成流程图。

【具体实施方式】
[0074]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0075]本发明实施例中将待更新应用软件作为处理对象,其中待更新应用软件可以为ZIP (压缩和存储)文件格式,具体的ZIP文件格式的结构可以分为目录结构表和数据段组成,其中,目录结构表中的子项文件与数据段具有对应关系。
[0076]实施例一
[0077]参考图2,图2为本实施例提供的更新应用软件的方法流程图,具体包括:
[0078]步骤201:获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系O
[0079]本实施例中,首先客户端获取待更新应用软件,其中,待更新应用软件的个数不受限制,可以是一个,也可以是大于一个,同时,待更新应用软件可以为ZIP (压缩和存储)文件格式。其次,客户端获取所述待更新应用软件对应的摘要信息列表,其中,一个待更新应用软件包括至少一个子项文件,摘要信息列表包括与其对应的待更新应用软件的子项文件与第一摘要信息的对应关系,具体的,第一摘要信息可以用于标识子项文件。最后,客户端将获取的待更新应用软件对应的摘要信息列表发送至服务器。
[0080]实际操作中,可以通过MD5即Message-Digest Algorithm5 (消息摘要算法第五版)获取子项文件对应的第一摘要信息,具体的,获取子项文件对应的第一摘要信息的方法不受限制。其中,第一摘要信息可以由CRC (循环冗余校验)和子项文件的长度组成。
[0081]步骤202:获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件。
[0082]本实施例中,由于服务器中包括待更新应用软件的最新应用软件,其中,最新应用软件为该待更新应用软件的最新版本。所以,获取与该待更新应用软件对应的最新应用软件,其中,最新应用软件包括至少一个子项文件。
[0083]步骤203:根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件。
[0084]本实施例中,由于补丁文件为待更新应用软件与最新应用软件的差异内容,由于摘要信息列表可以用来标识待更新应用软件,所以,本实施例可以根据摘要信息列表与最新应用软件的比较,获取该待更新应用软件的补丁文件。
[0085]具体的,参考图3,图3为获取待更新应用软件的补丁文件的方法流程图,具体可以包括:
[0086]步骤301:将所述最新应用软件中的任一子项文件确定为目标子项;
[0087]本实施例中,由于最新应用软件包括至少一个子项文件,所以,可以将任意一个子项文件确定为目标子项,作为后续步骤的处理对象。
[0088]步骤302:判断所述目标子项是否存在于所述摘要信息列表,如果是,则进入步骤303,如果否,则进入步骤306 ;
[0089]本实施例中,由于摘要信息列表包括子项文件和与其对应的摘要信息,所以,可以判断上述步骤中确定的目标子项是否存在于所述摘要信息列表,如果存在,则进入步骤303,否则进入步骤306。
[0090]步骤303:在所述摘要信息列表中,获取与所述目标子项对应的第一摘要信息,且在所述最新应用软件中,获取与目标子项对应的第二摘要信息;
[0091]本实施例中,当目标子项存在于所述摘要信息列表中,可以在该摘要信息列表中,获取与目标子项对应的第一摘要信息,同时在最新应用软件中,获取与目标子项对应的第二摘要信息,其中,获取第一摘要信息与第二摘要信息的算法相同。
[0092]步骤304:判断所述第一摘要信息与第二摘要信息是否相同,如果是,则进入步骤305,如果否,则进入步骤306 ;
[0093]本实施例中,判断获取的第一摘要信息与第二摘要信息是否相同,如果是,则说明该第一摘要信息对应的子项文件不需要更新,进入步骤305,否则,说明该第一摘要信息对应的子项文件需要被更新,进入步骤306。
[0094]步骤305:将所述目标子项标记为不更新并添加到补丁文件;
[0095]本实施例中,当该第一摘要信息对应的子项文件不需要更新时,将该目标子项标记为不更新并添加到补丁文件。
[0096]步骤306:将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件;
[0097]本实施例中,当第一摘要信息对应的子项文件需要被更新时,或者目标子项不存在于所述摘要信息列表中,则将该最新应用软件中的目标子项对应的文件信息添加到上述补丁文件中,以便用于待更新应用软件的更新。其中,文件信息为该目标子项对应的所有数据。
[0098]步骤307:判断所述最新应用软件中的子项文件全部完成执行步骤302,如果否,则进入步骤308,如果是,则进入步骤309 ;
[0099]本实施例中,判断最新应用软件中的所有子项文件是否均完成执行步骤302,如果是,则进入步骤309,否则,进入步骤308。
[0100]步骤308:将所述最新应用软件中未执行步骤302的任一子项文件确定为目标子项,进入步骤302 ;
[0101]本实施例中,将最新应用软件中的未执行步骤302的任意一个子项文件确定为目标子项,继续判断该目标子项是否存在于所述摘要信息列表。
[0102]步骤309:获取所述补丁文件。
[0103]本实施例中,当最新应用软件中的所有子项文件均完成步骤302后,获取此时的补丁文件,以便由于待更新软件的更新。
[0104]步骤204:将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0105]本实施例中,获取补丁文件后,将该补丁文件传送至所述客户端,该客户端将该补丁文件和带更新应用软件进行合成,得到更新后应用软件,最终完成该待更新应用软件的更新。
[0106]实际操作中,可以首先将所述补丁文件传送至所述客户端;其次,在所述传送的过程中,所述客户端将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0107]具体的,参考图4,图4为补丁文件与待更新应用软件合成方法流程图,具体可以包括:
[0108]步骤401:在所述传送的过程中,所述客户端获取所述补丁文件中的任一子项文件;
[0109]本实施例中,在服务器向客户端传送补丁文件,即客户端下载补丁文件的过程中,客户端首先获取已下载部分补丁文件中的任意一个子项文件。
[0110]其中,本实施例在下载补丁文件的过程中进行补丁文件与待更新应用软件合成,节约了应用软件的更新时间,提高了更新应用软件的效率。
[0111 ] 步骤402:判断所述子项文件是否标记为不更新,如果是,则进入步骤403,如果否,则进入步骤404 ;
[0112]本实施例中,判断上述获取的子项文件是否标记为不更新,如果是,即该子项文件不需要更新,则进入步骤403 ;否则,进入步骤404。
[0113]步骤403:将所述待更新应用软件中所述子项文件对应的文件信息添加到更新后应用软件中;
[0114]本实施例中,当该子项文件不需要被更新,则将待更新应用软件中与该子项文件对应的文件信息添加到更新后应用软件中。其中,文件信息为该待更新应用软件中的该子项文件对应的所有数据。
[0115]步骤404:将所述补丁文件中所述子项文件对应的文件信息添加到所述更新后应用软件;
[0116]本实施例中,当子项文件没有标记为不更新,即该子项文件需要被更新时,将补丁文件中与该子项文件对应的文件信息添加到该更新后应用软件中。
[0117]实际操作中,步骤403和步骤404中的向更新后应用软件中添加文件信息的过程就是对二进制数据流的复制。
[0118]步骤405:判断所述补丁文件中的全部子项文件均完成执行步骤402,如果是,则进入步骤407,如果否,则进入步骤406 ;
[0119]本实施例中,判断该补丁文件中的全部子项文件是否全部完成执行步骤402,如果是,则进入步骤407,否则,进入步骤406。
[0120]步骤406:所述客户端继续获取所述补丁文件中除上述子项文件的其他任一子项文件,继续执行步骤402;
[0121]本实施例中,如果该补丁文件中的子项文件没有全部完成执行步骤402,则所述客户端获取所述补丁文件中除上述子项文件的其他任一子项文件,继续执行所述步骤402。
[0122]步骤407:获取所述更新后应用软件,以完成所述待更新应用软件的更新。
[0123]本实施例中,如果该补丁文件中的所有子项文件均完成执行步骤402,则可以获取得到的更新后应用软件,以完成该待更新应用软件的更新。
[0124]本实施例首先获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系;其次,获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件;再次,根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件;最后,将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。与现有技术相比,本实施例的服务器不需要保存各个版本的应用软件,利用来自客户端的摘要信息列表,理论上可以使所有用户实现应用软件的更新。同时,不需要使用bsdiff工具和bspatch工具,提高了更新应用软件的效率。
[0125]实施例二
[0126]参考图5,图5为本实施例提供的更新应用软件的装置结构图,所述装置可以包括:
[0127]第一获取模块501,用于获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系;
[0128]第二获取模块502,用于获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件;
[0129]第三获取模块503,用于根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件;
[0130]合成模块504,用于将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0131]其中,所述第三获取模块包括:
[0132]第一确定子模块,用于将所述最新应用软件中的任一子项文件确定为目标子项;
[0133]第一判断子模块,用于判断所述目标子项是否存在于所述摘要信息列表;
[0134]第一获取子模块,用于在所述第一判断子模块的结果为是时,根据所述目标子项对应的摘要信息获取补丁文件,所述摘要信息包括第一摘要信息和第二摘要信息;
[0135]第一添加子模块,用于在所述第一判断子模块的结果为否时,将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件;
[0136]第一触发子模块,用于将所述最新应用软件中未触发所述第一判断子模块的任一子项文件确定为目标子项,继续触发所述第一判断子模块,直到所述最新应用软件中的子项文件全部完成触发所述第一判断子模块;
[0137]第二获取子模块,用于获取所述补丁文件。
[0138]其中,所述第一获取子模块包括:
[0139]第三获取子模块,用于在所述摘要信息列表中,获取与所述目标子项对应的第一摘要信息;
[0140]第四获取子模块,用于在所述最新应用软件中,获取与所述目标子项对应的第二摘要信息;
[0141]第二判断子模块,用于判断所述第一摘要信息与第二摘要信息是否相同;
[0142]第二添加子模块,用于第二判断子模块的结果为是时,将所述目标子项标记为不更新并添加到补丁文件;
[0143]第三添加子模块,用于第二判断子模块的结果为否时,将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件。
[0144]其中,所述合成模块包括:
[0145]发送子模块,用于将所述补丁文件传送至所述客户端;
[0146]第一合成子模块,用于在所述传送的过程中,所述客户端将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0147]其中,所述第一合成子模块包括:
[0148]第五获取子模块,用于在所述传送的过程中,所述客户端获取所述补丁文件中的任一子项文件;
[0149]第三判断子模块,用于判断所述子项文件是否标记为不更新;
[0150]第四添加子模块,用于在所述第二判断子模块的结果为是时,将所述待更新应用软件中所述子项文件对应的文件信息添加到更新后应用软件中;
[0151]第五添加子模块,用于在所述第二判断子模块的结果为否时,将所述补丁文件中所述子项文件对应的文件信息添加到所述更新后应用软件;
[0152]第二触发子模块,用于所述客户端继续获取所述补丁文件中的未触发所述第二判断子模块的任一子项文件,继续触发所述第二判断子模块,直到所述补丁文件中的全部子项文件均完成触发所述第二判断子模块;
[0153]第六获取子模块,用于获取所述更新后应用软件,以完成所述待更新应用软件的更新。
[0154]请参考图6,其图6为本实施例提供的一种服务器,该服务器可以用于实施上述实施例中提供的方法。具体来讲:
[0155]服务器可以包括有一个或一个以上可读存储介质的存储器610、输入单元620、输出单元630包括有一个或者一个以上处理核心的处理器640、以及电源650等部件。其中:
[0156]存储器610可用于存储软件程序以及模块,处理器640通过运行存储在存储器610的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器610可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据计算机的使用所创建的数据等。此外,存储器610可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器610还可以包括存储器控制器,以提供处理器640和输入单元620对存储器610的访问。
[0157]输入单元620可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
[0158]处理器640是服务器的控制中心,利用各种接口和线路连接各个部分,通过运行或执行存储在存储器610内的软件程序和/或模块,以及调用存储在存储器610内的数据,执行计算机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器640可包括一个或多个处理核心。
[0159]服务器还包括给各个部件供电的电源650 (比如电池),优选的,电源可以通过电源管理系统与处理器640逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源650还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0160]具体在本实施例中,处理器640会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器610中,并由处理器640来运行存储在存储器610中的应用程序,从而实现各种功能:
[0161]获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系;
[0162]获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件;
[0163]根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件;
[0164]将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0165]优选地,所述根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件,包括:
[0166]将所述最新应用软件中的任一子项文件确定为目标子项,执行获取补丁文件流程:判断所述目标子项是否存在于所述摘要信息列表,如果是,则在所述摘要信息列表中,获取与所述目标子项对应的第一摘要信息,且在所述最新应用软件中,获取与所述目标子项对应的第二摘要信息;当所述第一摘要信息与第二摘要信息相同时,将所述目标子项标记为不更新并添加到补丁文件;当所述第一摘要信息与第二摘要信息不相同时,或者,当所述目标子项不存在于所述摘要信息列表时,将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件;将所述最新应用软件中未执行所述获取补丁文件流程的任一子项文件确定为目标子项,继续执行所述获取补丁文件流程,直到所述最新应用软件中的子项文件全部完成执行所述获取补丁文件流程;
[0167]获取所述补丁文件。
[0168]优选地,所述将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新,包括:
[0169]将所述补丁文件传送至所述客户端;
[0170]在所述传送的过程中,所述客户端将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0171]优选地,所述在所述传送的过程中,所述客户端将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新,包括:
[0172]在所述传送的过程中,所述客户端获取所述补丁文件中的任一子项文件;
[0173]判断所述子项文件是否标记为不更新,如果是,则将所述待更新应用软件中所述子项文件对应的文件信息添加到更新后应用软件中,如果否,则将所述补丁文件中所述子项文件对应的文件信息添加到所述更新后应用软件;
[0174]所述客户端继续获取所述补丁文件中的未执行所述判断所述子项文件是否标记为不更新的任一子项文件,继续执行所述判断所述子项文件是否标记为不更新,直到所述补丁文件中的全部子项文件均完成执行所述判断所述子项文件是否标记为不更新;
[0175]获取所述更新后应用软件,以完成所述待更新应用软件的更新。
[0176]本实施例首先获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系;其次,获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件;再次,根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件;最后,将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。与现有技术相比,本实施例的服务器不需要保存各个版本的应用软件,利用来自客户端的摘要信息列表,理论上可以使所有用户实现应用软件的更新。同时,不需要使用bsdiff工具和bspatch工具,提高了更新应用软件的效率。
[0177]实施例三
[0178]本发明实施例将从更新应用软件的客户端的角度进行描述,该更新应用软件的方法具体可以集成在客户端中,该客户端可以装载在终端中,该终端具体可以为智能手机、平板电脑、电子书阅读器、MP3 (Moving Picture Experts Group Aud1 Layer III,动态影像专家压缩标准音频层面3)播放器、MP4 (Moving Picture Experts Group Aud1 LayerIV,动态影像专家压缩标准音频层面3)播放器、膝上型便携计算机和台式计算机等等。
[0179]本实施例提供一种更新应用软件的客户端,所述客户端具体可以用于:
[0180]首先,将待更新应用软件对应的摘要信息列表发送至服务器;
[0181]其次,获取来自所述服务器的与所述待更新应用软件对应的补丁文件;
[0182]最后,将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
[0183]本实施例还提供一种更新应用软件的服务器,所述服务器包括业务服务器和内容分发网络服务器;
[0184]所述业务服务器用于接收客户端发送的所述摘要信息列表,并将所述摘要信息列表发送至所述内容分发网络服务器;
[0185]所述内容分发网络服务器用于根据所述摘要信息列表与所述待更新应用软件对应的最新应用软件,获取所述待更新应用软件的补丁文件,并将所述补丁文件传送至客户端。
[0186]实施例四
[0187]本实施例提供一种更新应用软件的系统,参考图7,图7为本实施例提供的更新应用软件的系统结构图,其中,所述系统可以包括客户端701,业务服务器702和内容分发网络服务器703 ;
[0188]所述客户端701可以为上述更新应用软件的客户端;
[0189]所述业务服务器702用于接收所述客户端701发送的所述摘要信息列表,并将所述摘要信息列表发送至所述内容分发网络服务器703 ;
[0190]所述内容分发网络服务器703用于根据所述摘要信息列表与所述待更新应用软件对应的最新应用软件,获取所述待更新应用软件的补丁文件,并将所述补丁文件传送至所述客户端701。
[0191]其中,参考图8,图8为本实施例提供的更新应用软件的系统的信息交互图,下面详细介绍图8中各个步骤的工作原理:
[0192]Al.检查客户端应用更新:客户端上报所有已经安装应用的信息,比如应用的名称,包名称,版本号等到(具体参考后面的上报应用信息结构)服务器。
[0193]A2.返回应用更新信息:通过和服务器的应用信息对比,找到哪些是可升级应用,哪些应用有补丁包,哪些应用需要上传摘要到服务器,并把上述信息发送到客户端。,这些信息就是应用更新的信息(具体参考后面的应用更新信息结构)。
[0194]A3.判断哪些应用需要上传应用摘要:客户端收到应用更新信息后,解析出需要上传摘要到服务器的应用列表。
[0195]A4.上报摘要:通过旧的安装计算出摘要信息,上传到服务器。
[0196]A5.返回应用更新信息:服务器收到摘要信息后,返回该应用的更新信息。
[0197]B.产生补丁包流程:
[0198]B1.上报应用摘要:逻辑服务器上传摘要到⑶N服务器。
[0199]B2.产生补丁包:⑶N服务器收到摘要信息后,对比新版本应用,产生补丁包(具体参考后面补丁包的产生)。
[0200]C.下载和合成新包流程:
[0201]Cl.下载补丁包:用户触发下载,通过更新信息取得补丁包的URL地址,从该地址下载补丁包。
[0202]C2.返回补丁片段1,合成:返回部分数据后,就可以开始边下载边合成(参考后面补丁包的合成)。
[0203]C3.返回补丁片段2,合成:同C2。
[0204]C4.返回补丁片段n,合成:同C2。
[0205]C5.返回补丁最后一个片段,合成:收到最后一个片段后,合成到完成,整个下载和合成流程完成。
[0206]与现有技术相比,本实施例提供的系统中的服务器不需要保存各个版本的应用软件,利用来自客户端的摘要信息列表,理论上可以使所有用户实现应用软件的更新。同时,不需要使用bsdiff工具和bspatch工具,提高了更新应用软件的效率。
[0207]实施例五
[0208]本实施例以APK文件为例,介绍一种更新应用软件的方法,具体如下:
[0209]首先,介绍该APK文件的应用摘要信息的计算方法,参考图9,图9为应用摘要信息的计算方法流程图,具体的,图9的工作原理可以包括:
[0210]首先,使用zip工具读取旧版本APK文件;
[0211]其次,依次读取APK文件的每一项,获取每一项的文件名,CRC和未压缩的文件长度,拼接成如上上述子项的摘要信息,并添加到摘要信息列表结构中。
[0212]最后,重复上一步,到遍历完APK文件内部每一个子项。
[0213]其中,摘要信息的结构具体为:
[0214]map<string, long>apkDetail
[0215]string:文件名
[0216]long:文件CRC(4字节)+文件未压缩的大小(4字节)
[0217]其中,上报应用信息结构:
[0218]struct ClientApkDetail
[0219]{
[0220]Orequire string packageName;//客户端应用包名
[0221]lrequire string manifestMd5 -J/ 客户端应用 manifest 文件 md5
[0222]2require string vers1nCode ;// 版本号
[0223]2opt1nal map〈string,long>apkDetail;//文件名:CRC+FileSize
[0224]};
[0225]应用更新信息结构:
[0226]struct ApkPatchDetail
[0227]{
[0228]Orequire long patchld;//增量文件 id,用于上报
[0229]lrequire long pkgId4NewVers1n;//服务器下发的新版本包 id
[0230]2require string patchFileUrl;//增量文件下载路径
[0231]3require int patchFileSize;//增量文件大小(界面显示使用,单位KB)
[0232]4require string patchFielMd5;//增量文件 md5,可用于校验
[0233]5require string packageName;//应用包名
[0234]};
[0235]其次,介绍该APK文件的补丁文件产生流程,其中,由于APK文件为ZIP格式的文件,所以,首先介绍一下ZIP格式的文件结构,参考图10,图10为ZIP格式的文件结构图,另夕卜,参考图11,图11为补丁文件产生流程图,具体的,图11的工作原理可以包括:将APK文件的摘要信息的每一项与新版本APK文件的每一项比较,最终确定该APK文件的补丁文件。
[0236]最后,介绍该APK文件的补丁包合成流程,参考图12,图12为补丁包合成流程图,结合图10可知,本实施例在下载补丁包的过程中完成了补丁包的合成,实现了边下载边合成的操作。
[0237]具体的,补丁包文件结构可以如下:
[0238]/**
[0239]*patch 包格式
[0240]*
[0241]*CentralDirItemCount:文件内子项个数
[0242]*CentralDirRecordl+isNeedUpdate (boolean):子项 I 的描述信息
[0243]*CentralDirRecord2+isNeedUpdate (boolean):子项 2 的描述信息
[0244]*CentralDirRecord3+isNeedUpdate (boolean):子项 3 的描述信息
[0245]*
[0246]......
[0247]*CentralDirRecordn+isNeedUpdate (boolean):子项 η 的描述信息
[0248]*File Data (Compressed):需要更新的子项的数据,顺序是I到η,需要更新的子项才有。
[0249]=I=EndofCentralDirRecord:ΑΡΚ 文件的目录结束项。
[0250]*/
[0251]说明:CentralDirRecord:对应 ZIP 文件结构中的 Central Directory (目录结构表)中的子项。
[0252]File Data (Compressed):对应 ZIP 文件结构中的 Local File Header 后面的文件数据段。
[0253]EndofCentralDirRecord:对应 ZIP 文件的 End Of Central Directory。
[0254]如上三项都是直接从新版本的APK文件中直接读取来填充,isNeedUpdate是根据客户端上传的应用摘要信息和新版本的APK计算获得。
[0255]对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0256]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0257]以上对本发明实施例所提供的更新应用软件的方法、装置、客户端、服务器及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种更新应用软件的方法,其特征在于,所述方法包括: 获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系; 获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件; 根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件; 将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
2.根据权利要求1所述的方法,其特征在于,所述根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件,包括: 将所述最新应用软件中的任一子项文件确定为目标子项,执行获取补丁文件流程:判断所述目标子项是否存在于所述摘要信息列表,如果是,则根据所述目标子项对应的摘要信息获取补丁文件,所述摘要信息包括第一摘要信息和第二摘要信息;如果否,则将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件;将所述最新应用软件中未执行所述获取补丁文件流程的任一子项文件确定为目标子项,继续执行所述获取补丁文件流程,直到所述最新应用软件中的子项文件全部完成执行所述获取补丁文件流程; 获取所述补丁文件。
3.根据权利要求2所述的方法,其特征在于,所述根据所述目标子项对应的摘要信息获取补丁文件,所述摘要信息包括第一摘要信息和第二摘要信息,包括: 在所述摘要信息列表中,获取与所述目标子项对应的第一摘要信息,且在所述最新应用软件中,获取与所述目标子项对应的第二摘要信息; 判断所述第一摘要信息与第二摘要信息是否相同,如果是,则将所述目标子项标记为不更新并添加到补丁文件,如果否,则将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件。
4.根据权利要求1所述的方法,其特征在于,所述将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新,包括: 将所述补丁文件传送至所述客户端; 在所述传送的过程中,所述客户端将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
5.根据权利要求4所述的方法,其特征在于,所述在所述传送的过程中,所述客户端将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新,包括: 在所述传送的过程中,所述客户端获取所述补丁文件中的任一子项文件; 判断所述子项文件是否标记为不更新,如果是,则将所述待更新应用软件中所述子项文件对应的文件信息添加到更新后应用软件中,如果否,则将所述补丁文件中所述子项文件对应的文件信息添加到所述更新后应用软件; 所述客户端继续获取所述补丁文件中的未执行所述判断所述子项文件是否标记为不更新的任一子项文件,继续执行所述判断所述子项文件是否标记为不更新,直到所述补丁文件中的全部子项文件均完成执行所述判断所述子项文件是否标记为不更新; 获取所述更新后应用软件,以完成所述待更新应用软件的更新。
6.一种更新应用软件的装置,其特征在于,所述装置包括: 第一获取模块,用于获取客户端的待更新应用软件对应的摘要信息列表,所述待更新应用软件包括至少一个子项文件,所述摘要信息列表包括子项文件与第一摘要信息的对应关系; 第二获取模块,用于获取与所述待更新应用软件对应的最新应用软件,所述最新应用软件包括至少一个子项文件; 第三获取模块,用于根据所述摘要信息列表与所述最新应用软件,获取所述待更新应用软件的补丁文件; 合成模块,用于将所述补丁文件传送至所述客户端,以便将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
7.根据权利要求6所述的装置,其特征在于,所述第三获取模块包括: 第一确定子模块,用于将所述最新应用软件中的任一子项文件确定为目标子项; 第一判断子模块,用于判断所述目标子项是否存在于所述摘要信息列表; 第一获取子模块,用于在所述第一判断子模块的结果为是时,根据所述目标子项对应的摘要信息获取补丁文件,所述摘要信息包括第一摘要信息和第二摘要信息; 第一添加子模块,用于在所述第一判断子模块的结果为否时,将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件; 第一触发子模块,用于将所述最新应用软件中未触发所述第一判断子模块的任一子项文件确定为目标子项,继续触发所述第一判断子模块,直到所述最新应用软件中的子项文件全部完成触发所述第一判断子模块; 第二获取子模块,用于获取所述补丁文件。
8.根据权利要求7所述的装置,其特征在于,所述第一获取子模块包括: 第三获取子模块,用于在所述摘要信息列表中,获取与所述目标子项对应的第一摘要信息; 第四获取子模块,用于在所述最新应用软件中,获取与所述目标子项对应的第二摘要信息; 第二判断子模块,用于判断所述第一摘要信息与第二摘要信息是否相同; 第二添加子模块,用于第二判断子模块的结果为是时,将所述目标子项标记为不更新并添加到补丁文件; 第三添加子模块,用于第二判断子模块的结果为否时,将所述最新应用软件中的所述目标子项对应的文件信息添加到所述补丁文件。
9.根据权利要求6所述的装置,其特征在于,所述合成模块包括: 发送子模块,用于将所述补丁文件传送至所述客户端; 第一合成子模块,用于在所述传送的过程中,所述客户端将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
10.根据权利要求9所述的装置,其特征在于,所述第一合成子模块包括: 第五获取子模块,用于在所述传送的过程中,所述客户端获取所述补丁文件中的任一子项文件; 第三判断子模块,用于判断所述子项文件是否标记为不更新; 第四添加子模块,用于在所述第二判断子模块的结果为是时,将所述待更新应用软件中所述子项文件对应的文件信息添加到更新后应用软件中; 第五添加子模块,用于在所述第二判断子模块的结果为否时,将所述补丁文件中所述子项文件对应的文件信息添加到所述更新后应用软件; 第二触发子模块,用于所述客户端继续获取所述补丁文件中的未触发所述第二判断子模块的任一子项文件,继续触发所述第二判断子模块,直到所述补丁文件中的全部子项文件均完成触发所述第二判断子模块; 第六获取子模块,用于获取所述更新后应用软件,以完成所述待更新应用软件的更新。
11.一种更新应用软件的客户端,其特征在于,所述客户端用于将待更新应用软件对应的摘要信息列表发送至服务器,并获取来自所述服务器的与所述待更新应用软件对应的补丁文件,将所述补丁文件与所述待更新应用软件合成,以完成所述待更新应用软件的更新。
12.一种更新应用软件的服务器,其特征在于,所述服务器包括业务服务器和内容分发网络服务器; 所述业务服务器用于接收客户端发送的所述摘要信息列表,并将所述摘要信息列表发送至所述内容分发网络服务器; 所述内容分发网络服务器用于根据所述摘要信息列表与所述待更新应用软件对应的最新应用软件,获取所述待更新应用软件的补丁文件,并将所述补丁文件传送至客户端。
13.一种更新应用软件的系统,其特征在于,所述系统包括客户端和服务器; 所述客户端为上述权利要求11所述的客户端; 所述服务器为上述权利要求12所述的服务器。
【文档编号】G06F9/445GK104426924SQ201310367633
【公开日】2015年3月18日 申请日期:2013年8月21日 优先权日:2013年8月21日
【发明者】曹飞, 黄 俊, 邹迪飞, 林声炜, 钟于胜, 吴振宇, 饶凌河, 马俊, 谭新民, 祝涛, 吕婧, 周涛, 赖云鹏, 罗谚君, 侯媛媛, 林水旺, 吴晓慧 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1