一种软件更新方法、系统、设备及介质技术方案

技术编号:38632815 阅读:15 留言:0更新日期:2023-08-31 18:30
本申请提供一种软件更新方法、系统、设备及介质,该方法可以提供两种软件更新方式,即通过子程序更新主程序,以及通过主程序更新子程序这两种方式;不仅实现了软件在局域网内的更新功能,而且只要管理员在服务器端发布新版本软件程序,用户即可更新到新版本,从而将用户需求从提出到落实的时间压缩到最短。并且本申请可以进行有效的版本控制,详细记录每个版本的变更。此外,本申请在完成软件更新时,可以保留用户设置信息,不需要用户在完成软件更新后重新配置,从而为用户节约了时间,提升用户体验。同时,本申请在软件更新时,可以让软件程序在更新时独立运行,并且对于任何结构的主程序,都可以使用更新程序来进行更新。都可以使用更新程序来进行更新。都可以使用更新程序来进行更新。

【技术实现步骤摘要】
一种软件更新方法、系统、设备及介质


[0001]本申请涉及计算机及通信
,特别是涉及一种软件更新方法、系统、设备及介质。

技术介绍

[0002]对于桌面软件程序来说,版本更新是一个很重要的功能,但是软件程序无法更新自己,因为软件程序在更新过程中需要中断自己,同时软件程序被中断更新后也会停止。并且桌面软件程序因其复杂性会带有许多设置,这些设置因使用的用户不同而不同,更新时如果无法保留这些设置,则会让用户在使用相应软件程序时进行重新设置,从而浪费用户时间,给用户带去不友好的使用体验。此外,为了减少用户更新软件程序的繁杂程度,应该让软件程序在更新时能够独立运行,并且对于任何结构的主程序,都可以使用更新程序来进行更新。

技术实现思路

[0003]鉴于以上所述现有技术的缺点,本申请的目的在于提供一种软件更新方法、系统、设备及介质,用于解决现有技术中软件更新时存在的技术问题。
[0004]为实现上述目的及其他相关目的,本申请提供一种软件更新方法,所述方法包括通过子程序更新主程序;通过子程序更新主程序的过程包括:
[0005]通过主程序打开更新程序,并使用管道通信将主程序名称传递给子程序,由所述子程序生成模拟身份后与服务器建立连接,并根据提供的主程序名称查询服务器目录和服务器目录xml文件是否存在;若所述服务器目录和所述服务器目录xml文件不存在,则退出当前待更新软件的更新流程;若所述服务器目录和所述服务器目录xml文件存在,则检查本地主程序xml文件是否存在;
[0006]如果所述本地主程序xml文件不存在,则将待更新软件的版本号设置为表示直接更新主程序的版本号,并开启子线程进行升级;
[0007]如果所述本地主程序xml文件存在,则比较判断所述服务器目录xml文件的版本号是否大于所述本地主程序xml文件的版本号;
[0008]若所述服务器目录xml文件的版本号大于所述本地主程序xml文件,则开启子线程进行升级;
[0009]若所述服务器目录xml文件的版本号小于或等于所述本地主程序xml文件,则启动子程序,不显示软件更新按钮;
[0010]开启子线程进行升级后,检查本地文件存储目录是否存在;
[0011]如果本地文件存储目录不存在,则创建本地文件存储目录;
[0012]如果本地文件存储目录存在,则在与服务器连接成功后,使用文件流将所述服务器中的目标程序压缩包下载到本地文件存储目录,同时实时显示下载进度;以及在下载完成后,检查解压文件目录是否存在;并在存在解压文件目录时,删除原始解压文件目录,并
解压所述目标程序压缩包,生成第一解压文件目录;以及使用递归把所述第一解压文件目录下所有目录和文件都移动到本地主程序目录,且在文件名相同时进行覆盖操作;以及删除软件更新时的临时文件,并更新本地主程序xml文件,以及显示“打开程序”按钮;所述“打开程序”按钮被触发后,先启动所述主程序,再关闭所述更新程序;其中,对本地主程序目录中相同文件名进行覆盖时,不对存放子程序和程序版本信息的目录和不对存放自定义配置的目录进行覆盖;所述临时文件包括所述目标程序压缩包、与所述目标程序压缩包对应的解压文件。
[0013]于本申请的一实施例中,所述方法还包括通过主程序更新子程序;通过主程序更新子程序的过程包括:
[0014]利用模拟身份连接服务器,检查服务器目录和服务器目录xml文件是否存在;若所述服务器目录和所述服务器目录xml文件不存在,则退出当前待更新软件的更新流程;若所述服务器目录和所述服务器目录xml文件存在,则检查本地子程序xml文件是否存在;
[0015]如果所述本地子程序xml文件不存在,则将待更新软件的版本号设置为表示直接更新子程序的版本号,并开启子线程进行升级;
[0016]如果所述本地子程序xml文件存在,则比较判断所述服务器目录xml文件的版本号是否大于所述本地子程序xml文件的版本号;
[0017]若所述服务器目录xml文件的版本号大于所述本地子程序xml文件,则开启子线程进行升级;
[0018]若所述服务器目录xml文件的版本号小于或等于所述本地子程序xml文件,则启动子程序,不显示软件更新按钮;
[0019]开启子线程进行升级后,检查本地文件存储目录是否存在;
[0020]如果本地文件存储目录不存在,则创建本地文件存储目录;
[0021]如果本地文件存储目录存在,则使用文件流将子程序压缩包下载到本地文件存储目录,并在下载完成后,检查解压文件目录是否存在;以及在存在解压文件目录时,删除原始解压文件目录,并解压所述子程序压缩包,得到第二解压文件目录;以及使用递归把所述第二解压文件目录下所有目录和文件都移动到本地子程序目录,且在文件名相同时进行覆盖操作,以及删除临时文件,并更新本地子程序xml文件,以及启动子程序,显示软件更新按钮;其中,所述临时文件包括所述子程序压缩包、与所述子程序压缩包对应的解压文件。
[0022]于本申请的一实施例中,通过子程序更新主程序前,所述方法还包括:在主程序exe所在目录设置程序主体目录、存放程序使用的动态链接库目录、存放程序使用时的文件目录、子程序目录、存放更新临时文件和xml文件的目录、存放主程序版本信息的目录、存放子程序版本信息的目录、存放用户本地信息和文件的目录;
[0023]其中,通过子程序更新主程序时,子程序不会更新子程序目录、存放用户本地信息和文件的目录。
[0024]于本申请的一实施例中,所述模拟身份的生成过程包括:利用所述主程序启动所述子程序,并通过所述子程序使用账号、密码、IP地址或域名尝试登录所述服务器,并在成功登录所述服务器时,生成所述模拟身份;
[0025]其中,当所述服务器是独立的文件服务器时提供IP地址,当所述服务器是域中的成员服务器时提供域名。
[0026]于本申请的一实施例中,所述服务器目录包括:存放各个程序压缩包和程序信息的主目录,且每个程序压缩包在服务器主目录下都有独立目录;所述独立目录根据程序压缩包名称确定,且所述独立目录包括程序压缩包和对应的xml文件。
[0027]本申请还提供一种软件更新系统,所述系统包括有:第一更新模块,用于通过子程序更新主程序;所述第一更新模块通过子程序更新主程序的过程包括:
[0028]通过主程序打开更新程序,并使用管道通信将主程序名称传递给子程序,由所述子程序生成模拟身份后与服务器建立连接,并根据提供的主程序名称查询服务器目录和服务器目录xml文件是否存在;若所述服务器目录和所述服务器目录xml文件不存在,则退出当前待更新软件的更新流程;若所述服务器目录和所述服务器目录xml文件存在,则检查本地主程序xml文件是否存在;
[0029]如果所述本地主程序xml文件不存在,则将待更新软件的版本号设置为表示直接更新主程序的版本号,并开启子线程进行升级;
[0030]如果所述本地主程序xml文件存在,则比较判断所述服务器目录xml文件的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软件更新方法,其特征在于,所述方法包括通过子程序更新主程序;通过子程序更新主程序的过程包括:通过主程序打开更新程序,并使用管道通信将主程序名称传递给子程序,由所述子程序生成模拟身份后与服务器建立连接,并根据提供的主程序名称查询服务器目录和服务器目录xml文件是否存在;若所述服务器目录和所述服务器目录xml文件不存在,则退出当前待更新软件的更新流程;若所述服务器目录和所述服务器目录xml文件存在,则检查本地主程序xml文件是否存在;如果所述本地主程序xml文件不存在,则将待更新软件的版本号设置为表示直接更新主程序的版本号,并开启子线程进行升级;如果所述本地主程序xml文件存在,则比较判断所述服务器目录xml文件的版本号是否大于所述本地主程序xml文件的版本号;若所述服务器目录xml文件的版本号大于所述本地主程序xml文件,则开启子线程进行升级;若所述服务器目录xml文件的版本号小于或等于所述本地主程序xml文件,则启动子程序,不显示软件更新按钮;开启子线程进行升级后,检查本地文件存储目录是否存在;如果本地文件存储目录不存在,则创建本地文件存储目录;如果本地文件存储目录存在,则在与服务器连接成功后,使用文件流将所述服务器中的目标程序压缩包下载到本地文件存储目录,同时实时显示下载进度;以及在下载完成后,检查解压文件目录是否存在;并在存在解压文件目录时,删除原始解压文件目录,并解压所述目标程序压缩包,生成第一解压文件目录;以及使用递归把所述第一解压文件目录下所有目录和文件都移动到本地主程序目录,且在文件名相同时进行覆盖操作;以及删除软件更新时的临时文件,并更新本地主程序xml文件,以及显示“打开程序”按钮;所述“打开程序”按钮被触发后,先启动所述主程序,再关闭所述更新程序;其中,对本地主程序目录中相同文件名进行覆盖时,不对存放子程序和程序版本信息的目录和不对存放自定义配置的目录进行覆盖;所述临时文件包括所述目标程序压缩包、与所述目标程序压缩包对应的解压文件。2.根据权利要求1所述的软件更新方法,其特征在于,所述方法还包括通过主程序更新子程序;通过主程序更新子程序的过程包括:利用模拟身份连接服务器,检查服务器目录和服务器目录xml文件是否存在;若所述服务器目录和所述服务器目录xml文件不存在,则退出当前待更新软件的更新流程;若所述服务器目录和所述服务器目录xml文件存在,则检查本地子程序xml文件是否存在;如果所述本地子程序xml文件不存在,则将待更新软件的版本号设置为表示直接更新子程序的版本号,并开启子线程进行升级;如果所述本地子程序xml文件存在,则比较判断所述服务器目录xml文件的版本号是否大于所述本地子程序xml文件的版本号;若所述服务器目录xml文件的版本号大于所述本地子程序xml文件,则开启子线程进行升级;若所述服务器目录xml文件的版本号小于或等于所述本地子程序xml文件,则启动子程
序,不显示软件更新按钮;开启子线程进行升级后,检查本地文件存储目录是否存在;如果本地文件存储目录不存在,则创建本地文件存储目录;如果本地文件存储目录存在,则使用文件流将子程序压缩包下载到本地文件存储目录,并在下载完成后,检查解压文件目录是否存在;以及在存在解压文件目录时,删除原始解压文件目录,并解压所述子程序压缩包,得到第二解压文件目录;以及使用递归把所述第二解压文件目录下所有目录和文件都移动到本地子程序目录,且在文件名相同时进行覆盖操作,以及删除临时文件,并更新本地子程序xml文件,以及启动子程序,显示软件更新按钮;其中,所述临时文件包括所述子程序压缩包、与所述子程序压缩包对应的解压文件。3.根据权利要求1所述的软件更新方法,其特征在于,通过子程序更新主程序前,所述方法还包括:在主程序EXE所在目录设置程序主体目录、存放程序使用的动态链接库目录、存放程序使用时的文件目录、子程序目录、存放更新临时文件和xml文件的目录、存放主程序版本信息的目录、存放子程序版本信息的目录、存放用户本地信息和文件的目录;其中,通过子程序更新主程序时,子程序不会更新子程序目录、存放用户本地信息和文件的目录。4.根据权利要求1或2所述的软件更新方法,其特征在于,所述模拟身份的生成过程包括:利用所述主程序启动所述子程序,并通过所述子程序使用账号、密码、IP地址或域名尝试登录所述服务器,并在成功登录所述服务器时,生成所述模拟身份;其中,当所述服务器是独立的文件服务器时提供IP地址,当所述服务器是域中的成员服务器时提供域名。5.根据权利要求1所述的软件更新方法,其特征在于,所述服务器目录包括:存放各个程序压缩包和程序信息的主目录,且每个程序压缩包在服务器主目录下都有独立目录;所述独...

【专利技术属性】
技术研发人员:王渝森
申请(专利权)人:重庆金芯麦斯传感器技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1