CN107608706B - 一种基于功能模块的应用程序自动热更新方法 - Google Patents

一种基于功能模块的应用程序自动热更新方法 Download PDF

Info

Publication number
CN107608706B
CN107608706B CN201710882395.6A CN201710882395A CN107608706B CN 107608706 B CN107608706 B CN 107608706B CN 201710882395 A CN201710882395 A CN 201710882395A CN 107608706 B CN107608706 B CN 107608706B
Authority
CN
China
Prior art keywords
update
version
information
application program
update package
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710882395.6A
Other languages
English (en)
Other versions
CN107608706A (zh
Inventor
张蓉
黄礼成
邓钢
雍志伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Halu Information Technology Co ltd
Original Assignee
Nanjing Halu Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Halu Information Technology Co ltd filed Critical Nanjing Halu Information Technology Co ltd
Priority to CN201710882395.6A priority Critical patent/CN107608706B/zh
Publication of CN107608706A publication Critical patent/CN107608706A/zh
Application granted granted Critical
Publication of CN107608706B publication Critical patent/CN107608706B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种基于功能模块的应用程序自动热更新方法,通过使应用程序定时向版本服务器发送包含自身主程序版本和各功能模块版本信息的版本查询协议,并接收所有匹配可用的更新包描述信息,然后依次执行下载更新包、记录更新日志、功能模块替换、版本信息切换和恢复运行,其中,功能模块替换前先记录待更新日志,并通知需要进行更新的各功能模块停止运行,并且仅在更新安装成功后才恢复更新日志及切换记录新版本信息;版本服务器能实时通知所有在线运行的应用程序进行更新,从而达到了更新过程最大限度不干扰原有程序运行,并在更新错误及失败的情况下都能重复安装成功,以及能通过版本服务器实时通知应用程序第一时间更新的技术目的。

Description

一种基于功能模块的应用程序自动热更新方法
技术领域
本发明涉及一种应用程序自动热更新解决方法,属于计算机软件领域。
背景技术
现有的程序更新通常采用在程序启动时运行单独的辅助进程来进行,从而实现对业务主进程进行更新。这种程序更新方式,在更新的过程中会一次或多次的在两个或多个进程中进行切换,来完成版本检测、版本更新的目的。这种传统的更新方式不仅繁琐,而且限定了更新的时机必须处于主进程退出后。
另外,如果用户长时间不退出主进程,可能会导致更新解决问题的时间可能被无限延长,问题带来的损失可能被无限扩大。
很多应用软件平台传统的整包更新,更是会导致每次更新体积过大,冗余文件极多,用户更新的成本非常高。非常的浪费网络流量和用户的时间。
发明内容
为了克服上述现有技术的不足,本发明旨在提供一种基于功能模块的应用程序自动热更新方法,通过执行版本查询比对,应用程序定时向版本服务器发送包含自身主程序版本和各功能模块版本信息的版本查询协议,并接收所有匹配可用的更新包描述信息,然后依次执行下载更新包、记录更新日志、功能模块替换、版本信息切换和恢复运行,其中,功能模块替换前先记录待更新日志,并通知需要进行更新的各功能模块停止运行,并且仅在更新安装成功后才恢复已更新日志及切换为新版本信息;当版本服务器探测到出现新的更新包后,立即将此更新包描述信息通知所有在线运行的应用程序,并提示选择更新或强制更新,以达到应用程序更新过程最大限度不干扰原有程序运行,并在更新过程发生错误、不匹配和安装失败的情况下都能重复安装成功,以及能通过版本服务器实时通知应用程序第一时间更新的技术目的。
为此,一种基于功能模块的应用程序自动热更新方法,包括如下步骤:
1)版本查询比对,应用程序定时向版本服务器发送包含自身主程序版本和各功能模块版本信息的版本查询协议,并接收所有匹配可用的更新包描述信息,其中,所述更新包包括更新脚本和更新程序文件,并表现为压缩文件格式,所述更新包描述信息包括其对应的程序名称、功能模块、网络路径、版本号、版本适用范围、更新强制性和发布时间;
2)下载更新包,根据可用更新包的描述信息,执行强制更新或用户选择更新,并连接版本服务器进行更新包中的更新脚本和更新程序文件的下载,进行更新包完整性校验,其中,所下载的更新脚本和更新程序文件与正在运行的应用程序文件必须不在同一目录下;
3)记录更新日志,将本次更新的旧版本信息、新版本信息和更新描述信息存入本地磁盘或注册表,以备异常情况下也能继续更新过程;
4)功能模块替换,首先,主程序调用更新脚本,通知需要进行更新的各功能模块停止运行,然后替换待更新的程序文件;
5)版本信息切换,还原步骤3)已记录的更新日志,并将实时版本信息切换记录为已更新完毕的新版本信息;
6)恢复运行,将更新过程中所停止的已更新功能模块逐个恢复正常运行。
进一步地,在步骤1)之前进行如下预置操作:
1-a)在应用程序设置对主程序版本和各功能模块版本信息的记录载体,所述载体包括文件或注册表或数据库;
1-b)在版本服务器一侧保存更新包和更新包的描述信息;
1-c)使应用程序具有到版本服务器的网络连接。
进一步地,所述更新包描述信息还包括所适用的操作***、虚拟机环境、软件环境和环境变量信息。
进一步地,所述版本查询比对过程既能发生在应用程序启动过程,也能发生在运行过程的任何时刻。
更优地,当版本服务器探测到出现新的更新包后,立即将此更新包描述信息通知所有在线运行的应用程序,并提示选择更新或强制更新,这种情况下的版本查询比对过程为:应用程序比对此更新包描述信息所对应的功能模块和版本号适用范围,与自身各功能模块版本信息的约束关系,以判断本机此功能模块是否需要更新。
进一步地,所述热更新的前提条件是,所述应用程序的主程序不依赖各功能模块,并可在各功能模块停止后或发生故障后仍正常运行。
更优地,主程序启动后,能自动检查所述的更新日志,判断是否本次存在可用更新包,如存在,则自动执行步骤4)到6)的版本更新过程。
本发明具有如下有益效果:
本发明热更新方法的功能模块替换过程中,能由主程序仅停止待更新的功能模块,确保最大限制不干扰原有程序运行,并解决模块间依赖带来的模块更新时故障问题;在版本查询比对和下载更新过程中执行严格的更新描述信息匹配,确保不会执行错误、不匹配的更新;当更新的任何一步发生错误、不匹配和安装失败的情况下,都能通过重复安装成功;以及通过版本服务器实时通知应用程序第一时间更新,以确保及时解决软件紧急故障的需求。
附图说明
图1是一种基于功能模块的应用程序自动热更新方法流程图,
图2是一种基于功能模块的应用程序自动热更新方法预置操作的流程图,
图3是一种基于功能模块的应用程序自动热更新方法在版本服务器通知更新的流程图。
具体实施方式
为了加深对本发明的理解,下面结合附图和实施例对本发明进一步说明,该实施例仅用于解释本发明,并不对本发明的保护范围构成限定。
一种基于功能模块的应用程序自动热更新方法,如图1所述,包括如下步骤:
S101,版本查询比对,应用程序定时向版本服务器发送包含自身主程序版本和各功能模块版本信息的版本查询协议,并接收所有匹配可用的更新包描述信息。
其中,所述更新包包括更新脚本和更新程序文件,并表现为压缩文件格式,所述更新脚本用于指示本次更新对应用程序所在计算机的磁盘文件、注册表、环境变量和服务等对象的处理方法。所述更新包描述信息包括此更新包对应的程序名称、功能模块、网络路径、版本号、版本适用范围、更新强制性和发布时间,其中,所述功能模块包括一组程序文件和其他类型文件的集合,它们共同组成一个完整而且相对独立的功能组,一个应用程序包含多个不同的功能模块;版本适用范围指示此更新包所匹配的目标应用程序版本范围,此范围之外的应用程序不可使用此更新包,否则会发生程序兼容性故障;更新强制性指示需用户选择安装还是自动强制安装此应用程序,一般有重大功能改变或安全性改进的更新包需使用强制更新类型。
版本查询过程中,版本服务器能根据自身存储的版本库,与应用程序发来的主程序版本和各功能模块版本信息逐项比对,只有当应用程序名称、功能模块、版本号适用范围都匹配的更新包描述信息,才作为结果项发送给应用程序使用。作为进一步地措施,应用程序在收到更新包信息后,进一步检查版本号适用范围、操作***、内核、功能模块之间的匹配关系。此措施确保应用程序不会使用不匹配的更新包。
S102,下载更新包,根据可用更新包的描述信息,执行强制更新或用户选择更新,并连接版本服务器进行更新包中的更新脚本和更新程序文件的下载,进行更新包完整性校验,其中,所下载的更新脚本和更新程序文件与正在运行的应用程序文件必须不在同一目录下。
更新包下载过程需使用更新包描述信息中的网络路径信息,对更新包列表中的多个更新包逐个进行下载。全部下载完成后,即进入步骤S103。
S103,记录更新日志,将本次更新的旧版本信息、新版本信息和更新描述信息存入本地磁盘或注册表,以备异常情况下也能继续更新过程。
此更新日志为更新过程开始前的事件指示,目的是记录应用程序环境的原始状态信息。
S104,功能模块替换,首先,主程序调用更新脚本,通知需要进行更新的各功能模块停止运行,然后替换待更新的程序文件。
功能模块替换过程开始之前,必须使得更新包列表对应的各功能模块停止运行,否则即发生不可预知错误。此停止动作可通过应用程序的主程序调用更新脚本实现,抑或是主程序执行功能模块插件(plugin或bundle)自身包含的停止程序入口实现。在此过程中,与待更新功能模块无故的其他功能模块则不受影响,仍可照常运行,即是说确保了最大限制不干扰原有程序运行,并解决模块间依赖带来的模块更新时故障问题。
S105,版本信息切换,还原步骤3)已记录的更新日志,并将实时版本信息切换记录为已更新完毕的新版本信息。
此步骤仅在前述功能模块替换已经全部完成的情况下进行,首先还原步骤3)已记录的更新日志,表示相关程序文件、注册表、环境变量或服务等已被正确替换和安装,并将实时版本信息切换记录为已更新完毕的新版本信息。至此,本次更新的新版本已被成功应用。
S106,恢复运行,将更新过程中S104所停止的各功能模块逐个恢复正常运行。
具体地,在步骤S101之前进行如下预置操作,如图2所述:
S201,在应用程序设置对主程序版本和各功能模块版本信息的记录载体,所述载体包括文件或注册表或数据库。
S202,在版本服务器一侧保存更新包和更新包的描述信息,保存的载体包括文件或数据库。
S203,使应用程序具有到版本服务器的网络连接。
所述更新包描述信息还包括所适用的操作***、虚拟机环境、软件环境和环境变量信息。所述虚拟机环境包括但不限于JVM虚拟机环境和.net环境,软件环境一般指代所依赖的第三方软件,例如Office。
所述版本查询比对过程既能发生在应用程序启动过程,也能发生在运行过程的任何时刻。如在应用程序支持在运行过程中的任何时刻都进行版本查询比对查询和更新,可做到第一时间安装紧急、重大的软件更新包版本。
一种更优的应用程序更新场景,如图3所述,当版本服务器探测到出现新的更新包后,如步骤S301,立即将此更新包描述信息通知所有在线运行的应用程序,并提示选择更新或强制更新。
这种情况下的更新执行过程S302为:应用程序比对此更新包描述信息所包含的功能模块和版本号适用范围,与自身各功能模块版本信息的约束关系,以判断本机此功能模块是否需要更新。后续步骤S303-S307,分别与图1步骤S102-S106相对照。
所述热更新的前提条件是,所述应用程序的主程序不依赖各功能模块,并可在各功能模块停止后或发生故障后仍正常运行。为此,各功能模块可以是独立运行的进程(exe/sh/app),也可能是应用程序的一部分程序库(DLL/so /plugin /bandle)。
当应用程序的主程序启动后,能自动检查所述的更新日志,判断是否本次存在可用更新包,如存在,则自动执行步骤S104到S106的版本更新过程。
此步骤确保在安装发生错误、不匹配和安装失败的情况下,都能通过重复安装成功,或者重启应用程序安装成功。这一特性是通过更新日志实现的,由于本文所述更新日志记录的是更新过程开始前的事件指示,目的是记录应用程序环境的原始状态信息,更新错误、比匹配和安装失败的情况下,更新日志被保留用于重复安装或者重启应用程序的场景下安装,直到真正安装成功后,才会覆盖更新日志和切换记录最新版本信息。
本发明的实施例公布的是较佳的实施例,但并不局限于此,本领域的普通技术人员,极易根据上述实施例,领会本发明的精神,并做出不同的引申和变化,但只要不脱离本发明的精神,都在本发明的保护范围内。

Claims (6)

1.一种基于功能模块的应用程序自动热更新方法,其特征在于,包括如下步骤:
1)版本查询比对,应用程序定时向版本服务器发送包含自身主程序版本和各功能模块版本信息的版本查询协议,并接收所有匹配可用的更新包描述信息,其中,所述更新包包括更新脚本和更新程序文件,并表现为压缩文件格式,所述更新包描述信息包括其对应的程序名称、功能模块、网络路径、版本号、版本适用范围、更新强制性和发布时间;
2)下载更新包,根据可用更新包的描述信息,执行强制更新或用户选择更新,并连接版本服务器进行更新包中的更新脚本和更新程序文件的下载,进行更新包完整性校验,其中,所下载的更新脚本和更新程序文件与正在运行的应用程序文件必须不在同一目录下;
3)记录更新日志,将本次更新的旧版本信息、新版本信息和更新描述信息存入本地磁盘或注册表,以备异常情况下也能继续更新过程;
4)功能模块替换,首先,主程序调用更新脚本,通知需要进行更新的各功能模块停止运行,然后替换待更新的程序文件;
5)版本信息切换,还原步骤3)已记录的更新日志,并将实时版本信息切换记录为已更新完毕的新版本信息;
6)恢复运行,将更新过程中所停止的已更新功能模块逐个恢复正常运行。
2.根据权利要求1所述的一种基于功能模块的应用程序自动热更新方法,其特征在于,在步骤1)之前进行如下预置操作:
1-a)在应用程序设置对主程序版本和各功能模块版本信息的记录载体,所述载体包括文件或注册表或数据库;
1-b)在版本服务器一侧保存更新包和更新包的描述信息;
1-c)使应用程序具有到版本服务器的网络连接。
3.根据权利要求2所述的一种基于功能模块的应用程序自动热更新方法,其特征在于,所述更新包描述信息还包括所适用的操作***、虚拟机环境、软件环境和环境变量信息。
4.根据权利要求1所述的一种基于功能模块的应用程序自动热更新方法,其特征在于,所述版本查询比对过程既能发生在应用程序启动过程,也能发生在运行过程的任何时刻。
5.根据权利要求1所述的一种基于功能模块的应用程序自动热更新方法,其特征在于,当版本服务器探测到出现新的更新包后,立即将此更新包描述信息通知所有在线运行的应用程序,并提示选择更新或强制更新,这种情况下的版本查询比对过程为:应用程序比对此更新包描述信息所对应的功能模块和版本号适用范围,与自身各功能模块版本信息的约束关系,以判断本机此功能模块是否需要更新。
6.根据权利要求1所述的一种基于功能模块的应用程序自动热更新方法,其特征在于,主程序启动后,自动检查所述的更新日志,判断是否本次存在可用更新包,如果存在,则自动执行步骤4)到6)的版本更新过程。
CN201710882395.6A 2017-09-26 2017-09-26 一种基于功能模块的应用程序自动热更新方法 Active CN107608706B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710882395.6A CN107608706B (zh) 2017-09-26 2017-09-26 一种基于功能模块的应用程序自动热更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710882395.6A CN107608706B (zh) 2017-09-26 2017-09-26 一种基于功能模块的应用程序自动热更新方法

Publications (2)

Publication Number Publication Date
CN107608706A CN107608706A (zh) 2018-01-19
CN107608706B true CN107608706B (zh) 2020-05-01

Family

ID=61058510

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710882395.6A Active CN107608706B (zh) 2017-09-26 2017-09-26 一种基于功能模块的应用程序自动热更新方法

Country Status (1)

Country Link
CN (1) CN107608706B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108540452B (zh) * 2018-03-15 2020-07-03 北京雷石天地电子技术有限公司 一种数据更新方法及***
CN108459868A (zh) * 2018-03-29 2018-08-28 武汉斗鱼网络科技有限公司 一种软件启动方法、装置、终端和存储介质
CN110427198A (zh) * 2018-04-27 2019-11-08 中兴通讯股份有限公司 应用程序的热修复方法、装置及终端、存储介质
CN109062590A (zh) * 2018-06-29 2018-12-21 武汉掌游科技有限公司 一种游戏sdk在线更新的方法及***
CN109298960A (zh) * 2018-08-15 2019-02-01 中国平安人寿保险股份有限公司 应用崩溃处理方法、装置、计算机装置及存储介质
CN109343879B (zh) * 2018-09-20 2021-08-31 郑州云海信息技术有限公司 控制应用软件升级的方法以及服务器
CN109491776B (zh) * 2018-11-06 2022-05-31 北京百度网讯科技有限公司 任务编排方法和***
CN109800005B (zh) * 2018-12-06 2022-04-05 广州西山居世游网络科技有限公司 一种客户端热更新方法及装置
CN109857432B (zh) * 2019-01-14 2022-05-20 珠海金山网络游戏科技有限公司 一种游戏应用的热更新方法和装置
CN111679842B (zh) * 2019-03-11 2023-06-23 阿里巴巴集团控股有限公司 应用程序热更新处理方法、装置及***
CN110134615B (zh) * 2019-04-10 2022-03-01 百度在线网络技术(北京)有限公司 应用程序获取日志数据的方法及装置
CN111831296A (zh) * 2019-04-17 2020-10-27 天津五八到家科技有限公司 应用程序更新方法、终端设备和计算机可读存储介质
CN110231948B (zh) * 2019-06-10 2024-02-13 腾讯科技(成都)有限公司 应用程序方法、装置、***、存储介质和计算机设备
CN111988150B (zh) * 2020-09-03 2023-04-18 深圳壹账通智能科技有限公司 区块链证书更新方法、装置、计算机设备及存储介质
CN112306532A (zh) * 2020-11-20 2021-02-02 广州欢网科技有限责任公司 基于大屏app功能更新的版本展示方法、装置和***
CN112426722B (zh) * 2020-12-09 2024-06-11 网易(杭州)网络有限公司 节点图的热更新方法、装置、存储介质及计算机设备
CN112698885B (zh) * 2021-01-04 2023-07-21 联想(北京)有限公司 运行方法和装置
CN114768258A (zh) * 2022-03-22 2022-07-22 广州简悦信息科技有限公司 服务开启方法、服务重启方法以及服务热更新方法
CN116541104B (zh) * 2023-07-04 2023-09-29 宁德时代新能源科技股份有限公司 程序管理方法、控制装置、平台、设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103442077A (zh) * 2013-09-04 2013-12-11 珠海金山网络游戏科技有限公司 一种软件客户端通过网络进行更新的方法及***
CN105677425A (zh) * 2016-01-12 2016-06-15 四川文轩教育科技有限公司 一种c/s***结构的软件***更新方法
CN106201578A (zh) * 2016-06-25 2016-12-07 国云科技股份有限公司 一种软件***更新框架

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9762766B2 (en) * 2015-05-11 2017-09-12 Ricoh Company, Ltd. Information processing system, information processing apparatus, and information processing method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103442077A (zh) * 2013-09-04 2013-12-11 珠海金山网络游戏科技有限公司 一种软件客户端通过网络进行更新的方法及***
CN105677425A (zh) * 2016-01-12 2016-06-15 四川文轩教育科技有限公司 一种c/s***结构的软件***更新方法
CN106201578A (zh) * 2016-06-25 2016-12-07 国云科技股份有限公司 一种软件***更新框架

Also Published As

Publication number Publication date
CN107608706A (zh) 2018-01-19

Similar Documents

Publication Publication Date Title
CN107608706B (zh) 一种基于功能模块的应用程序自动热更新方法
CN101699399B (zh) 一种软件更新的***和方法
CN100456246C (zh) 一种固件程序升级的方法与装置
EP1713198B2 (en) A method for upgrading software of communication equipment
CN109491698B (zh) 基于热补丁的***更新方法及装置
CN114328101A (zh) 一种软件故障定位与修复的方法与***
US20090013317A1 (en) Software Management for Software Defined Radio in a Distributed Network
US20060218545A1 (en) Server system and online software update method
TWI533216B (zh) 作業系統更新方法
US20160019051A1 (en) Forcibly completing upgrade of distributed software in presence of failures
CN109634638B (zh) 一种集群软件升级方法、装置、设备及介质
CN104915226B (zh) 一种网络设备软件启动方法、装置及网络设备
WO2017198156A1 (zh) 业务部署方法、装置和***
WO2012116637A1 (zh) ***拯救的方法及装置
CN112905230B (zh) 应用程序的管理方法、装置、终端设备和存储介质
CN108829420A (zh) 一种基于rpm包的分布式存储***软件升级方法
CN112698846B (zh) 一种Linux***自动安装补丁的方法和***
CN111026581A (zh) 应用程序的修复方法及装置、***、存储介质、电子装置
CN105045640A (zh) 一种软件升级方法、装置及智能设备
CN109933351B (zh) 一种修复和升级Linux***的方法与装置
CN116382753A (zh) 一种基于网络的设备固件高可靠性远程升级方法
CN111309388A (zh) 设备的***软件版本的自动回滚***及其方法
JP2005284902A (ja) 端末装置、その制御方法及び制御プログラム、ホスト装置、その制御方法及び制御プログラム、遠隔更新システム、方法及びプログラム
CN106528248B (zh) 一种移动终端基于软件完整性的下载方法及***
GB2532076A (en) Backup method, pre-testing method for environment updating and system thereof

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant