一种基于二阶差分增量的软件升级方法及装置与流程

文档序号:17900884发布日期:2019-06-13 16:30阅读:307来源:国知局
一种基于二阶差分增量的软件升级方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种基于二阶差分增量的软件升级方法及装置。



背景技术:

现有技术中的软件升级方案为在每个渠道升级时,一律将每个渠道的版本升级为基准渠道的版本。这种升级方案会导致软件升级之后,原先的渠道信息丢失,转变成基准渠道的信息,给软件运营产生影响。

针对上述问题,现有技术提出一种渠道增量升级方案,即为每个渠道分别制作增量包,每个渠道旧版本根据相应的增量包进行升级。但是,这种方案导致后台需要分别存储每个渠道的增量包,当渠道、软件数量越来越多时,后台需要的存储空间将会越来越大,呈几何级数的增长。例如,当m个应用只有一个渠道版本时,后台只需要存储m个增量包,当有n个渠道时,m个应用需要存储m*n个增量包,后台占用的空间数将是原来的n倍。



技术实现要素:

本发明针对现有技术中存在的问题,提供了一种基于二阶差分增量的软件升级方法及装置,能够有效节约存储空间。

本发明就上述技术问题而提出的技术方案如下:

一方面,本发明提供一种基于二阶差分增量的软件升级方法,包括:

向服务端发送升级请求;所述升级请求包括本渠道当前版本信息;

接收所述服务端根据所述本渠道当前版本信息反馈的升级包;所述升级包包括基准渠道增量包和本渠道二阶差分包;所述基准渠道增量包为基准渠道新旧版本数据包之间的差分包,所述本渠道二阶差分包为本渠道新版本数据包与本渠道当前版本数据包结合所述基准渠道增量包后的差分包;

根据所述基准渠道增量包和本渠道二阶差分包,将所述软件由本渠道当前版本升级为本渠道新版本。

进一步地,所述根据所述基准渠道增量包和本渠道二阶差分包,将所述软件由本渠道当前版本升级为本渠道新版本,具体包括:

根据所述基准渠道增量包和所述本渠道二阶差分包,计算获得本渠道增量包;

根据所述本渠道增量包和本渠道当前版本数据包还原本渠道新版本数据包,并根据所述本渠道新版本数据包将所述软件由本渠道当前版本升级为本渠道新版本。

进一步地,所述基准渠道增量包是所述服务端以基准渠道旧版本数据包为基准制作并保存的基准渠道新版本数据包的差分包;所述本渠道二阶差分包是所述服务端以所述基准渠道增量包为基准制作并保存的本渠道增量包的差分包;所述本渠道增量包是所述服务端以本渠道当前版本数据包为基准制作的本渠道新版本数据包的差分包;所述基准渠道为任一渠道。

进一步地,所述服务端反馈的升级包还包括本渠道当前版本数据包的加密摘要信息;

所述根据所述基准渠道增量包和本渠道二阶差分包,将所述软件由本渠道当前版本升级为本渠道新版本之前,还包括:

对所述加密摘要信息进行解密,并将解密后的摘要信息与所述本渠道当前版本数据包的文档摘要进行比对;

若相一致,则继续进行升级;

若不一致,则中止升级。

进一步地,所述向服务端发送升级请求,具体包括:

检测所述软件是否有升级版本;

若是,则检测所述软件是否有增量升级;

若是,则获取下载地址,并通过所述下载地址向所述服务端发送升级请求。

另一方面,本发明提供一种基于二阶差分增量的软件升级装置,包括:

请求模块,用于向服务端发送升级请求;所述升级请求包括本渠道当前版本信息;

升级包接收模块,用于接收所述服务端根据所述本渠道当前版本信息反馈的升级包;所述升级包包括基准渠道增量包和本渠道二阶差分包;所述基准渠道增量包为基准渠道新旧版本数据包之间的差分包,所述本渠道二阶差分包为本渠道新版本数据包与本渠道当前版本数据包结合所述基准渠道增量包后的差分包;以及,

升级模块,用于根据所述基准渠道增量包和本渠道二阶差分包,将所述软件由本渠道当前版本升级为本渠道新版本。

进一步地,所述升级模块具体包括:

计算单元,用于根据所述基准渠道增量包和所述本渠道二阶差分包,计算获得本渠道增量包;以及,

升级单元,用于根据所述本渠道增量包和本渠道当前版本数据包还原本渠道新版本数据包,并根据所述本渠道新版本数据包将所述软件由本渠道当前版本升级为本渠道新版本。

进一步地,所述基准渠道增量包是所述服务端以基准渠道旧版本数据包为基准制作并保存的基准渠道新版本数据包的差分包;所述本渠道二阶差分包是所述服务端以所述基准渠道增量包为基准制作并保存的本渠道增量包的差分包;所述本渠道增量包是所述服务端以本渠道当前版本数据包为基准制作的本渠道新版本数据包的差分包;所述基准渠道为任一渠道。

进一步地,所述服务端反馈的升级包还包括本渠道当前版本数据包的加密摘要信息;

所述软件升级装置还包括:

比对模块,用于对所述加密摘要信息进行解密,并将解密后的摘要信息与所述本渠道当前版本数据包的文档摘要进行比对;若相一致,则继续进行升级;若不一致,则中止升级。

进一步地,所述请求模块具体包括:

第一检测单元,用于检测所述软件是否有升级版本;

第二检测单元,用于在有升级版本时,检测所述软件是否有增量升级;以及,

下载地址获取单元,用于在有增量升级时,获取下载地址,并通过所述下载地址向所述服务端发送升级请求。

本发明实施例提供的技术方案带来的有益效果是:

由于相同版本的各渠道软件之间的差异不会相差太大,因此各渠道增量包之间的差异也不会很大,服务端仅存储待升级软件的一个基准渠道增量包以及与各渠道相对应且数据量很小的二阶差分包,在对多渠道软件进行升级时,从服务端获取基准渠道增量包以及各渠道相对应的二阶差分包,即可计算出各渠道的增量包,完成各渠道软件的升级,从而有效减小服务端存储的数据量。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的基于二阶差分增量的软件升级方法的流程示意图;

图2是本发明实施例一提供的基于二阶差分增量的软件升级方法中还原本渠道新版本数据包的原理图;

图3是本发明实施例一提供的基于二阶差分增量的软件升级方法的具体流程示意图;

图4是本发明实施例二提供的基于二阶差分增量的软件升级装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例一

本发明实施例提供了一种基于二阶差分增量的软件升级方法,参见图1,该方法包括:

s1、向服务端发送升级请求;所述升级请求包括本渠道当前版本信息;

s2、接收所述服务端根据所述本渠道当前版本信息反馈的升级包;所述升级包包括基准渠道增量包和本渠道二阶差分包;所述基准渠道增量包为基准渠道新旧版本数据包之间的差分包,所述本渠道二阶差分包为本渠道新版本数据包与本渠道当前版本数据包结合所述基准渠道增量包后的差分包;

s3、根据所述基准渠道增量包和本渠道二阶差分包,将所述软件由本渠道当前版本升级为本渠道新版本。

需要说明的是,本发明实施例所提供的基于二阶差分增量的软件升级方法是由用户端来执行的。每个软件对应有多个版本,每个版本应用于多个渠道,使得每个软件对应有多个渠道版本,其中渠道版本即为软件发行商为了跟踪软件的发行量、软件的一些后续运营服务等与商业运作相关需要而在软件里增加了与渠道相关的信息而形成的版本。

由于相同版本的各渠道软件之间的差异很小,因此在软件更新后,仅需制作该软件的一个基准渠道增量包和各渠道的二阶差分包存储在服务端。其中,基准渠道增量包是利用差分算法计算出的基准渠道新版本数据包与基准渠道旧版本数据包之间的差分信息所制作的数据文件,各渠道的二阶差分包是各渠道增量包与基准渠道增量包之间的差分信息所制作的数据文件。

在某渠道软件需要升级时,通过用户端向服务端发送包括本渠道当前版本信息的升级请求,以便服务端根据该渠道当前版本信息查找出该软件的基准渠道增量包以及该渠道的二阶差分包,并反馈给用户端。用户端在接收到基准渠道增量包以及本渠道二阶差分包后即可进行本渠道版本软件的升级。

进一步地,在步骤s3中,所述根据所述基准渠道增量包和本渠道二阶差分包,将所述软件由本渠道当前版本升级为本渠道新版本,具体包括:

根据所述基准渠道增量包和所述本渠道二阶差分包,计算获得本渠道增量包;

根据所述本渠道增量包和本渠道当前版本数据包还原本渠道新版本数据包,并根据所述本渠道新版本数据包将所述软件由本渠道当前版本升级为本渠道新版本。

需要说明的是,在用户端对本渠道版本软件进行升级时,需先根据服务端反馈的基准渠道增量包和本渠道二阶差分包,还原本渠道新版本数据包。其中,还原公式如下:

diff-chn-app=diff-base-app+diff-step-chn-app;

new-chn-app=old-chn-app+diff-chn-app。

其中,diff-base-app为基准版本增量包,diff-step-chn-app为本渠道二阶差分包,diff-chn-app为本渠道增量包,old-chn-app为本渠道当前版本数据包,即本渠道旧版本数据包,new-chn-app为本渠道新版本数据包。

参见图2,为还原本渠道新版本数据包的原理图。先获取基准渠道增量包diff-base-app和本渠道二阶差分包diff-step-chn-app,再通过基准渠道增量包diff-base-app和本渠道二阶差分包diff-step-chn-app计算生成本渠道增量包diff-chn-app,进而通过本渠道当前版本数据包old-chn-app和本渠道增量包diff-chn-app,计算还原本渠道新版本数据包new-chn-app。根据本渠道新版本数据包new-chn-app即可对本渠道软件进行升级。

进一步地,如图2所示,所述基准渠道增量包diff-base-app是所述服务端以基准渠道旧版本数据包old-base-app为基准制作并保存的基准渠道新版本数据包new-base-app的差分包;所述本渠道二阶差分包diff-step-chn-app是所述服务端以所述基准渠道增量包diff-base-app为基准制作并保存的本渠道增量包diff-chn-app的差分包;所述本渠道增量包diff-chn-app是所述服务端以本渠道当前版本数据包old-chn-app为基准制作的本渠道新版本数据包new-chn-app的差分包;所述基准渠道为任一渠道。

需要说明的是,服务端仅需存储一个基准渠道增量包diff-base-app和本渠道二阶差分包diff-step-chn-app,数据量小,有效节约服务端存储空间。

进一步地,所述服务端反馈的升级包还包括本渠道当前版本数据包的加密摘要信息;

在步骤s3之前,即所述根据所述基准渠道增量包和本渠道二阶差分包,将所述软件由本渠道当前版本升级为本渠道新版本之前,还包括:

对所述加密摘要信息进行解密,并将解密后的摘要信息与所述本渠道当前版本数据包的文档摘要进行比对;

若相一致,则继续进行升级;

若不一致,则中止升级。

需要说明的是,服务端接收到用户端发送的升级请求后,将基准渠道增量包和用户端对应的渠道的二阶差分包合并,并附加公钥以及通过私钥加密的该渠道旧版本数据包的摘要信息,作为升级包反馈给用户端。用户端在接收到升级包后,先采用公钥对通过私钥加密的摘要信息进行解密,再将解密后的摘要信息与本渠道当前版本数据包的文档摘要进行比对,若相一致,则继续步骤s3的升级流程,若不一致,则中止升级流程,从而防止数据被篡改。

进一步地,在步骤s1中,所述向服务端发送升级请求,具体包括:

检测所述软件是否有升级版本;

若是,则检测所述软件是否有增量升级;

若是,则获取下载地址,并通过所述下载地址向所述服务端发送升级请求。

需要说明的是,用户端实时对软件更新进行检查,在检查到软件由版本升级时,检测软件是否有增量升级,若有增量升级,则获取升级包的下载地址,以便通过下载地址向服务端发送升级请求来下载升级包,若没有增量升级,则进行全量升级,即直接用本渠道新版本数据包覆盖本渠道旧版本数据包进行升级。

参见图3,是本发明实施例提供的基于二阶差分增量的软件升级方法的具体流程示意图,该方法包括:

s301、检查是否有升级版本;若是,则执行步骤s302,若否,则结束。

s302、检查是否有增量升级;若是,则执行步骤s303,若否,则全量升级。

s303、获得升级包的下载地址。

s304、向服务端发起下载请求。服务端收到下载请求后,将基准渠道增量包和目标渠道二阶差分包合并,并附加公钥和通过私钥加密后的摘要信息,作为升级包反馈给下载请求。

s305、接收下载的升级包。

s306、提取升级包中的公钥,用公钥解密通过私钥加密的摘要信息。

s307、比对解密后的摘要信息与目标渠道当前版本数据包的文档摘要是否一致;若是,则执行步骤s308,若否,则中止升级。

s308、提取升级包中的基准渠道增量包和目标渠道二阶差分包,并计算还原目标渠道增量包。

s309、根据目标渠道旧版本数据包和目标渠道增量包计算还原目标渠道新版本数据包。

s310、根据目标渠道新版本数据包对本渠道软件进行升级,并结束。

本发明实施例由于相同版本的各渠道软件之间的差异不会相差太大,因此各渠道增量包之间的差异也不会很大,服务端仅存储待升级软件的一个基准渠道增量包以及与各渠道相对应且数据量很小的二阶差分包,在对多渠道软件进行升级时,从服务端获取基准渠道增量包以及各渠道相对应的二阶差分包,即可计算出各渠道的增量包,完成各渠道软件的升级,从而有效减小服务端存储的数据量。

实施例二

本发明实施例提供了一种基于二阶差分增量的软件升级装置,能够实现上述基于二阶差分增量的软件升级方法的所有流程,参见图4,所述装置包括:

请求模块1,用于向服务端发送升级请求;所述升级请求包括本渠道当前版本信息;

升级包接收模块2,用于接收所述服务端根据所述本渠道当前版本信息反馈的升级包;所述升级包包括基准渠道增量包和本渠道二阶差分包;所述基准渠道增量包为基准渠道新旧版本数据包之间的差分包,所述本渠道二阶差分包为本渠道新版本数据包与本渠道当前版本数据包结合所述基准渠道增量包后的差分包;以及,

升级模块3,用于根据所述基准渠道增量包和本渠道二阶差分包,将所述软件由本渠道当前版本升级为本渠道新版本。

进一步地,所述升级模块具体包括:

计算单元,用于根据所述基准渠道增量包和所述本渠道二阶差分包,计算获得本渠道增量包;以及,

升级单元,用于根据所述本渠道增量包和本渠道当前版本数据包还原本渠道新版本数据包,并根据所述本渠道新版本数据包将所述软件由本渠道当前版本升级为本渠道新版本。

进一步地,所述基准渠道增量包是所述服务端以基准渠道旧版本数据包为基准制作并保存的基准渠道新版本数据包的差分包;所述本渠道二阶差分包是所述服务端以所述基准渠道增量包为基准制作并保存的本渠道增量包的差分包;所述本渠道增量包是所述服务端以本渠道当前版本数据包为基准制作的本渠道新版本数据包的差分包;所述基准渠道为任一渠道。

进一步地,所述服务端反馈的升级包还包括本渠道当前版本数据包的加密摘要信息;

所述软件升级装置还包括:

比对模块,用于对所述加密摘要信息进行解密,并将解密后的摘要信息与所述本渠道当前版本数据包的文档摘要进行比对;若相一致,则继续进行升级;若不一致,则中止升级。

进一步地,所述请求模块具体包括:

第一检测单元,用于检测所述软件是否有升级版本;

第二检测单元,用于在有升级版本时,检测所述软件是否有增量升级;以及,

下载地址获取单元,用于在有增量升级时,获取下载地址,并通过所述下载地址向所述服务端发送升级请求。

本发明实施例由于相同版本的各渠道软件之间的差异不会相差太大,因此各渠道增量包之间的差异也不会很大,服务端仅存储待升级软件的一个基准渠道增量包以及与各渠道相对应且数据量很小的二阶差分包,在对多渠道软件进行升级时,从服务端获取基准渠道增量包以及各渠道相对应的二阶差分包,即可计算出各渠道的增量包,完成各渠道软件的升级,从而有效减小服务端存储的数据量。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1