软件升级方法及装置、电子设备与流程

文档序号:12718850阅读:221来源:国知局
软件升级方法及装置、电子设备与流程

本申请涉及软件升级技术,尤其是涉及软件升级方法及装置、电子设备。



背景技术:

由于软件需要增加新功能、防止病毒入侵及修复原有部分漏洞(BUG),所以要从低版本更新到高版本,即软件升级,一般升级后的版本都会比原版本的性能更好,得到优化的效果,用户也能有更好的体验。

但是传统的软件升级方法中,用户使用软件时不能安装升级包,而且要花时间等待软件升级,这样会导致软件升级难以执行,更重要的是软件的性能优化及安全性的提高均会受到阻碍。



技术实现要素:

本申请提供一种软件升级方法及装置、电子设备,可以解决软件运行时不能安装新版本的问题。

根据本申请实施例的第一方面,提供一种软件升级的方法,该方法包括步骤:

获取软件的升级包并存储,升级包中的文件与原版本的文件存储的目录不同,所述软件的可执行文件的存储目录为相应文件的上级目录;

当触发软件升级事件时,利用该软件的可执行文件通知操作系统读取所述升级包中的文件,所述可执行文件用于在操作系统的指定接口中设置操作系统读取文件的顺序。

在某些例子中,所述软件包括多个插件,所述插件包括基础服务插件和其他功能相互独立的插件;所述基础服务插件用于其他插件之间的数据的通信。

在某些例子中,所述升级包包括封装了至少一个插件所对应的升级文件。

在软件运行时,如果检测到所述升级文件不是当前处于运行的插件所涉及的文件,则软件升级事件被触发。

在某些例子中,所述软件还包括升级插件,所述升级插件判断升级包中存在所述升级插件的升级文件时,升级插件停止运行,并触发软件升级事件。

在某些例子中,将获取的所述升级包与对应的信息-摘要算法值(MD5值)进行匹配,如果匹配成功,则将所述升级包存储;如果匹配不成功,则将所述升级包删除。

在某些例子中,判断所述软件存在多个实例时,由首个实例从服务器获取升级包。

在某些例子中,所述软件包括以下任意一种:应用程序、插件。

在某些例子中,当触发软件升级事件时,利用该软件的可执行文件通知操作系统读取所述升级包中的文件之后,该方法还包括步骤:

软件的原版本的文件未被读取时,删除原版本的文件。

本申请的另一方面,提供一种电子设备,包括:

处理器;

用于存储获取的升级包中的文件及原版本的文件的存储器;

所述处理器耦合于所述存储器,用于读取所述存储器存储的软件和文件,并做出响应,执行如下操作:

获取软件的升级包并存储,升级包中的文件与原版本的文件存储的目录不同,所述软件的可执行文件的存储目录为相应文件的上级目录;

当触发软件升级事件时,利用该软件的可执行文件通知操作系统读取所述升级包中的文件;所述可执行文件用于在操作系统的指定接口中设置操作系统读取文件的顺序。

本申请的第三方面,提供一种软件升级装置,包括:

获取模块,用于获取软件的升级包;

存储模块,用于将获取的软件升级包存储,升级包中的文件与原版本的文件存储的目录不同,所述软件的可执行文件的存储目录为相应文件的上级目录;

处理模块,用于当触发软件升级事件时,利用该软件的可执行文件通知操作系统读取所述升级包中的文件,所述可执行文件用于在操作系统的指定接口中设置操作系统读取文件的顺序。

本申请将升级包的存储目录结构改变,也就是让升级包与原版本的文件不在同一目录下,这样就可以在不影响原版本的文件运行的情况下完成升级包的下载(获取)、解压及安装过程,解决了传统的软件升级技术用户要花时间等待软件在后台完成升级包安装的问题。

附图说明

图1本申请一示例性实施例示出的应用环境的网络图;

图2本申请一示例性实施例示出的一种软件升级方法的部分流程图;

图3本申请一示例性实施例示出的一种软件存储结构示意图;

图4本申请一示例性实施例示出的软件的架构图;

图5本申请一示例性实施例示出的升级插件的自升级过程的部分流程图;

图6a本申请一示例性实施例示出的一种电子设备的硬件架构图;

图6b本申请一示例性实施例示出的一种软件升级装置的硬件架构图;

图7本申请一示例性实施例示出的一种软件升级装置的软件逻辑框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

本申请提供了一种对终端设备的软件升级的方法,如图1所示,软件升级是指从服务器120下载(获取)升级包121,并在终端设备100中存储,再解压、安装并生效的过程。其中,升级包解压、安装后为新版本的文件,生效过程为开始使用(也就是操作系统读取并运行新版本的文件)新版本的文件。

其中,终端设备100可以具有操作系统,例如Windows系统等。终端设备100还可以具有存储分区101。终端设备100还可以装载多个软件,这些软件相应的文件被存储在终端设备100的存储分区101中。

本申请中的软件可以包括应用程序、插件等。本申请对软件的类型并不做限定。

本申请中的终端设备可以是具有连网功能的设备,包括台式电脑,笔记本电脑、车载终端等。本申请对设备的类型并不做限定。

图2显示了一些例子中软件升级的方法的部分流程。

S201阶段,获取软件的升级包并存储,升级包中的文件与原版本的文件存储的目录不同,所述软件的可执行文件的存储目录为相应文件的上级目录。

S202阶段,当触发软件升级事件时,利用该软件的可执行文件通知操作系统读取所述升级包中的文件,所述可执行文件用于在操作系统的指定接口中设置操作系统读取文件的顺序。

通常,软件可以包含可执行文件和资源文件,本申请中,资源文件可以是提供图片等资源的文件,也可以是软件需要使用的动态链接库DLL。现有技术中,可执行文件和资源文件存储于同一目录,使得操作系统会默认首先读取可执行文件所在目录下的资源文件。本申请的实施例中,如S201阶段所述,改变了可执行文件和资源文件的存储结构,图3为本申请软件的存储结构的一个例子,如图3所示,可执行文件301存储在原版本302和升级包304的上级目录里,升级包304的文件和原版本302的文件存储在不同的目录里,升级包304在所存储的目录中解压、安装成为新版本303。在这里,可执行文件301可以不具有实现软件功能的逻辑,也就是不涉及文件的更新,而是作为软件的入口,通过控制操作系统调用相关接口读取新版本303的文件。可以看出,由于原版本302和升级包304处于不同的目录下,因此即便软件在运行时,也可以实现升级包304的安装,从而减少了用户下载安装升级包的等待时间;而可执行文件301在操作系统需要读取文件时,可以通知操作系统快速读取到新版本303的文件,新版本303的文件就生效了,因此通过以上过程,可以实现软件完成升级的全过程。

作为例子,可执行文件301可以在操作系统的指定接口中设置如下内容,以改变现有技术中操作系统的文件调用次序,使操作系统能够读取到新版本的升级文件:

从可执行文件的下级目录中查找版本号最高的文件所在目录(新版本的升级文件所在的目录);

使操作系统读取版本号最高的目录中的文件;

若操作系统无法读取到版本号最高的目录中的文件,则向用户提示重新下载升级包。

在某些例子中,可执行文件301还可以在操作系统的指定接口中设置如下内容:

读取并记录可执行文件的下级目录中文件的版本号;

使操作系统读取版本号最高的目录(新版本的升级文件所在的目录)中的文件;

若操作系统无法读取到版本号最高的目录中的文件,则操作系统读取版本号次高的目录中的文件。

在图2所揭示的技术方案启示下,为了能够更加快速的完成软件升级过程,本申请的一些例子中,对软件的设计架构进行了改进,软件的功能可以通过基础服务插件和其他相互独立的插件来实现。值得说明的是,本申请图2所揭示的技术方案并不限定软件的实现方式。

软件可以被拆分成各个独立的功能,并将各个功能作为独立的插件进行封装,由基础服务插件来实现其他功能独立的插件之间数据的通信。例如,如图4所示,YY语音软件的架构设计成包括基础服务插件401、视频直播插件402、IM和群插件403及其他功能插件404。由于各个插件相互独立,因此在软件运行的某一时刻可以存在一些处于运行状态的插件和一些未被运行的插件,可参见图4,当用户只观看直播的情况下,基础服务插件401和频道直播插件402处于运行状态,而其他插件如IM和群插件403未被运行。因此,本申请在一些例子中,通过检测升级文件是否涉及当前时刻未被加载的插件,来实现静默升级,仍可参见图4,如果检测到IM和群插件403存在相应的升级文件,且该插件当前并未运行,那么可以用新版本的IM和群插件403的升级文件直接替换掉原版本的IM和群插件403的文件,待用户点击IM和群插件403相关的功能图标(也就是触发升级事件)时,就可以使用新版本的IM和群插件403功能。可以看出,本实施例提供的方案能够更加快速升级,由于某一时刻只有少数插件中的文件会被使用,大多数插件处于懒加载状态。而对于处于懒加载状态的插件,可以及时快速替换,无需软件重启。即使某些插件中的文件已经被占用,但被占用的插件属于可重启的进程,也可以通过重启这些进程而避免软件重启。

一些例子中,软件还可以包括升级插件,升级插件用于向服务器发出升级包获取请求,按指定目录存储升级包的文件,及解压和安装升级包中的文件等。升级插件还可以拥有自升级能力,在某些实施例中升级插件可以按如下方式完成自升级过程,如图5所示,升级插件自升级步骤如下:

S501阶段,开启软件运行,当软件开始运行时,升级插件便开始运行(S502阶段)。

S503阶段,升级插件向服务器发出升级包请求指令,服务器获取升级插件对应软件的版本号,若升级插件提供的版本号低于服务器中的升级包的版本号,则允许升级插件获取升级包。获取到的升级包与原版本的文件存储的目录不同,接着将升级包解压及安装(S504阶段)到存储目录中。

S505阶段,升级插件判断新版本的文件中是否存在升级插件的升级文件:升级插件搜索新版本的文件中是否包含升级插件的升级文件,若不存在,不执行升级插件的自升级过程(S508阶段);若存在,则升级插件重新启动(S506阶段),这时已存在原版本和新版本的升级插件,软件的可执行文件会通知操作系统读取其中新版本的升级插件(S507阶段),这样升级插件的自升级过程完成。

在某些例子中,S202阶段所描述的触发软件升级事件可以是指触发读取升级包中的文件的事件,例如,该事件是用户主动点击相关功能按键触发,也可以是包括软件重启来触发升级事件,也可以是升级插件自升级时重启升级插件触发,或升级插件在检测到当前未运行的其他插件时触发。

在某些例子中,获取软件升级包后,为了保证升级包的安全性及合法性,需要将升级包中的各个文件与该文件所对应的信息-摘要算法值(MD5值)进行匹配,如果匹配成功则将升级包存储在原版本文件的上级目录中,如果匹配不成功则删除升级包中的错误文件,并再次向服务器请求该升级包的未匹配成功的文件,经过三次匹配均不成功则不再向服务器发出请求指令。

由于大多数的软件可以同时运行多个实例,该实例为运行中的软件,例如,用户同时开启多个QQ客户端时,每个QQ客户端即为一个实例。如果每个实例均向软件对应的服务器发出获取升级包的指令,这样会造成服务器的拥塞及存储空间的浪费,为了避免前述问题,在获取软件的升级包并存储之前,检测到软件存在多个实例时,由首个实例从服务器获取升级包并存储。

为了及时清理原版本的文件,减少对储存空间的占用率,在某些例子中,在获取软件的升级包并存储之后,如果检测到软件的原版本的文件未被占用(读取),那么删除原版本的文件,或者用新版本的文件替换软件的原版本的文件。

与前述软件升级方法的实施例相对应,本申请还提供了软件升级的处理装置的实施例。

本申请软件升级装置可以应用在电子设备上。电子设备的硬件框图可以参考图6a,电子设备可以包括处理器、内存、网络接口以及非易失性存储器等硬件。本申请软件升级装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6b所示,为本申请软件升级装置所在电子设备的一种硬件结构图,除了图6b所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。某些例子中,处理器耦合于所述存储器,用于读取所述存储器存储的软件和文件,并做出响应,执行如下操作:

获取软件的升级包并存储,升级包中的文件与原版本的文件存储的目录不同,所述软件的可执行文件的存储目录为相应文件的上级目录;

当触发软件升级事件时,利用该软件的可执行文件通知操作系统读取所述升级包中的文件,所述可执行文件用于在操作系统的指定接口中设置操作系统读取文件的顺序。

请参考图7,软件升级装置700,包括:

获取模块701,用于获取软件的升级包;

存储模块702,用于将获取的软件升级包存储,升级包中的文件与原版本的文件存储的目录不同,所述软件的可执行文件的存储目录为相应文件的上级目录;

处理模块703,用于当触发软件升级事件时,利用该软件的可执行文件通知操作系统读取所述升级包中的文件,所述可执行文件用于在操作系统的指定接口中设置操作系统读取文件的顺序。

在某些例子中,存储模块702中存储的软件包括多个插件,所述插件包括基础服务插件和其他功能相互独立的插件;所述基础服务插件用于其他插件之间的数据的通信。

在某些例子中,存储模块702中存储的升级包包括封装了至少一个插件所对应的升级文件。

处理模块703在软件运行时,如果检测到所述升级文件不是当前处于运行的插件所涉及的文件,则软件升级事件被触发。

另外,在某些例子中,存储模块702中存储的软件还包括升级插件,所述升级插件通过处理模块703判断升级包中存在所述升级插件的升级文件时,控制升级插件停止运行,并触发软件升级事件。

在某些例子中,处理模块703将获取模块701获取的所述升级包与对应的信息-摘要算法值(MD5值)进行匹配,如果匹配成功,则将所述升级包存储到存储模块702;如果匹配不成功,则将所述升级包删除。

在某些例子中,处理模块703判断所述软件存在多个实例时,由首个实例从服务器获取升级包。

在某些例子中,处理模块703触发软件升级事件时,利用该软件的可执行文件通知操作系统读取所述升级包中的文件之后,软件的原版本的文件未被读取时,删除原版本的文件。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

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

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