一种软件安装及升级方法和装置的制作方法

文档序号:6431301阅读:164来源:国知局

专利名称::一种软件安装及升级方法和装置的制作方法
技术领域
:本发明涉及数据处理设备的软件
技术领域
,尤其涉及一种软件安装及升级的方法和装置。
背景技术
:计算机软件经过了几十年的发展,慢慢地与互联网融合为一体。开放与合作已经成为互联网技术发展的必然趋势,未来的互联网可以“更多的融入”,也能更多地分享和收获。打造一个更加开发平台将使整个互联网的用户有一个全新的体验。同时用户的使用习惯不断在变化,软件的更新频率不断缩短,新的功能迭代速度很快,这就要求软件本身的升级足够强大,以便更好的满足用户需求。现有的计算机桌面软件安装及升级方法通常是在安装时,将主程序文件,即可执·行主程序(.exe格式)文件与资源文件比如所需要加载的.dll文件放在同级目录下,这样的好处是Windows操作系统会默认首先加载.exe文件同级的目录,方便快速找到相应的资源如dll文件。在进行软件升级时,通常都需要当前主程序(.exe)先退出,然后完成升级软件包的下载和安装过程,接下来需要用户再次启动软件才可以看到升级后的功能。现有的这种软件安装及升级方法的缺点是升级时必须首先人工退出当前主程序,才能完整升级软件的安装,不但导致需要用户进行过多的人机交互操作,而且严重干扰了用户使用当前软件,用户体验不好。同时,现有的大多数桌面软件需要用户手工触发软件升级,而实际上通过用户操作的数据来看,用户手动点击软件升级的比率并不大,给用户的使用带来了不必要的门槛。因此,现有技术无法做到在主程序运行的过程中完成整个软件的静默升级。所谓软件静默升级是指在正常使用软件的过程中,该软件可以做到自动升级,而用户在前端使用时完全没有感知该升级过程,升级完成后,用户下次启动软件,就能直接使用更新后的软件。
发明内容有鉴于此,本发明的主要目的在于提供一种软件安装及升级方法和装置,以实现软件的静默升级,减少升级过程中的人机交互次数,方便用户使用软件。本发明的技术方案是这样实现的一种软件安装及升级方法,包括创建当前版本号的版本目录,将该版本目录放置在与软件的主程序文件同级的目录下,将当前版本软件的资源文件放置在该版本目录中;软件主程序开始运行时,搜索与主程序文件同级目录下版本号最新的版本目录,并加载该版本目录;在软件主程序运行时启动升级进程下载并安装升级软件,在安装升级软件时,创建当前升级软件的新版本号对应的版本目录,将该新版本号的版本目录放置在与所述旧版本目录同级的目录下,将新版本软件的资源文件放置在该新版本号的版本目录中。一种软件安装及升级装置,包括初始安装模块,用于软件的初始安装,在初始安装时,创建当前版本号的版本目录,将该版本目录放置在与软件的主程序文件同级的目录下,将当前版本软件的资源文件放置在该版本目录中;主程序文件,用于启动运行软件主程序,并在开始运行时,搜索同级目录下版本号最新的版本目录,并加载该版本目录;升级进程模块,用于在软件运行时启动,启动后下载并安装升级软件,在安装升级软件时,创建当前升级软件的新版本号对应的版本目录,将该新版本号的版本目录放置在与所述旧版本目录同级的目录下,将新版本软件的资源文件放置在该新版本号的版本目录中。与现有技术相比,本发明所提供的方案采用每个版本软件的资源文件放置在对应的版本目录中,所有版本目录放置在与软件的可执行文件同级的目录下,并且软件的所述可执行文件在开始执行时,搜索同级目录下版本号最新的版本目录,并加载该版本目录。因此,本发明可以实现在正常使用软件的过程中,不用退出软件,就可以做到自动升级安装,而用户在前端使用时完全感知不到该升级过程,升级完成后,用户下次启动软件,就能直接使用更新后的软件,从而实现软件的静默升级,减少升级过程中的人机交互次数,方便用户操作,提升用户的使用体验。图I为本发明所述软件安装及升级方法的流程图;图2为本发明所述软件初始安装时的目录结构示意图;图3为本发明所述软件升级安装后的目录结构示意图;图4为本发明所述升级过程的一种详细实施流程图;图5为本发明所述的软件安装及升级装置的一种实施示意图;图6为本发明所述的软件安装及升级装置的另一种实施示意图;图7为本发明所述升级进程模块的一种具体组成示意图。具体实施例方式下面结合附图及具体实施例对本发明再作进一步详细的说明。本发明不但适用于计算机,还可以适用于各种数据处理设备(如智能手机、平板电脑等)。图I为本发明所述软件安装及升级方法的流程图。参见图1,该方法包括步骤101、创建当前版本号的版本目录,将该版本目录放置在与软件的主程序文件同级的目录下,将当前版本软件的资源文件放置在该版本目录中。在优选实施方式中,本步骤可以在初始安装软件时执行,当然在其他实施方式中也可以在其它时机如服务器指定的时机执行。步骤102、软件主程序(即主exe程序)开始运行时,搜索与主程序文件同级目录下版本号最新的版本目录,并加载该版本目录。步骤103、在软件主程序启动运行后,启动升级进程,由升级进程下载并安装升级软件,在安装升级软件时,创建当前升级软件的新版本号对应的版本目录,将该新版本号的版本目录放置在与所述旧版本目录同级的目录下,将新版本软件的资源文件放置在该新版本号的版本目录中。所述升级进程在完成升级软件的下载和安装后,会自动退出,对主程序的进程完全没有影响。当主程序下次启动时,主程序会搜索与主程序文件同级目录下版本号最新的版本目录,并加载该版本目录,从而完成运行升级版本目录的过程,使用户可以看到更新后的软件功能,而整个升级过程对用户来说是完全透明的,用户察觉不到升级过程的发生。图2为本发明所述软件初始安装时的目录结构示意图。参见图2,本发明与现有技术的软件安装目录不同,现有技术通常是将主程序exe文件与资源文件比如所需要加载的.dll放在同级目录下,而本发明将主程序exe文件外提到更外层目录,如图2所示的主程序exe文件201,设置在了软件的根目录下,而软件运行时需要加载的资源文件如.dll文件都放置在当前版本号的版本目录202中,该版本目录202放置在与所述主程序exe文件201同级的目录下,例如此处为根目录下。所述主程序exe文件201实际上只是个空壳,它的作用只是搜索同级目录下版本号更新的版本目录,并加载该版本目录。图3为本发明所述软件升级安装后的目录结构示意图。参见图3,利用本发明对升级软件进行下载并安装升级后,升级软件(通常为升级包)实际上会在安装目录下解压,所有资源文件都放置在当前升级软件的新版本号对应的版本目录301中,而旧版本目录202和主程序exe文件201的位置不变,因此在升级时,对当前运行的主程序完全没有影响,待用户下次启动时,自动加载更新的版本目录,即可运行新版本的软件。本发明在改变了主程序文件的放置目录后,操作系统会按自身的目录搜索顺序查找文件,Windows提供了一个应用程序编程接口(API)可以设置应用程序加载.dll资源文件的搜索顺序,该API为BOOLWINAPISetDllDirectory(LPCTSTRIpPathName)软件主程序利用该API,可以使得主程序文件外提后,操作系统搜索.dll的目录顺序不变,从而可以顺利加载资源文件。本发明中,由于软件本身的静默升级的需要,当软件多次升级后,实际上在用户安装目录会有多个版本目录文件夹,如果按照现有的桌面软件的安装、卸载的过程则通常需要一一配对,例如使用Microsoft软件安装(MSI)工具制作的安装包,在卸载软件的时候只能卸载与该版本匹配的安装目录文件,而并不能达到整个软件不留痕迹的彻底清除。因此本发明可以利用Nullsoft脚本安装系统(NSIS,NullsoftScriptableInstallSystem)脚本重新编写卸载程序来控制软件的卸载行为,如图3所示的卸载程序302,用于完全卸载软件。所述NSIS为Windows下支持脚本的安装程序,完全免费,开放源代码,支持脚本,可以通过编写脚本来控制安装过程的任何细节。所述利用NSIS生成的卸载程序302可打包进主安装包中,在该卸载程序302启动后即可实施对软件的卸载,卸载的实质操作就是将与所述主程序文件201同级目录下的所有文件和文件夹全部删除,即删除QPlus.exe根目录下的所有文件以及文件夹,因此可以将整个软件(包括各个版本的软件)不留痕迹地彻底清除,同时该卸载程序在以后的软件升级中无需变化,其维护成本可降低为零。图4为本发明所述升级过程的一种详细实施流程图。参见图4,该流程包括步骤401、启动主程序,开始运行。步骤402、主程序启动升级进程。此处,由于整个升级过程涉及到与升级服务器的多次交互过程,为了尽可能的减少客户端对于服务器的请求量,要对查询的频率有一定的控制。因此在另一种实施例中,在启动升级进程之前即步骤402之前,可以进一步包括查询当前系统内是否运行有一个以上所述软件主程序的实例,如果是则利用第一个运行的主程序实例启动所述升级进程;否则直接利用所述软件主程序实例启动所述升级进程。利用这种方式,可以控制升级查询的频率,减少客户端对服务器的请求量。步骤403、启动升级进程后,升级进程首先会完成一次升级进程自升级的查询过程,即升级进程与服务器交互判断是否要自升级,即判断服务器是否有比本地更新版本的升级程序文件,如果是则下载新版本的升级程序exe文件,并退出升级进程;否则执行步骤404。当然本步骤403为可选步骤,也可以跳过本步骤,直接执行步骤404。·步骤404、升级进程与服务器交互判断是否需要升级软件,即判断服务器是否有更新版本的升级软件,如果是则执行步骤405,否则退出升级进程。步骤405、下载新版本的升级软件,例如升级软件通常是以升级包的形式,因此可以下载新版本的升级包。步骤406、安装升级包,创建当前升级软件的新版本号对应的版本目录,将该新版本号的版本目录放置在与所述旧版本目录同级的目录下,将新版本软件的资源文件放置在该新版本号的版本目录中,之后退出升级进程。由于升级包属于敏感数据,因此在另一种实施例中,在下载得到升级软件后、安装升级软件之前,即步骤405和406之间,进一步包括对所述下载得到的升级包做MD5值匹配,如果匹配则执行步骤B进行软件升级安装,如果不匹配则判定本次下载失败,删除所述下载的软件升级包,重复下载所述软件升级包,若下载失败的次数达到指定次数(如最多3次),则结束下载流程,退出升级进程。与上述方法对应,本发明还公开了一种软件安装及升级装置。图5为本发明所述的软件安装及升级装置的一种实施示意图。参见图5,该装置500包括初始安装模块501,用于软件的初始安装,在初始安装时,创建当前版本号的版本目录,将该版本目录放置在与软件的主程序文件502同级的目录下,将当前版本软件的资源文件放置在该版本目录中;如图2所示。主程序文件502,用于启动运行软件主程序,并在开始运行时,搜索同级目录下版本号最新的版本目录,并加载该版本目录。升级进程模块503,用于在软件运行时启动,启动后下载并安装升级软件,在安装升级软件时,创建当前升级软件的新版本号对应的版本目录,将该新版本号的版本目录放置在与所述旧版本目录同级的目录下,将新版本软件的资源文件放置在该新版本号的版本目录中,如图3所示。图6为本发明所述的软件安装及升级装置的另一种实施示意图。参见图6,为了将整个软件(包括各个版本的软件)不留痕迹地彻底清除,该装置进一步包括卸载模块504,用于将与所述主程序文件同级目录下的所有文件和文件夹全部删除。为了降低客户端与服务器的请求量,该装置还可以进一步包括查询模块505,用于查询当前系统内是否运行有一个以上所述软件主程序的实例,如果是则利用第一个运行的主程序实例启动所述升级进程模块503;否则直接利用所述软件主程序实例启动所述升级进程模块503。图7为本发明所述升级进程模块的一种具体组成示意图。参见图7,所述升级进程丰吴块中包括升级进程自升级模块701,用于在下载升级软件之前,首先与服务器交互判断是否要自升级,如果是则下载新版本的升级程序文件,并退出升级进程;否则再触发升级进程模块下载并安装所述升级软件。版本升级模块702,用于在下载升级软件之前与服务器交互判断是否需要升级软件,如果是则触发下载并安装新版本的升级软件;否则退出升级过程。升级软件下载模块703,用于从服务器下载新版本的升级软件包。校验模块704,用于在下载得到升级软件包后、安装升级软件包之前,对所述下载得到的升级软件做MD5值匹配,如果匹配则触发升级软件安装模块安装升级软件,如果不匹配则判定本次下载失败,删除所述下载的升级软件,并触发所述升级软件下载模块重新下载所述升级软件包,若下载失败的次数达到指定次数(如最多3次),则退出升级过程。升级软件安装模块705,用于安装所下载的升级软件包,在安装时,创建当前升级软件的新版本号对应的版本目录,将该新版本号的版本目录放置在与所述旧版本目录同级的目录下,将新版本软件的资源文件放置在该新版本号的版本目录中。当然,所述升级进程自升级模块701和所述校验模块704是可选模块,在其他实施例中可以自由选择。本发明通过软件安装包中特殊的文件布局以及升级进程的控制,可以有效的降低后期对于软件升级的运营和维护成本,并且具有升级进程自升级等强有力的能力。本发明尤其可以适用于桌面开放软件,桌面开放软件除了具有普通软件安装,卸载的通常功能外,还需结合软件自身特点实现快速静默升级,可以更好的满足用户对于软件安装以及卸载的基本要求。用户在使用软件的过程中,希望可以体验到软件最新的功能,而操作软件升级本身有是一件相对繁琐的事情,而本发明可以提供静默升级的功能,可以有效降低用户对桌面开放软件的使用门槛。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。权利要求1.一种软件安装及升级方法,其特征在于,包括创建当前版本号的版本目录,将该版本目录放置在与软件的主程序文件同级的目录下,将当前版本软件的资源文件放置在该版本目录中;软件主程序开始运行时,搜索与主程序文件同级目录下版本号最新的版本目录,并加载该版本目录;在软件主程序运行时启动升级进程下载并安装升级软件,在安装升级软件时,创建当前升级软件的新版本号对应的版本目录,将该新版本号的版本目录放置在与所述旧版本目录同级的目录下,将新版本软件的资源文件放置在该新版本号的版本目录中。2.根据权利要求I所述的方法,其特征在于,该方法进一步包括在卸载软件时,将与所述主程序文件同级目录下的所有文件和文件夹全部删除。3.根据权利要求I所述的方法,其特征在于,在启动升级进程之前,进一步包括查询当前系统内是否运行有一个以上所述软件主程序的实例,如果是则利用第一个运行的主程序实例启动所述升级进程;否则直接利用所述软件主程序实例启动所述升级进程。4.根据权利要求I所述的方法,其特征在于,所述升级进程在启动之后、下载升级软件之前,首先与服务器交互判断是否要自升级,如果是则下载新版本的升级程序文件,并退出升级进程;否则再下载并安装所述升级软件。5.根据权利要求I所述的方法,其特征在于,该方法在下载升级软件之前,进一步包括与服务器交互判断是否需要升级软件,如果是则下载并安装新版本的升级软件;否则退出升级进程。6.根据权利要求I所述的方法,其特征在于,在下载得到升级软件后、安装升级软件之前,进一步包括对所述下载得到的升级软件做MD5值匹配,如果匹配则安装升级软件,如果不匹配则判定本次下载失败,删除所述下载的升级软件,并重新下载所述升级软件,若下载失败的次数达到指定次数,则结束下载流程。7.一种软件安装及升级装置,其特征在于,包括初始安装模块,用于软件的初始安装,在初始安装时,创建当前版本号的版本目录,将该版本目录放置在与软件的主程序文件同级的目录下,将当前版本软件的资源文件放置在该版本目录中;主程序文件,用于启动运行软件主程序,并在开始运行时,搜索同级目录下版本号最新的版本目录,并加载该版本目录;升级进程模块,用于在软件运行时启动,启动后下载并安装升级软件,在安装升级软件时,创建当前升级软件的新版本号对应的版本目录,将该新版本号的版本目录放置在与所述旧版本目录同级的目录下,将新版本软件的资源文件放置在该新版本号的版本目录中。8.根据权利要求7所述的装置,其特征在于,该装置进一步包括卸载模块,用于将与所述主程序文件同级目录下的所有文件和文件夹全部删除。9.根据权利要求7所述的装置,其特征在于,该装置进一步包括查询模块,用于查询当前系统内是否运行有一个以上所述软件主程序的实例,如果是则利用第一个运行的主程序实例启动所述升级进程模块;否则直接利用所述软件主程序实例启动所述升级进程模块。10.根据权利要求7所述的装置,其特征在于,所述升级进程模块中包括升级进程自升级模块,用于在下载升级软件之前,首先与服务器交互判断是否要自升级,如果是则下载新版本的升级程序文件,并退出升级进程;否则再触发升级进程模块下载并安装所述升级软件。11.根据权利要求7所述的装置,其特征在于,所述升级进程模块中包括版本升级模块,用于在下载升级软件之前与服务器交互判断是否需要升级软件,如果是则触发下载并安装新版本的升级软件;否则退出升级过程。12.根据权利要求7所述的装置,其特征在于,所述升级进程模块中包括校验模块,用于在下载得到升级软件后、安装升级软件之前,对所述下载得到的升级软件做MD5值匹配,如果匹配则触发所述升级进程模块安装升级软件,如果不匹配则判定本次下载失败,删除所述下载的升级软件,并触发升级进程模块重新下载所述升级软件,若下载失败的次数达到指定次数,则退出升级过程。全文摘要本发明公开了一种软件安装及升级方法和装置,方法包括创建当前版本号的版本目录,将该版本目录放置在与软件的主程序文件同级的目录下,将当前版本软件的资源文件放置在该版本目录中;软件主程序开始运行时,搜索与主程序文件同级目录下版本号最新的版本目录,并加载该版本目录;在软件运行时下载并安装升级软件,创建新版本号对应的版本目录,将该新版本号的版本目录放置在与所述旧版本目录同级的目录下,将新版本软件的资源文件放置在该新版本号的版本目录中。所述装置包括初始安装模块、主程序文件和升级进程模块。利用本发明,可以实现软件的静默升级,减少升级过程中的人机交互次数,方便用户使用软件。文档编号G06F9/445GK102955702SQ201110243128公开日2013年3月6日申请日期2011年8月23日优先权日2011年8月23日发明者库宇,魏亚民申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1