软件修复方法及系统的制作方法

文档序号:6427760阅读:214来源:国知局
专利名称:软件修复方法及系统的制作方法
软件修复方法及系统
技术领域
本发明涉及计算机技术领域,特别涉及ー种软件修复方法及系统。
背景技木现有的桌面软件由于操作系统的兼容性,用户的不良操作或其他问题,通常不可避免地会出现ー些程序异常,业界也称之为bug。一些客户端软件具有异常提示功能,在软件运行出现异常时,会提示用户程序损坏。此时若不及时对客户端软件进行修复,不仅影响用户正常使用软件的功能,而且频繁的提示信息也会使用户体验大打折扣。传统的软件修复方法通常采用了服务器向客户端推送修正内容的修复方式,SP月艮务器针对ー些普遍性的问题定期发布补丁,并通知客户端进行接收。通常有两种模式。第 ー种模式为版本升级模式,即服务器将新版本的客户端软件整体推送给客户端,客户端软件再整体替换成新版本的软件。第二种模式为文件升级模式,服务器将部分具有新内容或者新功能的模块文件推送给客户端,客户端在本地替换或者增加这些模块文件,从而通过升级来修复或者替换出错的软件模块,从而修复客户端软件。由上可知,传统的软件修复方法存在一些问题客户端不能在第一时间修复客户端软件的异常,需要等服务器有相应的解决方案后再推送过来;客户端必须依赖服务器,客户端软件本身不能进行自我修复;由于修复的不及时使得客户端会频繁提示异常信息,影响用户体验。

发明内容基于此,有必要提供ー种及时且准确的软件修复方法。ー种软件修复方法,包括以下步骤客户端获取桌面软件的异常信息;客户端根据所述异常信息查找本地是否有引起异常的软件模块的旧版本模块,若有,则将引起异常的软件模块替换为所述旧版本模块,否则向服务器发送修复请求;所述服务器根据所述修复请求获取修正模块,并将所述修正模块下发至所述客户端;所述客户端将引起异常的软件模块替换为所述修正模块。优选的,在所述客户端获取软件程序异常信息的步骤之后,进ー步包括根据所述异常信息定位引起异常的模块;判断所述引起异常的模块是否为桌面软件中的软件模块,若是,则进入所述客户端根据所述异常信息查找本地是否有引起异常的软件模块的旧版本模块的步骤,否则结束。优选的,在所述将引起异常的软件模块替换为所述旧版本模块的步骤之后,进ー步包括重新启动所述桌面软件;检测所述桌面软件是否运行正常,若是,则结束,否则进入向所述服务器发送修复请求的步骤。优选的,在所述客户端获取指定软件的异常信息之前还包括在服务器中建立异常信息与修正模块之间的映射关系的步骤;所述服务器根据所述修复请求获取修正模块,并将所述修正模块下发至所述客户端的步骤包括所述服务器根据所述映射关系查找与所述异常信息对应的修正模块,将查找得到的修正模块下发至所述客户端。优选的,所述方法还包括当所述服务器根据所述映射关系查找不到与所述异常信息对应的修正模块时,则获取桌面软件的稳定版本,将所述稳定版本下发至所述客户端。优选的,在所述将出现异常的软件模块替换为所述旧版本模块的步骤之后,进ー步包括所述客 户端将所述异常信息和所述旧版本模块的上传至所述服务器,所述服务器建立所述异常信息和丨日版本模块之间的映射关系。此外,有必要提供ー种及时且准确的软件修复系统。ー种软件修复系统,包括客户端及与所述客户端进行交互的服务器,所述客户端包括异常信息获取模块,用于获取桌面软件的异常信息;查找模块,用于根据所述异常信息查找本地是否有引起异常的软件模块的旧版本模块;替换模块,用于当所述查找模块在本地查找有引起异常的软件模块的旧版本模块时将引起异常的软件模块替换为所述旧版本模块;发送模块,用于当所述查找模块在本地查找不到引起异常的软件模块的旧版本模块时向服务器发送修复请求;所述服务器包括远程修复模块,用于根据所述修复请求获取修正模块,并将所述修正模块下发至所述客户端;所述替换模块还用于将所述引起异常的软件模块替换为所述服务器下发的修正模块。优选的,所述客户端还包括定位模块,用于根据所述异常信息定位引起异常的模块;判断模块,用于判断所述引起异常的模块是否为桌面软件中的软件模块,若是,则通知所述查找模块根据所述异常信息查找本地是否有出现异常的软件模块的旧版本模块。优选的,所述客户端还包括重启模块,用于在所述替换模块将引起异常的软件模块替换为所述旧版本模块后重新启动所述桌面软件;检测模块,用于检测所述桌面软件是否运行正常,若运行不正常,则通知所述发送模块向所述服务器发送修复请求。优选的,所述服务器还包括映射关系建立模块,用于建立异常信息与修正模块之间的映射关系;所述远程修复模块还用于根据所述映射关系查找与所述异常信息对应的修正模块,将查找得到的修正模块下发至所述客户端。优选的,所述远程修复模块还用于当所述根据所述映射关系查找不到与所述异常信息对应的修正模块时,则获取桌面软件的稳定版本,将所述稳定版本下发至所述客户端。优选的,所述发送模块还用于将所述异常信息和所述旧版本模块上传至所述服务器;所述映射关系建立模块还用于建立所述异常信息和旧版本模块之间的映射关系。上述软件修复方法及系统,客户端在获取到桌面软件的异常信息后,先查找本地是否有引起异常的软件模块的旧版本模块,若有,则将引起异常的软件模块替换为旧版本模块,实现客户端的自我修复;当客户端无法进行自我修复时,则向服务器发送修复请求,从服务器获取修正模块进行软件修复。这种方式不会依赖于服务器,能及时且准备的修复软件异常。

图I为ー个实施例中软件修复方法的流程示意图;图2为ー个实施例中软件修复系统的结构示意图;图3为ー个实施例中客户端的结构示意图;图4为另ー个实施例中客户端的结构示意图5为另ー个实施例中服务器的结构示意图。
具体实施方式在一个实施例中,如图I所示,ー种软件修复方法,包括以下步骤步骤S102,客户端获取桌面软件的异常信息。在一个优选的实施例中,当桌面软件运行出现异常时,运行桌面软件的客户端首先捕获异常,然后获取异常的堆栈信息,并找到位于栈底的异常信息记录,进而根据异常信息记录定位引起异常的模块。进ー步的,客户端判断引起异常的模块是否为桌面软件中的软件模块,若是,则进入客户端根据异常信息查找本地是否有引起异常的软件模块的旧版本模块的步骤,否则,则返回结束。客户端判断引起异常的模块是否为桌面软件中的软件模块的步骤是为了辨别引起异常的原因是来自桌面软件自身还是来自外界环境或桌面软件无法干涉的模块或进程,从而确定异常彳目息是否有效。步骤S104,客户端根据异常信息查找本地是否有引起异常的软件模块的旧版本模块,若有,则进入步骤S106,否则进入步骤S108。在优选的实施例中,客户端已经根据异常信息定位了引起异常的模块,若引起异常的模块是桌面软件中的模块,则客户端在本地查找与引起异常的软件模块对应的旧版本模块。步骤S106,将引起异常的软件模块替换为旧版本模块。在优选的实施例中,若客户端在本地查找到引起异常的软件模块的旧版本模块,客户端则将引起异常的软件模块替换为查找得到的旧版本模块,从而实现客户端的自我修复功能。在另ー个优选的实施例中,在步骤S106之后,重新启动桌面软件,客户端继续检测桌面软件是否运行正常,若正常,则修复结束,若桌面软件运行仍有异常,则进入步骤S108。步骤S108,向服务器发送修复请求。
在步骤S108中,客户端向服务器发送的修复请求中包含获取到的异常信息以及定位到的引起异常的软件模块的信息,例如获取到的异常信息为“0001”,引起该异常的软件丰吴块编号为“A”。步骤S110,服务器根据修复请求获取修正模块,并将修正模块下发至客户端。在优选的实施例中,在步骤S102之前,事先在服务器上建立有异常信息与修正模块的映射关系,优选为使用哈希表存储,哈希表是ー种键值对表,异常信息作为键,修正模块作为值,采用此结构的数据结构可以方便查找。服务器接收到客户端向服务器发送的修复请求之后,首先解析修复请求,并从中提取出异常信息,然后服务器在前述的异常信息与修正模块的映射关系中查找与从客户端发送的修复请求中提取出的异常信息对应的修正模块,然后将修正模块下发至客户端。若服务器无法在异常信息与修正模块的映射关系中找到与从客户端发送的修复请求中提取出的异常信息对应的修正模块,则服务器获取桌面软件的稳定版本,然后将稳定版本下发至客户端,该过程也称为“版本回滚”。也就是说,当服务器上查找不到能够修复软件异常的修正模块时,也可以将桌面软件的稳定版本下发到客户端进行桌面软件的整体替换。步骤S112,客户端将引起异常的软件模块替换为修正模块。客户端接收到服务器下发的用于修正异常的修正模块,然后将引起异常的软件模块替换为该修正模块。
在另ー个实施例中,若服务器将桌面软件的稳定版本下发至客户端,则客户端将本地的桌面软件整体替换为稳定版本的桌面软件。在一个优选的实施例中,在步骤S106中将引起异常的软件模块替换为与引起异常的模块对应的旧版本模块中,桌面软件重启之后,若客户端检测桌面软件运行正常,则客户端可将异常信息和与引起异常的软件模块的旧版本模块作为修复反馈信息上传至服务器。服务器接收客户端发送的修复反馈信息,然后从中提取出异常信息和与引起异常的软件模块的旧版本模块,并在服务器上建立异常信息和旧版本模块之间的映射关系。客户端的修复反馈信息上传至服务器,使得服务器的修正模块的集合能够通过客户端的修复操作得到补充,方便了其他客户端发生异常之后的修复操作,从而使得服务器上的修正模块更加完备,异常修复的途径更加丰富,使得软件修复方法更加准确和安全。采用了上述实施例中的软件修复方法,客户端上运行的桌面软件在发生异常的第一时间能够实现自我修复,且自我修复失败后紧接着启动服务器远程修复流程,从而不用等待服务器推送的修复补丁,使得软件异常的修复更加及吋。自我修复和服务器修复程序失败后启动版本回滚,则能够确保软件能够正常运行,使得软件修复更加准确、安全。在一个实施例中,如图2所示,ー种软件修复系统,包括客户端10和与客户端10进行交互的服务器20,其中,客户端10包括异常信息获取模块102、查找模块104、替换模块106和发送模块108 ;服务器20包括远程修复模块202。其中异常信息获取模块102用于获取桌面软件的异常信息。在一个优选的实施例中,如图3所示,客户端10还包括定位模块110和判断模块112,其中定位模块110用于根据异常信息定位引起异常的模块。当桌面软件运行出现异常时,定位模块110捕获异常,然后获取异常的堆栈信息,并找到位于栈底的异常信息记录,进而根据异常信息记录定位引起异常的模块。判断模块112用于判断引起异常的模块是否为桌面软件中的软件模块,若是,则通知查找模块104查找本地是否有引起异常的软件模块的旧版本模块。客户端10判断引起异常的模块是否为桌面软件中的软件模块是为了辨别引起异常的原因是来自桌面软件自身还是来自外界环境或桌面软件无法干涉的模块或进程,从而确定异常信息是否有效。查找模块104用于根据异常信息查找本地是否有引起异常的软件模块的旧版本模块。替换模块106用于当查找模块104在本地查找有引起异常的软件模块的旧版本模块时则将引起异常的软件模块替换旧版本模块。发送模块108用于当查找模块106查找不到引起异常的软件模块的旧版本模块时向服务器20发送修复请求。在一个优选的实施例中,如图4所示,客户端10还包括重启模块114和检测模块116,其中
重启模块114用于在替换模块106将引起异常的软件模块替换为与引起异常的软件模块的旧版本模块后重新启动桌面软件。检测模块116用于检测桌面软件是否运行正常,若正常,则修复结束;若桌面软件运行仍有异常,则通知发送模块108向服务器20发送修复请求。发送模块108向服务器20发送的修复请求中包含获取到的异常信息以及定位到的引起异常的软件模块的信息,例如获取到的异常信息为“0001”,引起该异常的软件模块编号为“A”。远程修复模块202用于根据修复请求获取修正模块,将修正模块下发至客户端10。在一个优选的实施例中,如图5所不,服务器20还包括映射关系建立模块204,其中映射关系建立模块204用于建立异常信息与修正模块的映射关系。该映射关系优选使用哈希表存储,哈希表是ー种键值对表,异常信息作为键,修正模块作为值,采用此结构的数据结构可以方便查找。远程修复模块202接收到修复请求之后,首先解析请求,并从中提取出异常信息,映射关系中查找与修复请求中提取出的异常信息对应的修正模块,然后将修正模块下发至客户端10。替换模块106还用于将引起异常的软件模块替换为远程修复模块202下发的修正模块。在另ー个实施例中,远程修复模块202还用于当根据映射关系中查找不到与异常信息对应的修正模块时,则获取桌面软件的稳定版本,将稳定版本下发至客户端10,该过程也称为“版本回滚”。该实施例中,客户端10接收到服务器20下发的桌面软件的稳定版本,则将桌面软件整体替换为稳定版本的桌面软件。在另ー个优选的实施例中,发送模块108还用于将异常信息和与引起异常的软件模块的旧版本模块作为修复反馈信息上传至服务器20。服务器20的映射关系建立模块204还用于建立该异常信息和与引起异常的软件模块的旧版本模块之间的映射关系。客户端10将修复反馈信息上传至服务器20,使得服务器20的修正模块的集合能够通过客户端10的修复操作得到补充,方便了其他客户端发生异常之后的修复操作,从而使得服务器20上的修正模块更加完备,异常修复的途径更加丰富,使得软件修复方法更加准确和安全。采用了上述实施例中的软件修复系统,客户端10上运行的桌面软件在发生异常的第一时间能够进行自我修复,且自我修复失败后则向服务器20发送修复请求,进行服务器20的远程修复,从而不用等待服务器20推送的修复补丁,使得软件异常的修复更加及吋。自我修复和服务器20修复程序失败后启动的版本回滚,则能够确保桌面软件能够正常运行,使得软件修复更加准确、安全。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明·专利的保护范围应以所附权利要求为准。
权利要求
1.一种软件修复方法,包括以下步骤 客户端获取桌面软件的异常信息; 客户端根据所述异常信息查找本地是否有引起异常的软件模块的旧版本模块,若有,则将引起异常的软件模块替换为所述旧版本模块,否则 向服务器发送修复请求; 所述服务器根据所述修复请求获取修正模块,并将所述修正模块下发至所述客户端; 所述客户端将引起异常的软件模块替换为所述修正模块。
2.根据权利要求I所述的软件修复方法,其特征在于,在所述客户端获取桌面软件的异常信息的步骤之后,进一步包括 根据所述异常信息定位引起异常的模块; 判断所述引起异常的模块是否为桌面软件中的软件模块,若是,则进入所述客户端根据所述异常信息查找本地是否有引起异常的软件模块的旧版本模块的步骤,否则结束。
3.根据权利要求I所述的软件修复方法,其特征在于,在所述将引起异常的软件模块替换为所述旧版本模块的步骤之后,进一步包括 重新启动所述桌面软件; 检测所述桌面软件是否运行正常,若是,则结束,否则进入向所述服务器发送修复请求的步骤。
4.根据权利要求I所述的软件修复方法,其特征在于,在所述客户端获取指定软件的异常信息之前还包括在服务器中建立异常信息与修正模块之间的映射关系的步骤; 所述服务器根据所述修复请求获取修正模块,并将所述修正模块下发至所述客户端的步骤包括 所述服务器根据所述映射关系查找与所述异常信息对应的修正模块,将查找得到的修正模块下发至所述客户端。
5.根据权利要求4所述的软件修复方法,其特征在于,所述方法还包括 当所述服务器根据所述映射关系查找不到与所述异常信息对应的修正模块时,则获取桌面软件的稳定版本,将所述稳定版本下发至所述客户端。
6.根据权利要求I所述的软件修复方法,其特征在于,在所述将出现异常的软件模块替换为所述旧版本模块的步骤之后,进一步包括 所述客户端将所述异常信息和所述旧版本模块的上传至所述服务器,所述服务器建立所述异常信息和丨H版本模块之间的映射关系。
7.一种软件修复系统,包括客户端及与所述客户端进行交互的服务器,其特征在于,所述客户端包括 异常信息获取模块,用于获取桌面软件的异常信息; 查找模块,用于根据所述异常信息查找本地是否有引起异常的软件模块的旧版本模块; 替换模块,用于当所述查找模块在本地查找有引起异常的软件模块的旧版本模块时将引起异常的软件模块替换为所述旧版本模块; 发送模块,用于当所述查找模块在本地查找不到引起异常的软件模块的旧版本模块时向服务器发送修复请求;所述服务器包括 远程修复模块,用于根据所述修复请求获取修正模块,并将所述修正模块下发至所述客户端; 所述替换模块还用于将所述引起异常的软件模块替换为所述服务器下发的修正模块。
8.根据权利要求7所述的软件修复系统,其特征在于,所述客户端还包括 定位模块,用于根据所述异常信息定位引起异常的模块; 判断模块,用于判断所述引起异常的模块是否为桌面软件中的软件模块,若是,则通知所述查找模块根据所述异常信息查找本地是否有出现异常的软件模块的旧版本模块。
9.根据权利要求7所述的软件修复系统,其特征在于,所述客户端还包括 重启模块,用于在所述替换模块将引起异常的软件模块替换为所述旧版本模块后重新启动所述桌面软件; 检测模块,用于检测所述桌面软件是否运行正常,若运行不正常,则通知所述发送模块向所述服务器发送修复请求。
10.根据权利要求7所述的软件修复系统,其特征在于,所述服务器还包括 映射关系建立模块,用于建立异常信息与修正模块之间的映射关系; 所述远程修复模块还用于根据所述映射关系查找与所述异常信息对应的修正模块,将查找得到的修正模块下发至所述客户端。
11.根据权利要求10所述的软件修复系统,其特征在于,所述远程修复模块还用于当所述根据所述映射关系查找不到与所述异常信息对应的修正模块时,则获取桌面软件的稳定版本,将所述稳定版本下发至所述客户端。
12.根据权利要求7所述的软件修复系统,其特征在于,所述发送模块还用于将所述异常信息和所述旧版本模块上传至所述服务器; 所述映射关系建立模块还用于建立所述异常信息和旧版本模块之间的映射关系。
全文摘要
一种软件修复方法,包括以下步骤客户端获取桌面软件的异常信息;客户端根据所述异常信息查找本地是否有引起异常的软件模块的旧版本模块,若有,则将引起异常的软件模块替换为所述旧版本模块,否则,向服务器发送修复请求;所述服务器根据所述修复请求获取修正模块,并将所述修正模块下发至所述客户端;所述客户端将引起异常的软件模块替换为所述修正模块。采用了上述软件修复方法,客户端软件不用等待服务器推送的修正补丁,而能够在第一时间得到修复,软件修复及时且准备。此外,还提供了一种软件修复系统。
文档编号G06F11/36GK102855181SQ20111018437
公开日2013年1月2日 申请日期2011年7月1日 优先权日2011年7月1日
发明者张顺四, 刘杨 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1