发明内容
本申请实施例提供了一种更新方法、装置及系统,可以解决现有技术中的更新方法不能在应用需要更新时立即进行更新和对于不具有UI的应用插件用户通常很难进行更新的问题。
第一方面,提供了一种更新方法,该方法包括:
终端设备启动守护进程,所述守护进程运行第一可执行文件;
通过所述守护进程向服务器周期性发送更新咨询信息;
接收所述服务器根据所述更新咨询信息返回的更新任务信息,所述更新任务信息中携带有更新包摘要信息;
所述终端设备根据所述更新包摘要信息下载更新包,所述更新包中包括安装脚本和更新文件;
通过所述安装脚本运行所述更新文件。
第二方面,提供了一种更新装置,该装置包括:启动单元、信息发送单元、接收单元、下载单元和运行单元;
所述启动单元,用于启动守护进程,所述守护进程运行第一可执行文件;
所述信息发送单元,用于通过所述启动单元启动的守护进程向服务器周期性发送更新咨询信息;
所述接收单元,用于接收所述服务器根据所述更新咨询信息返回的更新任务信息,所述更新任务信息中携带有更新包摘要信息;
所述下载单元,用于根据所述更新包摘要信息下载更新包,所述更新包中包括安装脚本和更新文件;
所述运行单元,用于通过所述下载单元下载的更新包中包括的安装脚本运行所述更新文件。
第三方面,提供了一种更新系统,该系统包括:终端设备和服务器;
所述终端设备,包括启动单元、信息发送单元、接收单元、下载单元和运行单元;
所述启动单元,用于启动守护进程,所述守护进程运行第一可执行文件;
所述信息发送单元,用于通过所述启动单元启动的守护进程向服务器周期性发送更新咨询信息;
所述接收单元,用于接收所述服务器根据所述更新咨询信息返回的更新任务信息,所述更新任务信息中携带有更新包摘要信息;
所述下载单元,用于根据所述更新包摘要信息下载更新包,所述更新包中包括安装脚本和更新文件;
所述运行单元,用于通过所述下载单元下载的更新包中包括的安装脚本运行所述更新文件;
所述服务器包括:信息接收单元、更新任务发送单元和更新包传输单元;
所述信息接收单元,用于接收所述终端设备通过守护进程周期性发送的更新咨询信息;
所述更新任务发送单元,用于根据所述信息接收单元接收的更新咨询信息返回更新任务信息,所述更新任务信息中携带有更新包摘要信息;
所述更新包传输单元,用于当所述终端设备根据所述更新包摘要信息下载更新包时,向所述终端设备传输所述更新包,所述更新包中包括安装脚本和更新文件。
本申请提供的更新方法、装置及系统,通过守护进程向服务器周期性发送更新咨询信息,并根据服务器返回的更新包摘要信息下载更新包,更新包中包括安装脚本和更新文件,通过安装脚本运行更新文件。由上可见,本申请实施例通过守护进程可以实现自动更新,无需用户手动操作,因此可以根据服务器端的预设策略,在应用需要更新时立即进行更新,并且对于不具有UI的应用插件也可以实现自动更新。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于对本申请实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本申请实施例的限定。
本申请实施例提供的更新方法、装置及系统,适用于对应用进行更新,也适用于对守护进程进行更新。
图1为本申请实施例一提供的更新方法流程图,所述方法的执行主体可以为用户使用的终端设备,例如,智能手机、电脑等,如图1所示,所述方法具体包括:
步骤101,终端设备启动守护进程,守护进程运行第一可执行文件。
本申请实施例中可以预先向用户提供安装包配置文件,例如pkg文件,上述安装包配置文件可以但不限于包括:plist守护进程描述文件和第一可执行文件。
其中,plist守护进程描述文件可以用于设置守护进程的配置参数,例如,keepAlive配置参数,以便系统可以根据上述配置参数在守护进程停止后,重新启动该守护进程。
第一可执行文件具体为守护进程可执行文件,通过守护进程运行第一可执行文件,可以实现步骤102至步骤105的处理过程,即获取更新任务信息,以及根据更新任务信息进行更新。具体地,终端设备通过守护进程运行第一可执行文件可以向服务器周期性发送更新咨询信息,并接收服务器根据更新咨询信息返回的更新任务信息,更新任务信息中携带有更新包摘要信息,终端设备根据更新包摘要信息下载更新包,更新包中包括安装脚本和更新文件,通过安装脚本运行更新文件。
步骤102,终端设备通过守护进程向服务器周期性发送更新咨询信息。
步骤103,终端设备接收服务器根据更新咨询信息返回的更新任务信息,更新任务信息中携带有更新包摘要信息。
其中,可以预先在终端设备侧设置第一更新周期,例如,设置第一更新周期为24小时,则每隔24小时终端设备会通过守护进程向服务器发送一次更新咨询信息。
本申请实施例中,也可以在服务器侧设置第二更新周期,例如,设置第二更新周期为12小时,则每隔12小时服务器会形成一次更新任务列表,以便服务器可以根据接收到的更新咨询信息向终端设备返回更新任务信息。
通过设置第一更新周期和/或第二更新周期,可以管理应用的更新周期,具体可以为管理产品组件的更新周期。
步骤104,终端设备根据更新包摘要信息下载更新包,更新包中包括安装脚本和更新文件。
其中,安装脚本用于安装更新文件,上述更新文件可以包括第二可执行文件和/或应用更新文件。
第二可执行文件具体为守护进程可执行文件,可以通过第二可执行文件替换第一可执行文件从而实现守护进程的更新,通过守护进程运行第二可执行文件,也可以实现获取更新任务信息,以及根据更新任务信息进行更新的处理过程。具体地,终端设备通过守护进程运行第二可执行文件可以向服务器周期性发送更新咨询信息,并接收服务器根据更新咨询信息返回的更新任务信息,更新任务信息中携带有更新包摘要信息,终端设备根据更新包摘要信息下载更新包,更新包中包括安装脚本和更新文件,通过安装脚本运行更新文件。
步骤105,终端设备通过安装脚本运行更新文件。
其中,当上述更新包还包括代码签名时,在终端设备通过安装脚本运行更新文件之前,还包括:对更新包进行代码签名验证处理,并在验证通过后执行所述通过所述安装脚本运行所述更新文件的步骤。
其中,更新文件具体可以包括一个文件,也可以包括多个文件,当更新文件包括多个文件时,该更新方法可以用于对应用的多个功能组件进行更新,此时可以由服务器对更新文件中的多个文件均进行代码签名,以保证更新包的完整性和不可抵赖性。
本申请实施例中,当更新文件包括第二可执行文件时,终端设备通过安装脚本运行更新文件具体可以包括:用第二可执行文件替换第一可执行文件;停止守护进程;根据守护进程的配置参数,重新启动守护进程。
当更新文件包括应用更新文件时,终端设备通过安装脚本运行更新文件具体为:执行应用更新文件。
由上述处理过程可知,本申请实施例提供的更新方法,通过守护进程向服务器周期性发送更新咨询信息,并根据服务器返回的更新包摘要信息下载更新包,更新包中包括安装脚本和更新文件,通过安装脚本运行更新文件。由上可见,本申请实施例不仅可以实现自动更新,而且可以在终端设备侧或者网络侧设置更新周期,从而便捷快速的完成各种更新。
为了修复守护进程中存在的漏洞(bug),有时也需要对守护进程进行更新,现有技术中,守护进程更新通常包括下述处理过程:主进程下载进程更新包;主进程创建子进程;子进程停止主进程;子进程安装更新包;重启主进程完成更新。上述更新方法仅适用于Windos操作系统下的守护进程更新,不适用于OSX操作系统下的守护进程更新,由于在OSX操作系统下,子进程的生命周期在包含在主进程内,主进程被停止后,子进程也会退出,从而不能将主进程替换并更新,也就是说无法实现OSX操作系统下的守护进程自动更新,为此本发明实施例提供了一种更新方法,该更新方法适用于OSX操作系统下的守护进程自动更新。
图2为本申请实施例二提供的更新方法流程图,该方法中仅包括守护进程的更新,不包括应用的更新,如图2所示,该方法具体包括:
步骤201,终端设备启动守护进程,守护进程运行第一可执行文件。
本申请实施例中可以预先向用户提供安装包配置文件,例如pkg文件,上述安装包配置文件可以但不限于包括:plist守护进程描述文件和第一可执行文件。
其中,plist守护进程描述文件可以用于设置守护进程的配置参数,以便可以根据上述配置参数在守护进程停止后,重新启动该守护进程。
步骤202,终端设备通过守护进程向服务器周期性发送更新咨询信息。
步骤203,终端设备接收服务器根据更新咨询信息返回的更新任务信息,更新任务信息中携带有更新包摘要信息。
步骤204,终端设备根据更新包摘要信息下载更新包,更新包中包括安装脚本和更新文件。
其中,上述更新文件具体包括第二可执行文件。
步骤205至步骤207为安装脚本的执行过程,守护进程相当于主进程,脚本进程相当于子进程。
步骤205,用第二可执行文件替换第一可执行文件。
步骤206,停止守护进程。
当守护进程关闭后,脚本进程也已停止。
步骤207,根据守护进程的配置参数,重新启动守护进程。
系统可以根据守护进程的keepAlive配置参数,再次启动守护进程,此时守护进程被更新,新的功能模块在运行。
由上述处理过程可知,本申请更新方法实施例中,不是停止主进程后,由子进程安装更新包,而是在守护进程运行时,用第二可执行文件替换第一可执行文件,由于OSX操作系统下允许替换、删除正在运行的程序,因此可以实现上述文件替换,在停止守护进程后,根据守护进程的配置参数,重新启动守护进程,此时守护进程运行已被替换的第二可执行文件,至此,已完成守护进程更新。
图3为本申请实施例三提供的更新方法流程图,该方法中仅包括应用的更新,不包括守护进程的更新,如图3所示,该方法具体包括:
步骤301,终端设备启动守护进程,守护进程运行第一可执行文件。
本申请实施例中可以预先向用户提供安装包配置文件,例如pkg文件,上述安装包配置文件可以但不限于包括:plist守护进程描述文件和第一可执行文件。
其中,plist守护进程描述文件可以用于设置守护进程的配置参数,以便可以根据上述配置参数在守护进程停止后,重新启动该守护进程。
步骤302,终端设备通过守护进程向服务器周期性发送更新咨询信息。
步骤303,终端设备接收服务器根据更新咨询信息返回的更新任务信息,更新任务信息中携带有更新包摘要信息。
步骤304,终端设备根据更新包摘要信息下载更新包,更新包中包括安装脚本和更新文件。
其中,上述更新文件具体包括应用更新文件。
步骤305,通过安装脚本执行上述应用更新文件。
由上述处理过程可知,本申请更新方法实施例中,可以实现应用的自动更新,并且方便网络应用提供商在服务器端进行产品的快速部署和应用,只需要在更新包里添加产品应用,在安装脚本中部署即可,安装脚本具体可以为install.sh文件。守护进程拥有root权限,脚本进程相当于子进程,子进程会继承守护进程的权限进行子更新和下发各类新产品应用。
图4为本申请实施例四提供的更新方法流程图,该方法中既包括应用的更新,也包括守护进程的更新,如图4所示,该方法具体包括:
步骤401,终端设备启动守护进程,守护进程运行第一可执行文件。
本申请实施例中可以预先向用户提供安装包配置文件,例如pkg文件,上述安装包配置文件可以但不限于包括:plist守护进程描述文件和第一可执行文件。
其中,plist守护进程描述文件可以用于设置守护进程的配置参数,以便可以根据上述配置参数在守护进程停止后,重新启动该守护进程。
步骤402,终端设备通过守护进程向服务器周期性发送更新咨询信息。
步骤403,终端设备接收服务器根据更新咨询信息返回的更新任务信息,更新任务信息中携带有更新包摘要信息。
步骤404,终端设备根据更新包摘要信息下载更新包,更新包中包括安装脚本和更新文件。
其中,上述更新文件具体包括第二可执行文件和应用更新文件。
步骤405,通过安装脚本执行上述应用更新文件。
其中,当所述更新包为压缩文件时,在所述通过所述安装脚本运行所述更新文件之前,还包括:对所述更新包进行解压缩处理,获得所述安装脚本和所述更新文件。
步骤406,用第二可执行文件替换第一可执行文件。
步骤407,停止守护进程。
步骤408,根据守护进程的配置参数,重新启动守护进程。
由上述处理过程可知,本申请更新方法实施例中,可以实现应用的自动更新,也可以实现守护进程的自动更新。
与上述更新方法对应地,本申请实施例还提供了一种更新装置,如图5所示,该更新装置包括:启动单元501、信息发送单元502、接收单元503、下载单元504和运行单元505;
所述启动单元501,用于启动守护进程,所述守护进程运行第一可执行文件;
所述信息发送单元502,用于通过所述启动单元501启动的守护进程向服务器周期性发送更新咨询信息;
所述接收单元503,用于接收所述服务器根据所述更新咨询信息返回的更新任务信息,所述更新任务信息中携带有更新包摘要信息;
所述下载单元504,用于根据所述更新包摘要信息下载更新包,所述更新包中包括安装脚本和更新文件;
所述运行单元505,用于通过所述下载单元504下载的更新包中包括的安装脚本运行所述更新文件。
较佳地,所述下载单元504下载的更新包中包括的更新文件包括第二可执行文件;
所述运行单元505包括:
文件替换子单元,用于用所述第二可执行文件替换所述第一可执行文件;
进程停止子单元,用于停止所述守护进程;
重启动子单元,用于根据所述守护进程的配置参数,重新启动所述守护进程。
较佳地,所述下载单元504下载的更新包中包括的更新文件包括应用更新文件;
所述运行单元505包括:
应用更新子单元,用于执行所述应用更新文件。
较佳地,所述下载单元504下载的更新包中包括的更新文件包括第二可执行文件和应用更新文件;
所述运行单元505包括:
应用更新子单元,用于执行所述应用更新文件;
文件替换子单元,用于用所述第二可执行文件替换所述第一可执行文件;
进程停止子单元,用于停止所述守护进程;
重启动子单元,用于根据所述守护进程的配置参数,重新启动所述守护进程。
较佳地,所述下载单元504下载的更新包为压缩文件;
该装置还包括:
解压缩单元,用于在所述运行单元505通过所述安装脚本运行所述更新文件之前,对所述更新包进行解压缩处理,获得所述安装脚本和所述更新文件。
较佳地,所述下载单元504下载的更新包还包括代码签名;
该装置还包括:
签名验证单元,用于在所述运行单元505通过所述安装脚本运行所述更新文件之前,对所述更新包进行代码签名验证处理;
所述运行单元505具体用于,在所述签名验证单元验证通过后通过所述安装脚本运行所述更新文件。
与上述更新方法对应地,本申请实施例还提供了一种更新系统,如图6所示,该更新系统包括:终端设备601和服务器602;
所述终端设备,包括启动单元6011、信息发送单元6012、接收单元6013、下载单元6014和运行单元6015;
所述启动单元6011,用于启动守护进程,所述守护进程运行第一可执行文件;
所述信息发送单元6012,用于通过所述启动单元6011启动的守护进程向服务器周期性发送更新咨询信息;
所述接收单元6013,用于接收所述服务器根据所述更新咨询信息返回的更新任务信息,所述更新任务信息中携带有更新包摘要信息;
所述下载单元6014,用于根据所述更新包摘要信息下载更新包,所述更新包中包括安装脚本和更新文件;
所述运行单元6015,用于通过所述下载单元6014下载的更新包中包括的安装脚本运行所述更新文件;
所述服务器602包括:信息接收单元6021、更新任务发送单元6022和更新包传输单元6023;
所述信息接收单元6021,用于接收所述终端设备通过守护进程周期性发送的更新咨询信息;
所述更新任务发送单元6022,用于根据所述信息接收单元6021接收的更新咨询信息返回更新任务信息,所述更新任务信息中携带有更新包摘要信息;
所述更新包传输单元6023,用于当所述终端设备根据所述更新包摘要信息下载更新包时,向所述终端设备传输所述更新包,所述更新包中包括安装脚本和更新文件。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的对象及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。