CN102486736A - 程序自动更新方法及更新程序生成装置 - Google Patents

程序自动更新方法及更新程序生成装置 Download PDF

Info

Publication number
CN102486736A
CN102486736A CN2010105800325A CN201010580032A CN102486736A CN 102486736 A CN102486736 A CN 102486736A CN 2010105800325 A CN2010105800325 A CN 2010105800325A CN 201010580032 A CN201010580032 A CN 201010580032A CN 102486736 A CN102486736 A CN 102486736A
Authority
CN
China
Prior art keywords
updating
renewal
routine
class libraries
refresh routine
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.)
Granted
Application number
CN2010105800325A
Other languages
English (en)
Other versions
CN102486736B (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.)
Shenzhen Kingdee Tianyanyun Computing Co Ltd
Original Assignee
Shenzhen Kingdee Middleware 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 Shenzhen Kingdee Middleware Co ltd filed Critical Shenzhen Kingdee Middleware Co ltd
Priority to CN201010580032.5A priority Critical patent/CN102486736B/zh
Publication of CN102486736A publication Critical patent/CN102486736A/zh
Application granted granted Critical
Publication of CN102486736B publication Critical patent/CN102486736B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明揭露了一种程序自动更新方法,所述方法包括:在主程序中预设更新生成程序和更新类库;所述更新生成程序检测是否存在更新文件,如果是,则下载所述更新文件;所述更新生成程序利用所述更新文件和更新类库生成更新程序;和利用所述更新程序更新所述主程序。本发明同时还提供一种更新程序生成装置,用于生成所述更新程序。本发明中的所述更新程序作为主程序的一部分,而非独立的进程,易于与所述主程序之间交互数据和共享类库资源,同时所述更新程序是利用动态生成的更新类编译获得的,可以实现自我更新和跨平台运行。

Description

程序自动更新方法及更新程序生成装置
【技术领域】
本发明涉及分布式系统中的信息传输领域,特别涉及一种分布式系统中客户端自动更新方案。
【背景技术】
分布式系统是支持分布式处理的系统,是在有通讯网络互联的多处理体系结构上执行任务的系统。对于部署在网络上的分布式软件系统,通常分为客户端、服务端、数据库三层,业务数据一般存储在数据库中,客户端在需要读取业务数据时,需要和服务端进行通信,服务端再和数据库通讯,从中获取业务数据后,再进行若干处理,返回给客户端。
在Java领域中经常采用的C/S(Client/Server)结构,也即客户机和服务器结构就是一种常见、大量被使用的分布式系统,通过C/S结构可以充分利用两端硬件环境的优势,将任务合理分配到客户端和服务器端来实现,有效降低了系统的通讯开销。但是,在实际应用中,当客户端应用程序有新的版本或者组件需要更新时,通常有两种方式:第一,用户手动从服务器端下载新版本的客户端应用程序并更新;第二,提供一个更新程序,所述更新程序伴随用户的操作系统或者客户端应用程序启动,不断检测服务器端是否有新版本的客户端主程序,在有新版本的客户端主程序时进行下载并更新。
而在实际使用中发现,如果采用第一种方式,也即让用户手动更新的方案,用户的使用体验较差。如果采用第二种方式,由于所述更新程序与客户端主程序分别是两个不同的程序,也就是说在运行时是两个独立的进程,那么会有两个缺点:一方面,所述更新程序有时自身也需要更新,当所述更新程序自身需要更新时,因为所述更新程序自身处于运行态,显然它无法对自身进行更新;另一方面,有时更新程序在更新所述客户端主程序时,需要获知客户端主程序的一些即时运行信息或者需要利用客户端主程序正在占用的类库资源,但是由于它们分属于两个独立的进程,故而进行数据交互和共享是比较困难的。
虽然现有技术也有一种方案,利用更新程序来对客户端主程序更新的同时,也可以利用客户端主程序对所述更新程序进行更新,也就是说,将客户端主程序作为所述更新程序的更新程序,两者可以分别对对方进行更新。但是这种方案虽然解决了上述第一方面的缺点,但是却提高了客户端主程序的复杂度。对于第二方面的缺点,很多现有方案中采用更新程序更新时将当前客户端主程序关闭的方式来获得相应类库资源的使用权,牺牲了用户的使用体验。
因此,有必要提出一种新的技术方案来解决上述缺点。
【发明内容】
本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
本发明的一个目的在于提供一种程序自动更新方法。
本发明的另一目的在于提供一种更新程序生成装置。
为了达到本发明的目的,本发明提供一种程序自动更新方法,所述方法包括:在主程序中预设更新生成程序和更新类库;所述更新生成程序检测是否存在更新文件,如果是,则下载所述更新文件;所述更新生成程序利用所述更新文件和更新类库生成更新程序;和利用所述更新程序更新所述主程序。
进一步地,所述更新类库包括替换类库、删除类库和修改类库。
进一步地,所述更新生成程序利用所述更新文件和更新类库生成更新程序包括:所述更新生成程序利用所述更新文件确定更新步骤;所述更新生成程序根据所述更新步骤结合相应更新类库生成更新类;所述更新生成程序编译所述更新类以生成更新程序,
其中更新步骤包括若干更新操作,所述更新操作包括替换主程序文件、删除主程序文件和修改主程序文件。
进一步地,所述利用所述更新程序更新所述主程序包括:所述更新程序按照所述更新步骤替换、删除和修改所述主程序的相应文件。
进一步地,所述程序、主程序、更新生成程序、更新类库和更新程序是由java编程语言实现的。
根据本发明的另一方面,本发明同时提供一种更新程序生成装置,生成用于更新主程序模块的更新程序,所述装置包括:更新类库模块,存储生成更新程序所需类库;更新文件检测模块,检测是否存在主程序的更新文件;更新文件下载模块,当存在所述更新文件时下载所述更新文件;更新步骤确定模块,根据所述更新文件确定更新步骤;更新类生成模块,根据更新步骤结合所述更新类库模块内的相应类库生成更新类;和更新类编译模块,编译所述更新类以生成更新程序。
进一步地,所述更新类库模块包括替换类库、删除类库和修改类库。
进一步地,所述更新类生成模块,根据更新步骤中的替换更新操作、删除更新操作和修改更新操作选择相应的替换类库、删除类库和修改类库作为所述更新类的一部分。
进一步地,所述更新程序生成装置集成于所述主程序模块中。
进一步地,所述更新程序生成装置由java编程语言实现。
与现有技术相比,所述更新程序作为主程序的一部分,而非独立的进程,易于与所述主程序之间交互数据和共享类库资源。同时所述更新程序是通过动态生成的更新类编译获得,故一方面,所述更新程序可以实现“自我更新”;另一方面,所述更新类采用java类而不是shell或者bat,故所述更新程序可以实现跨平台使用。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的一个实施例中的程序自动更新方法的方法流程图;和
图2为本发明的一个实施例中的更新程序生成装置的结构示意图。
【具体实施方式】
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明中的程序自动更新方法及更新程序生成装置可以通过软件、硬件或者两者的组合实现成为一个模块、一个系统或者一个系统的一部分。所述程序自动更新方法及更新程序生成装置中的更新程序是通过根据更新文件动态生成的更新类编译获得的,并且集成于主程序中。为了便于描述本发明,下文将利用java语言作为本发明的实施例中所采用的语言来描述和展示本发明的各个方面,但是本领域的技术人员应当了解,本发明还可以通过其他面向对象的编程语言来实施。
请参考图1,其示出了本发明的一个实施例中的程序自动更新方法100的方法流程图。在本实施例中,主程序可以是客户端应用程序,更新程序用于更新所述主程序,更新生成程序用来生成所述更新程序。具体地讲,所述程序更新方法100包括:
步骤102,在主程序中预设更新生成程序和更新类库;
由于更新主程序时,主要涉及如下几种操作:替换主程序中原有的一些文件、删除主程序中原有的一些文件和修改主程序中原有的一些文件。比如,主程序中的一些类库和预设数据需要替换为较新的版本;主程序中的一些数据和功能代码在新版本中不需要了,需要删除;主程序新增加了功能或者改进了功能,需要进行修改。更新程序需要按照一定的更新步骤对所述主程序更新,在此过程中,可能还需要获知主程序的一些当前运行信息和占用主程序正在使用的类库资源。并且在进行较大或者较复杂的更新时,所述更新程序自身也需要更新以改变原有的更新步骤。为了便于获得主程序的一些当前运行信息和占用主程序正在使用的类库资源。在本实施例中,并不直接单独提供更新程序,而是在主程序中预设更新生成程序和更新类库,将与更新相关的程序作为主程序的一部分,这样与更新相关的程序随着主程序一起运行,并且在运行时与主程序相比不是两个独立的进程,可以较为容易地获知所述主程序的当前运行信息和占用主程序正在使用的类库资源。其中,所述更新生成程序用于动态生成更新程序,所述更新类库中包含了一些生成更新程序所必需的类库,比如实现替换操作的类库或者说函数、实现删除操作的类库或者说函数和实现修改操作的类库或者说函数等。
步骤104,所述更新生成程序检测是否存在更新文件,如果是,则下载所述更新文件;
所述更新生成程序检测是否存在更新文件,具体地讲,所述更新生成程序可以从服务器端或者其他预设机制检测是否存在主程序的更新文件,比如可以是每隔预定时间间隔检测一次,每次主程序启动时检测等等。当检测到有更新文件时,下载所述更新文件。
步骤106,所述更新生成程序利用所述更新文件和更新类库生成更新程序;
所述更新生成程序根据所述更新文件的内容,分析并确定此次更新所需要的更新步骤,比如先删除某些文件、然后替换某些文件,并修改相应关联的文件的内容等等,视具体的实施例而定,可能还包括其他步骤。在一些实施例中,所述更新文件中包含有关于更新步骤的相关文件,所述更新生成程序根据所述相关文件来确定更新步骤;在另外一些实施例中,所述更新文件中并不包含有关于更新步骤的相关文件,此时所述更新生成程序分析所述更新文件内的实际内容来确定所述更新步骤。显然,在不同的实施例中,对于不同的更新文件,所述更新步骤可以不同。当所述更新步骤确定后,所述更新生成程序根据所述更新步骤结合相应更新类库生成更新类,比如所述更新步骤包括有替换主程序文件的更新操作,那么就将所述更新类库中的替换类或者替换函数作为更新类的一部分。最后所述更新生成程序编译所述更新类以生成更新程序。在一个实施例中,由于所述更新生成程序等由java语言编写,所述更新类可以是Update.java,然后编译后所得的更新程序Update.class。
步骤108,利用所述更新程序更新所述主程序。
由于具体的更新过程为现有技术,本文不再累述。
综上所述,所述更新类是根据对更新文件的分析而动态生成的,故生成的更新程序可能每次都不同,可以认为是所述更新程序能够实现自我更新。同时所述更新程序并不是独立提供的,而是由预设在主程序中的更新生成程序和更新类库生成的,其运行时也属于主程序的进程中,故需要获得主程序的相关运行信息或者占用主程序的某些类库资源时比较容易地实现。
同时本发明还提供了一种更新程序生成装置,生成用于更新主程序模块的更新程序,所述更新程序生成装置集成于所述主程序模块。
请参考图2,其示出了本发明的一个实施例中的更新程序生成装置200的结构示意图。所述更新程序生成装置200包括更新类库模块201、更新文件检测模块202、更新文件下载模块203、更新步骤确定模块204、更新类生成模块205和更新类编译模块206。
所述更新类库模块201存储生成更新程序所需类库。在一个实施例中,所述更新类库模块201内包括替换类库、删除类库和修改类库。当然视实施例不同,所述更新类库模块201可能还包括其他类库或者函数,以方便所述更新类生成模块205使用。
所述更新文件检测模块202检测是否存在主程序的更新文件。在一个实施例中,所述更新文件检测模块202每隔预定时间间隔从服务器端或者其他预设地址检测是否存在主程序的更新文件。在另一个实施例中,所述更新文件检测模块202在每次启动运行时,从服务器端或者其他预设地址检测是否存在主程序的更新文件。
所述更新文件下载模块203在所述更新文件检测模块202检测到存在更新文件时下载所述更新文件。在一个实施例中,所述更新文件下载模块203可以利用P2P下载技术从服务器端或者其他客户端下载所述更新文件。
所述更新步骤确定模块204根据所述更新文件确定更新步骤。在一个实施例中,所述更新步骤确定模块204根据所述更新文件的内容,分析此次更新所需要的更新步骤,比如先删除某些文件、然后替换某些文件,并修改相应关联的文件的内容等等,视具体的实施例而定,可能还包括其他步骤。
所述更新类生成模块205根据更新步骤结合所述更新类库模块内的相应类库生成更新类。在一个实施例中,所述更新类生成模块205根据更新步骤中的替换更新操作、删除更新操作和修改更新操作选择相应的替换类库、删除类库和修改类库作为所述更新类的一部分。
所述更新类编译模块206编译所述更新类以生成更新程序。在一个实施例中,所述更新类可以是Update.java,然后编译后所得的更新程序Update.class。
所述更新程序也可以形成一个更新模块,然后利用下载的所述更新文件对所述主程序模块完成自动更新,由于所述更新程序是动态生成的,故可以不断保持“最新”,也即实现了自我更新。
上述说明已经充分揭露了本发明的具体实施方式。需要指出的是,熟悉该领域的技术人员对本发明的具体实施方式所做的任何改动均不脱离本发明的权利要求书的范围。相应地,本发明的权利要求的范围也并不仅仅局限于所述具体实施方式。

Claims (10)

1.一种程序自动更新方法,其特征在于,其包括:
在主程序中预设更新类库;
检测是否存在更新文件,如果是,则下载所述更新文件;
利用所述更新文件和更新类库生成更新程序;和
利用所述更新程序更新所述主程序。
2.根据权利要求1所述的程序自动更新方法,其特征在于,所述更新类库包括替换类库、删除类库和修改类库。
3.根据权利要求2所述的程序自动更新方法,其特征在于,所述利用所述更新文件和更新类库生成更新程序包括:
利用所述更新文件确定更新步骤;
根据所述更新步骤结合相应更新类库生成更新类;
编译所述更新类以生成更新程序,
其中更新步骤包括若干更新操作,所述更新操作包括替换主程序文件、删除主程序文件和修改主程序文件。
4.根据权利要求3所述的程序自动更新方法,其特征在于,所述利用所述更新程序更新所述主程序包括:
所述更新程序按照所述更新步骤替换、删除和修改所述主程序的相应文件。
5.根据权利要求1至4任一所述的程序自动更新方法,其特征在于,所述程序、主程序、更新类库和更新程序是由java编程语言实现的。
6.一种更新程序生成装置,生成用于更新主程序模块的更新程序,其特征在于,其包括:
更新类库模块,存储生成更新程序所需类库;
更新文件检测模块,检测是否存在主程序的更新文件;
更新文件下载模块,当存在所述更新文件时下载所述更新文件;
更新步骤确定模块,根据所述更新文件确定更新步骤;
更新类生成模块,根据更新步骤结合所述更新类库模块内的相应类库生成更新类;和
更新类编译模块,编译所述更新类以生成更新程序。
7.根据权利要求6所述的更新程序生成装置,其特征在于,所述更新类库模块包括替换类库、删除类库和修改类库。
8.根据权利要求7所述的更新程序生成装置,其特征在于,所述更新类生成模块,根据更新步骤中的替换更新操作、删除更新操作和修改更新操作选择相应的替换类库、删除类库和修改类库作为所述更新类的一部分。
9.根据权利要求6所述的更新程序生成装置,其特征在于,所述更新程序生成装置集成于所述主程序模块中。
10.根据权利要求6所述的更新程序生成装置,其特征在于,所述更新程序生成装置由java编程语言实现。
CN201010580032.5A 2010-12-06 2010-12-06 程序自动更新方法及更新程序生成装置 Active CN102486736B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010580032.5A CN102486736B (zh) 2010-12-06 2010-12-06 程序自动更新方法及更新程序生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010580032.5A CN102486736B (zh) 2010-12-06 2010-12-06 程序自动更新方法及更新程序生成装置

Publications (2)

Publication Number Publication Date
CN102486736A true CN102486736A (zh) 2012-06-06
CN102486736B CN102486736B (zh) 2015-02-11

Family

ID=46152234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010580032.5A Active CN102486736B (zh) 2010-12-06 2010-12-06 程序自动更新方法及更新程序生成装置

Country Status (1)

Country Link
CN (1) CN102486736B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761115A (zh) * 2013-11-30 2014-04-30 北京中启智源数字信息技术有限责任公司 一种实现软件自我升级的方法
CN107589966A (zh) * 2017-09-22 2018-01-16 郑州云海信息技术有限公司 软件开发系统中管理代码的方法和装置
CN108228213A (zh) * 2017-12-29 2018-06-29 广州金十信息科技有限公司 一种应用自动更新方法、系统、智能设备及存储介质
CN112306515A (zh) * 2019-07-31 2021-02-02 比亚迪股份有限公司 Cae模块的自动更新方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1777317A (zh) * 2005-12-16 2006-05-24 北京金山软件有限公司 一种实现无线终端程序更新的方法
CN101174217A (zh) * 2007-11-22 2008-05-07 上海交通大学 Java程序可动态更新化实现方法
CN101593118A (zh) * 2009-02-24 2009-12-02 浪潮集团山东通用软件有限公司 一种灵活的软件升级的方法
CN101699399A (zh) * 2009-11-03 2010-04-28 中兴通讯股份有限公司 一种软件更新的系统和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1777317A (zh) * 2005-12-16 2006-05-24 北京金山软件有限公司 一种实现无线终端程序更新的方法
CN101174217A (zh) * 2007-11-22 2008-05-07 上海交通大学 Java程序可动态更新化实现方法
CN101593118A (zh) * 2009-02-24 2009-12-02 浪潮集团山东通用软件有限公司 一种灵活的软件升级的方法
CN101699399A (zh) * 2009-11-03 2010-04-28 中兴通讯股份有限公司 一种软件更新的系统和方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761115A (zh) * 2013-11-30 2014-04-30 北京中启智源数字信息技术有限责任公司 一种实现软件自我升级的方法
CN103761115B (zh) * 2013-11-30 2017-11-03 北京中启智源数字信息技术有限责任公司 一种实现软件自我升级的方法
CN107589966A (zh) * 2017-09-22 2018-01-16 郑州云海信息技术有限公司 软件开发系统中管理代码的方法和装置
CN108228213A (zh) * 2017-12-29 2018-06-29 广州金十信息科技有限公司 一种应用自动更新方法、系统、智能设备及存储介质
CN112306515A (zh) * 2019-07-31 2021-02-02 比亚迪股份有限公司 Cae模块的自动更新方法和系统

Also Published As

Publication number Publication date
CN102486736B (zh) 2015-02-11

Similar Documents

Publication Publication Date Title
CN102622241B (zh) 一种软件升级方法及装置
JP5705869B2 (ja) クラスタベースのjavaアプリケーションシステムのコードをロードおよび更新する装置および方法
AU2013312865B2 (en) Generating native code from intermediate language code for an application
CN109144533B (zh) 一种应用程序的更新及加载的方法、系统及计算机装置
US7797670B2 (en) Mirrored file system
CN108196843A (zh) 可视化Docker容器自动编译部署的运维方法
CN103701856A (zh) 一种定义及终端设备获取升级包的方法
KR20050086687A (ko) 전자 파일 업데이트 동안 디바이스 메모리 관리
CN102523268A (zh) 一种客户端升级方法和系统
CN102279765A (zh) 预编译托存托管代码
CN102195804A (zh) 软件自动更新方法及其系统
KR100835269B1 (ko) 다운로드 서버와 공유 라이브러리의 분할을 이용한 응용프로그램 설치 및 업데이트 방법
US8214810B2 (en) Method of compiling source code, compiler, computer system, and computer program product
CN101515238A (zh) 一种用于计算机自动安装或卸载应用软件的方法及装置
US20220236975A1 (en) Optimized compilation of pipelines for continuous delivery of services on datacenters configured in cloud platforms
CN102486736A (zh) 程序自动更新方法及更新程序生成装置
KR20060085698A (ko) 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치
CN101957766A (zh) 一种字节码织入方法、装置及系统
CN102420873A (zh) 复合网络全新云应用平台
CN106681773A (zh) 一种Android系统启动的方法及装置、Android移动终端
CN100547971C (zh) 一种控制网络通讯软件功能的方法
CN109857444B (zh) 应用程序的更新方法、装置、电子设备和可读存储介质
CN116301951B (zh) 一种基于kubernetes的微服务应用安装升级方法及装置
CN107092472B (zh) 一种动态发布方法及设备
CN110688140B (zh) 一种代码管理方法和终端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP03 Change of name, title or address

Address after: South South technology twelve road 518057 in Guangdong province Shenzhen City Guangdong streets Nanshan District high tech Industrial Park, No. 2, Kingdee Software Park building A floor 2 South Block

Patentee after: Shenzhen Kingdee middleware Limited by Share Ltd.

Address before: 518057 Guangdong City, Nanshan District province high tech Zone in the middle of the industrial zone of the sparrow tower M-6 building, floor 1, area 3, second, 4

Patentee before: Shenzhen Kingdee Middleware Co., Ltd.

CP01 Change in the name or title of a patent holder

Address after: South South technology twelve road 518057 in Guangdong province Shenzhen City Guangdong streets Nanshan District high tech Industrial Park, No. 2, Kingdee Software Park building A floor 2 South Block

Patentee after: Shenzhen Kingdee tianyanyun computing Co., Ltd.

Address before: South South technology twelve road 518057 in Guangdong province Shenzhen City Guangdong streets Nanshan District high tech Industrial Park, No. 2, Kingdee Software Park building A floor 2 South Block

Patentee before: Shenzhen Kingdee middleware Limited by Share Ltd.

CP01 Change in the name or title of a patent holder