一种软件启动方法、装置、终端和存储介质与流程

文档序号:15271113发布日期:2018-08-28 22:26阅读:135来源:国知局

本发明实施例涉及软件技术领域,尤其涉及一种软件启动方法、装置、终端和存储介质。



背景技术:

随着手机、平板电脑等终端的不断发展,终端上安装的应用软件越来越多,应用软件的更新迭代速度也越来越快。

通常,在应用软件启动时对软件进行更新。现有技术中的更新方法一般有两种,一种是当应用软件的主程序被启动时,检测软件是否需要更新,若需要更新,则启动程序包中的更新程序下载更新文件,并重新启动更新后主程序。另一种是应用软件的主程序的启动器被启动时,在启动器中检测主程序是否需要更新,若需要更新,则启动程序包中的更新程序下载更新文件,并启动更新后的主程序。对于上述两种更新方法而言,若需要更新程序包中的更新程序,比如update.exe,则手动将更新程序update.exe重命名为update.exe.tmp,然后在主程序被启动时,主程序检测当前目录下是否存在名为update.exe.tmp的文件,若存在,则将该文件重命名为原始文件名update.exe。

可见,现有技术中通常利用重命名的方式对更新程序进行更新。然而,这些更新过程较为繁琐,并且程序包中的更新程序更新完成后,需要等到下次再进行软件更新时才能利用更新后的更新程序进行更新,存在更新的延迟性,影响了用户体验。



技术实现要素:

本发明实施例提供了一种软件启动方法、装置、终端和存储介质,以解决利用重命名的方式对更新程序进行更新时存在的延迟性等问题,并且更新过程更加便捷,实现更新程序的实时更新。

第一方面,本发明实施例提供了一种软件启动方法,包括:

当目标软件的启动器被启动时,若所述目标软件的当前版本信息与更新版本信息不一致,则于更新服务器中下载所述目标软件对应的目标更新程序,并根据所述目标更新程序下载目标更新文件;

根据所述目标更新文件更新所述目标软件,并启动更新后的目标软件的主程序。

第二方面,本发明实施例还提供了一种软件启动装置,包括:

目标更新程序下载模块,用于当目标软件的启动器被启动时,若所述目标软件的当前版本信息与更新版本信息不一致,则于更新服务器中下载所述目标软件对应的目标更新程序,并根据所述目标更新程序下载目标更新文件;

主程序启动模块,用于根据所述目标更新文件更新所述目标软件,并启动更新后的目标软件的主程序。

第三方面,本发明实施例还提供了一种终端,所述终端包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的软件启动方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的软件启动方法。

本发明实施例通过在目标软件的启动器被启动时,若目标软件的当前版本信息与更新版本信息不一致,则于更新服务器中下载目标更新程序,根据目标更新程序下载目标更新文件,启动更新后的目标软件的主程序。本实施例将目标软件的目标更新程序预先放置在更新服务器上,当更新程序需要更新时,只需将更新后的更新程序放置在更新服务器上,从而解决了更新程序更新时需要重命名的问题。并且本实施例的技术方案在每次更新软件时,均是利用更新后的更新程序进行更新,保证了更新的实时性,提升了用户体验。

附图说明

图1是本发明实施例一提供的一种软件启动方法的流程图;

图2是本发明实施例二提供的一种软件启动方法的流程图;

图3是本发明实施例三提供的一种软件启动装置的结构示意图;

图4是本发明实施例四提供的一种终端的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的软件启动方法的流程图,本实施例可适用于在软件启动时对软件进行更新的情况,尤其是可以用于对客户端中应用程序的启动,同时也可以用于其他需要软件启动的应用场景中。该方法可以由软件启动装置来执行,该装置可以由软件和/或硬件的方式来实现,集成于智能终端中。该方法具体包括以下步骤:

s110、当目标软件的启动器被启动时,若目标软件的当前版本信息与更新版本信息不一致,则于更新服务器中下载目标软件对应的目标更新程序,并根据目标更新程序下载目标更新文件。

其中,目标软件可以是指任意一个应用程序。本实施例中启动目标软件的方式有两种,一种是通过目标软件的启动器来间接启动目标软件的主程序,另一种是直接启动目标软件的主程序。示例性的,启动器为launcher.exe,主程序为main.exe。当目标软件的启动器被启动时,则向更新服务器发送更新版本获取指令,更新服务器接收到更新版本获取指令后,向软件启动装置发送当前最新版本对应的更新版本信息。启动器接收到更新版本信息后,检测目标软件的当前版本信息与更新版本信息是否一致,若不一致,则表示目标软件需要更新,此时根据目标软件的软件标识在更新服务器中下载该软件标识对应的目标更新程序,并启动下载后的目标更新程序,根据目标更新程序中的目标更新文件对应的目标地址,下载目标更新文件。可选的,若目标软件的当前版本信息与更新版本信息一致,则表示目标软件无需更新,此时直接启动目标软件的主程序。

可选的,在目标软件的当前版本信息与更新版本信息不一致时,还包括:生成更新提醒信息,并于显示界面上显示更新提醒信息。

其中,更新提醒信息用于提醒用户是否进行软件更新。若用户想要更新软件,则向软件启动装置发送更新指令,启动器接收到更新指令时,于更新服务器中下载目标软件对应的目标更新程序。若用户不想更新软件,则向软件启动装置发送忽略更新指令,软件启动装置接收到忽略更新指令时,直接启动当前版本软件的主程序,不会对软件进行更新。从而满足用户的个性化需求。

需要注意的是,本实施例中的更新程序是直接放置在更新服务器上,并没有放置在软件的程序包中。当每次更新软件时,需要从更新服务器中下载更新程序。所以对更新程序进行更新时,无需利用重命名的方式进行更新,只需将更新后的更新程序替换更新服务器上的原有更新程序,更新过程更加便捷。同时由于更新程序设置于更新服务器中,可实现对更新程序的动态更新,并且每次利用更新程序进行更新时,启动的更新程序均是更新后的更新程序,解决了现有技术中存在的版本延迟性的问题,使得用户每次均是利用最新版本的更新程序进行软件更新,提升了用户体验。

s120、根据目标更新文件更新目标软件,并启动更新后的目标软件的主程序。

其中,当目标软件的当前版本信息与更新版本信息不一致时,将在更新服务器中下载的目标更新文件覆盖到目标程序的当前存储路径中,从而将目标软件更新至当前最新版本。软件更新结束后,启动更新后的目标软件的主程序,从而运行最新版本的软件,实现了软件启动时的自动更新。

可选的,在s110之前,还包括:

接收目标软件的启动指令,其中,启动指令的启动对象为启动器或者主程序。

其中,目标软件的启动指令是由用户通过点击操作发送的。示例性的,若用户在启动目标软件时,直接点击的是主程序main.exe,则发送的启动指令的启动对象为主程序;若用户在启动目标软件时,直接点击的是启动器launcher.exe,则发送的启动指令的启动对象为启动器。当启动指令的启动对象是启动器时,目标软件的启动器被启动,从而通过主程序的启动器间接启动主程序。当启动指令的启动对象是主程序时,目标软件的主程序被启动,从而直接启动主程序。

本发明实施例通过在目标软件的启动器被启动时,若目标软件的当前版本信息与更新版本信息不一致,则于更新服务器中下载目标更新程序,根据目标更新程序下载目标更新文件,启动更新后的目标软件的主程序。本实施例将目标软件的目标更新程序预先放置在更新服务器上,当更新程序需要更新时,只需将更新后的更新程序放置在更新服务器上,从而解决了更新程序更新时需要重命名的问题。并且本实施例的技术方案在每次更新软件时,均是利用更新后的更新程序进行更新,保证了更新的实时性,提升了用户体验。

实施例二

图2为本发明实施例二提供的一种软件启动方法的流程图,本实施例在上述实施例的基础上进行优化:当主程序被启动时,确定主程序的父进程信息;根据父进程信息确定主程序的启动方式。

优化后的软件启动方法具体包括以下步骤:

s210、接收目标软件的启动指令,若启动指令的启动对象为启动器,则进入s220;若启动指令的启动对象为主程序,则进入s230。

s220、检测目标软件的当前版本信息与更新版本信息是否一致,若否,则进入s240;若是,则进入s250。

s230、启动目标软件的主程序,并进入s270。

s240、于更新服务器中下载目标软件对应的目标更新程序,并根据目标更新程序下载目标更新文件,并进入s260。

s250、将主程序作为启动对象,并启动。

s260、根据目标更新文件更新目标软件,并启动更新后的目标软件的主程序,并进入s270。

s270、确定主程序的父进程信息。

其中,目标软件的主程序可以通过启动器启动,也可以直接启动。本实施例在利用启动器启动主程序时,可以执行软件更新检测操作,而在直接启动主程序时,因跳过了更新检测部分,所以不会存在软件更新过程。因此需要根据主程序的父进程信息来确定主程序如何启动,从而避免直接启动主程序时导致的无法自动更新软件的问题。示例性的,将通过启动器启动主程序的操作作为合法的启动,将直接启动主程序的操作作为非法的启动。

可选的,s270包括:初始化系统进程快照;根据系统进程快照和主程序进程标识确定主程序对应的父进程标识;根据系统进程快照和父进程标识确定父进程信息。

其中,本实施例通过调用createtoolhelp32snapshot函数,并将参数th32cs_snapprocess设置到该函数中,从而初始化当前系统进程快照,以获取当前系统正在运行的所有进程信息。当前的主程序进程标识可以通过getcurrentprocessid系统函数来获取。本实施例中的进程标识可以是指进程的id编号。根据系统正在运行的所有进程信息和主程序对应的父进程标识来确定父进程信息。可选的,父进程信息可以是但不限于父进程的文件名信息。

可选的,根据系统进程快照和主程序进程标识确定主程序对应的父进程标识,包括:根据系统进程快照,遍历除系统进程外各个进程的进程标识,将与主程序进程标识相同的进程确定为第一目标进程;读取第一目标进程中的父进程标识字段,并根据父进程标识字段确定主程序对应的父进程标识。

其中,通过调用process32first,获取一个processentry32结构,其中processentry32是用于存放快照进程信息的一个结构体,结构体中的th32processid表示的是进程标识。通过调用process32first获取的processentry32结构体代表的是系统的第一个进程,该进程通常是一个系统进程,不会是用户指定的进程,如游戏进程。所以通过调用process32next,获取第二个processentry32结构,根据结构体中的th32processid字段确定第二个进程对应的进程标识,并判断第二个进程对应的进程标识是否与主程序进程标识相同,若不相同,则通过调用process32next,继续获取下一个processentry32结构;若相同,则将该进程确定为第一目标进程,并读取第一目标进程的processentry32结构体中的th32parentprocessid字段,将该字段内容确定为主程序对应的父进程标识,其中,th32parentprocessid字段为父进程标识字段。

可选的,根据系统进程快照和父进程标识确定父进程信息,包括:

根据系统进程快照,遍历除系统进程外各个进程的进程标识,将与父进程标识相同的进程确定为第二目标进程;读取第二目标进程中的信息字段,并根据信息字段确定父进程信息。

其中,根据与确定父进程标识类似的方法来确定主程序对应的父进程信息。本实施例重新调用process32first,获取processentry32结构体代表的是系统的第一个进程,该进程通常是一个系统进程,不会是用户指定的进程,如游戏进程。所以需要继续调用process32next,获取第二个processentry32结构,根据结构体中的th32processid字段确定第二个进程对应的进程标识,并判断第二个进程对应的进程标识是否与父进程标识相同,若不相同,则通过调用process32next,继续获取下一个processentry32结构;若相同,则将该进程确定为第二目标进程,并读取第二目标进程的processentry32结构体中的信息字段,其中,信息字段可以是szexefile字段,将该字段信息确定为父进程信息。本实施例中的父进程信息可以是启动器信息,也可以是更新程序信息,还可以是除启动器信息和更新程序信息外的其他信息。

s280、根据父进程信息确定主程序的启动方式。若父进程信息为启动器信息或者更新程序信息,则进入s290,若父进程信息为除启动器信息和更新程序信息外的其他信息,则进入s291。

其中,本实施例中主程序的启动方式可以包括继续启动和重新启动两种。当父进程信息为启动器信息时,比如launcher.exe,表明主程序是通过启动器启动的,并且检测的当前版本信息与更新版本信息一致,目标软件已经是最新版本的软件,即主程序是通过s250方式启动的。当父进程信息为更新程序信息时,比如update.exe,表明主程序是通过更新程序启动的,启动的是更新后的主程序,即主程序是通过s260方式启动的。当父进程信息为除启动器信息和更新程序信息外的其他信息,表明该主程序是一次非法的启动操作,即既不是启动器启动的,也不是更新程序启动的,所以有可能是主程序直接启动的,即主程序是通过s230方式启动的,此时即便目标软件的版本不是最新版本,也不会对主程序进行更新操作。

s290、继续启动主程序。

其中,根据父进程信息确定主程序是通过启动器或者更新程序启动时,表示主程序的启动是合法的,此时可以继续启动主程序,从而使得启动的主程序是最新版本的主程序。

s291、创建启动器进程,退出主程序并启动启动器进程,并进入s220。

其中,根据父进程信息确定主程序既不是启动器启动的,也不是更新程序启动时,表示主程序启动时未进行更新检测,此时创建启动器进程,退出主程序后,启动创建的启动器进程,从而将启动器作为启动对象进入s220,通过启动器重新启动主程序,以在启动过程中进行更新检测。当启动启动器进程后,若目标软件需要更新,则从更新服务器中下载目标更新程序进行软件更新,并在更新完成后,启动主程序,此次主程序的父进程信息为更新程序信息,是合法的启动。若目标软件无需更新,则直接启动主程序,此次主程序的父进程信息为启动器信息,也是合法的启动。从而无论如何启动主程序,都可以自动进行更新,避免了不是利用启动器启动主程序时而导致的主程序无法自动更新的问题。

本实施例的技术方案通过在主程序被启动时,根据主程序的父进程信息确定主程序的启动方式。若进程信息为除启动器信息和更新程序信息外的其他信息,则创建启动器进程,退出主程序并启动启动器进程,从而使得主程序可以通过启动器重新启动,以使主程序在启动时也会执行更新检测操作,解决了用户直接启动主程序时导致的软件系统无法进行自动更新的问题,进一步提升了用户体验。

实施例三

图3为本发明实施例三提供的一种软件启动装置的结构示意图,本实施例可适用于在软件启动时对软件进行更新的情况,该装置包括:目标更新程序下载模块310和主程序启动模块320。

其中,目标更新程序下载模块310,用于当目标软件的启动器被启动时,若目标软件的当前版本信息与更新版本信息不一致,则于更新服务器中下载目标软件对应的目标更新程序,并根据目标更新程序下载目标更新文件;主程序启动模块320,用于根据目标更新文件更新目标软件,并启动更新后的目标软件的主程序。

可选的,该装置还包括:

启动指令接收模块,用于在目标软件的启动器被启动之前,接收目标软件的启动指令,其中,启动指令的启动对象为启动器或者主程序。

可选的,该装置还包括:

父进程信息确定模块,用于当主程序被启动时,确定主程序的父进程信息;

启动方式确定模块,用于根据父进程信息确定主程序的启动方式。

可选的,启动方式确定模块,具体用于:

若父进程信息为启动器信息或者更新程序信息,则继续启动主程序;

若父进程信息为除启动器信息和更新程序信息外的其他信息,则创建启动器进程,退出主程序并启动启动器进程。

可选的,父进程信息确定模块包括:

进程快照初始化模块,用于初始化系统进程快照;

父进程标识确定模块,用于根据系统进程快照和主程序进程标识确定主程序对应的父进程标识;

父进程信息确定模块,用于根据系统进程快照和父进程标识确定父进程信息。

可选的,父进程标识确定模块,具体用于:

根据系统进程快照,遍历除系统进程外各个进程的进程标识,将与主程序进程标识相同的进程确定为第一目标进程;

读取第一目标进程中的父进程标识字段,并根据父进程标识字段确定主程序对应的父进程标识。

可选的,父进程信息确定模块,具体用于:

根据系统进程快照,遍历除系统进程外各个进程的进程标识,将与父进程标识相同的进程确定为第二目标进程;

读取第二目标进程中的信息字段,并根据信息字段确定父进程信息。

上述软件启动装置可执行本发明任意实施例所提供的软件启动方法,具备执行软件启动方法相应的功能模块和有益效果。

实施例四

图4是本发明实施例四提供的一种终端的结构示意图。参见图4,该终端包括:

一个或多个处理器410;

存储器420,用于存储一个或多个程序;

当一个或多个程序被一个或多个处理器410执行,使得一个或多个处理器410实现如上述实施例中任一实施例提出的软件启动方法。

图4中以一个处理器410为例;终端中的处理器410和存储器420可以通过总线或其他方式连接,图4中以通过总线连接为例。

存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的软件启动方法对应的程序指令/模块(例如,软件启动装置中的目标更新程序下载模块310和主程序启动模块320)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的软件启动方法。

存储器420主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本实施例提出的终端与上述实施例提出的软件启动方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行软件启动方法相同的有益效果。

实施例五

本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的软件启动方法。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的软件启动方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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