会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 电脑零配件 / 固件 / 软件 / 软件更新方法以及相关装置

软件更新方法以及相关装置

阅读:1053发布:2020-07-29

IPRDB可以提供软件更新方法以及相关装置专利检索,专利查询,专利分析的服务。并且本申请实施例公开了一种软件更新方法,用于实现不需要关闭主程序也可以将现有组件更新为新组件,解决造成用户使用不便的问题。本申请实施例方法包括:更新程序获取包括软件的现有组件需要更新为的新组件的更新包,检测需要更新的现有组件是否存在被主程序引用的句柄,若存在被主程序引用的句柄,则更新程序检测现有组件是否正在被主程序调用,若未被主程序调用,则解除主程序对现有组件引用的句柄,若正被主程序调用,则在主程序完成当次调用之后解除主程序对现有组件引用的句柄,再向主程序发送调用通知,主程序根据该调用通知将对现有组件的调用更新为对新组件的调用。,下面是软件更新方法以及相关装置专利的具体信息内容。

1.一种软件更新方法,其特征在于,软件包括相互分离的主程序和更新程序,所述软件的更新包括:所述更新程序获取所述软件的更新包,所述更新包内包括所述软件的现有组件需要更新为的新组件;

所述更新程序检测所述现有组件是否存在被所述主程序引用的句柄;其中,所述现有组件在被所述主程序引用过程中可以被所述主程序多次调用;

若所述现有组件存在被所述主程序引用的句柄,则所述更新程序检测所述现有组件是否正在被所述主程序调用,若所述现有组件未被所述主程序调用,则所述更新程序解除所述主程序对所述现有组件引用的句柄;若所述现有组件正被所述主程序调用,所述更新程序向所述主程序发送在本次调用所述现有组件结束后暂停下一次调用的暂停通知,所述更新程序在接收所述主程序根据所述暂停通知发送的已暂停所述现有组件调用的已暂停通知,所述更新程序解除所述主程序对所述现有组件引用的句柄;

所述更新程序向所述主程序发送调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;

所述主程序根据所述标识信息将对所述现有组件的调用更新为对所述新组件的调用。

2.根据权利要求1所述的软件更新方法,其特征在于,所述更新程序检测所述现有组件是否存在被所述软件的主程序引用的句柄,包括:所述更新程序通过句柄探测程序检测所述现有组件是否存在被所述主程序引用的句柄。

3.根据权利要求2所述的软件更新方法,其特征在于,所述更新程序解除所述主程序对所述现有组件引用的句柄,包括:所述更新程序调用解除函数解除所述主程序对所述现有组件引用的句柄。

4.根据权利要求3所述的更新方法,其特征在于,所述更新程序向所述主程序发送调用通知包括:所述更新程序通过回调函数向所述主程序发送调用通知。

5.一种软件更新方法,其特征在于,软件包括相互分离的主程序和更新程序,所述软件的更新包括:所述主程序获取所述更新程序的更新包,所述更新包内包括所述更新程序的现有组件需要更新为的新组件;

所述主程序检测所述现有组件是否存在被所述更新程序引用的句柄;其中,所述现有组件在被所述更新程序引用过程中可以被所述更新程序多次调用;

若所述现有组件存在被更新程序引用的句柄,则所述主程序检测所述现有组件是否正在被所述更新程序调用,若所述现有组件未被所述更新程序调用,则所述主程序解除所述更新程序对所述现有组件引用的句柄;若所述现有组件正被所述更新程序调用,所述主程序向所述更新程序发送在本次调用所述现有组件结束后暂停下一次调用的暂停通知,所述主程序在接收所述更新程序根据所述暂停通知发送的已暂停所述现有组件调用的已暂停通知,所述主程序解除所述更新程序对所述现有组件引用的句柄;

所述主程序向所述更新程序发送调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;

所述更新程序根据所述标识信息将对所述现有组件的调用更新为对所述新组件的调用。

6.根据权利要求1或5所述的软件更新方法,其特征在于,所述对现有组件的调用更新为对所述新组件的调用包括:通过NET Framework中的Process类对所述现有组件的调用更新为通过NET Framework中的Process类对所述新组件的调用。

7.一种软件更新系统,其特征在于,应用于包括相互分离的主程序和更新程序的软件更新,包括:获取单元,用于获取软件的更新包,所述更新包内包括所述软件的现有组件需要更新为的新组件;

第一检测单元,用于检测所述现有组件是否存在被所述主程序引用的句柄;其中,所述现有组件在被所述主程序引用过程中可以被所述主程序多次调用;

第二检测单元,用于若所述现有组件存在被所述软件的主程序引用的句柄,则检测所述现有组件是否正在被所述主程序调用;

第一解除单元,用于若所述现有组件未被所述主程序调用,则解除所述主程序对所述现有组件引用的句柄;

第一发送单元,用于若所述现有组件正被所述主程序调用,向所述主程序发送在本次调用所述现有组件结束后暂停下一次调用的暂停通知;

接收单元,用于接收所述主程序根据所述暂停通知发送的已暂停本次现有组件调用的已暂停通知;

第二解除单元,用于在接收单元接收所述主程序根据所述暂停通知发送的已暂停本次现有组件调用的已暂停通知之后,解除所述主程序对所述现有组件引用的句柄;

第二发送单元,用于向所述主程序发送调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;

调用单元,用于根据所述标识信息将对所述现有组件的调用更新为对所述新组件的调用。

8.一种软件更新系统,其特征在于,应用于包括相互分离的主程序和更新程序的软件更新,包括:获取单元,用于获取更新程序的更新包,所述更新包内包括所述更新程序的现有组件需要更新为的新组件;

第一检测单元,用于检测所述现有组件是否存在被所述更新程序引用的句柄;其中,所述现有组件在被所述更新程序引用过程中可以被所述更新程序多次调用;

第二检测单元,用于若所述现有组件存在被所述更新程序引用的句柄,则检测所述现有组件是否正在被所述更新程序调用;

第一解除单元,用于若所述现有组件未被所述更新程序调用,则解除所述更新程序对所述现有组件引用的句柄;

第一发送单元,用于若所述现有组件正被所述更新程序调用,向所述更新程序发送在本次调用所述现有组件结束后暂停下一次调用的暂停通知;

接收单元,用于接收所述更新程序根据所述暂停通知发送的已暂停本次现有组件调用的已暂停通知;

第二解除单元,用于在接收单元接收所述更新程序根据所述暂停通知发送的已暂停本次现有组件调用的已暂停通知之后,解除所述更新程序对所述现有组件引用的句柄;

第二发送单元,用于向所述更新程序发送调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;

调用单元,用于将对所述现有组件的调用更新为对所述新组件的调用。

9.一种计算机装置,其特征在于,包括:

处理器和存储器,所述存储器存储有计算机程序;

所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的方法。

10.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有指令,所述指令在计算机上执行时,使得所述计算机执行如权利要求1至6中任一项所述的方法。

说明书全文

软件更新方法以及相关装置

技术领域

[0001] 本申请实施例涉及软件更新技术领域,尤其涉及一种软件更新方法以及相关装置。

背景技术

[0002] 随着社会的不断发展,在计算机操作系统上运行的软件需要不断推出新版本以适应用户的不同需求。在现有技术方案中,启动软件的更新程序,当某个软件有新版本更新时,需要下载该软件的新版本更新包,并关闭正在运行的该软件的主程序,之后才能进行软件更新,并且更新完成之后需要重启软件程序才能正常运行新版本的程序,造成用户使用不便。

发明内容

[0003] 本申请实施例提供了一种软件更新方法以及相关装置,用于解决需要关闭正在运行的软件的主程序,之后才能进行该软件更新,并且更新完成之后需要重启软件程序才能正常运行新版本的程序,造成用户使用不便的问题。
[0004] 本申请第一方面提供了一种软件更新方法,该软件包括相互分离的主程序和更新程序,所述软件的更新包括:
[0005] 更新程序获取所述软件的更新包,所述更新包内包括所述软件的现有组件需要更新为的新组件;
[0006] 所述更新程序检测所述现有组件是否存在被所述主程序引用的句柄;其中,所述现有组件在被所述主程序引用过程中可以被所述主程序多次调用;
[0007] 若所述现有组件存在被所述主程序引用的句柄,则所述更新程序检测所述现有组件是否正在被所述主程序调用,若所述现有组件未被所述主程序调用,则所述更新程序解除所述主程序对所述现有组件引用的句柄;若所述现有组件正被所述主程序调用,所述更新程序向所述主程序发送在本次调用所述现有组件结束后暂停下一次调用的暂停通知,所述更新程序在接收所述主程序根据所述暂停通知发送的已暂停所述现有组件调用的已暂停通知,所述更新程序解除所述主程序对所述现有组件引用的句柄;
[0008] 所述更新程序向所述主程序发送调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;
[0009] 所述主程序根据所述标识信息将对所述现有组件的调用更新为对所述新组件的调用。
[0010] 可选地,所述更新程序检测所述现有组件是否存在被所述软件的主程序引用的句柄,包括:
[0011] 所述更新程序通过句柄探测程序检测所述现有组件是否存在被所述软件的主程序引用的句柄。
[0012] 可选地,所述更新程序解除所述主程序对所述现有组件引用的句柄,包括:
[0013] 所述更新程序调用解除函数解除所述主程序对所述现有组件引用的句柄。
[0014] 可选地,所述更新程序向所述主程序发送调用通知包括:
[0015] 所述更新程序通过回调函数向所述主程序发送调用通知。
[0016] 可选地,所述对现有组件的调用更新为对所述新组件的调用包括:
[0017] 通过NET Framework中的Process类对所述现有组件的调用更新为通过NET Framework中的Process类对所述新组件的调用。
[0018] 本申请第二方面提供了另一种软件更新方法,该软件包括相互分离的主程序和更新程序,所述软件的更新包括:
[0019] 所述主程序获取所述更新程序的更新包,所述更新包内包括所述更新程序的现有组件需要更新为的新组件;
[0020] 所述主程序检测所述现有组件是否存在被所述更新程序引用的句柄;其中,所述现有组件在被所述更新程序引用过程中可以被所述更新程序多次调用;
[0021] 若所述现有组件存在被更新程序引用的句柄,则所述主程序检测所述现有组件是否正在被所述更新程序调用,若所述现有组件未被所述更新程序调用,则所述主程序解除所述更新程序对所述现有组件引用的句柄;若所述现有组件正被所述更新程序调用,所述主程序向所述更新程序发送在本次调用所述现有组件结束后暂停下一次调用的暂停通知,所述主程序在接收所述更新程序根据所述暂停通知发送的已暂停所述现有组件调用的已暂停通知,所述主程序解除所述更新程序对所述现有组件引用的句柄;
[0022] 所述主程序向所述更新程序发送调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;
[0023] 所述更新程序根据所述标识信息将对所述现有组件的调用更新为对所述新组件的调用。
[0024] 可选地,所述对现有组件的调用更新为对所述新组件的调用包括:
[0025] 通过NET Framework中的Process类对所述现有组件的调用更新为通过NET Framework中的Process类对所述新组件的调用。
[0026] 本申请第三方面提供一种软件更新方法,软件包括相互分离的主程序和更新程序,所述软件的更新包括:
[0027] 主程序在调用现有组件时,接收更新程序发送的在本次调用所述现有组件结束后暂停下一次调用的暂停通知;
[0028] 所述主程序根据所述暂停通知在本次调用所述现有组件结束后,暂停对所述现有组件的调用;
[0029] 所述主程序向所述更新程序发送已暂停所述现有组件的调用的已暂停通知;
[0030] 所述主程序接收更新程序根据所述已暂停通知发送的调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;
[0031] 在所述主程序需要再次调用所述现有组件时,所述主程序调用所述标识信息对应的新组件。
[0032] 本申请第四方面提供一种软件更新方法,软件包括相互分离的主程序和更新程序,所述软件的更新包括:
[0033] 更新程序在调用现有组件时,接收主程序发送的在本次调用所述现有组件结束后暂停下一次调用的暂停通知;
[0034] 所述更新程序根据所述暂停通知在本次调用所述现有组件结束后,暂停对所述现有组件的调用;
[0035] 所述更新程序向所述主程序发送已暂停所述现有组件的调用的已暂停通知;
[0036] 所述更新程序接收主程序根据所述已暂停通知发送的调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;
[0037] 在所述更新程序需要再次调用所述现有组件时,所述更新程序调用所述标识信息对应的新组件。
[0038] 本申请第五方面提供了一种软件更新系统,软件包括相互分离的主程序和更新程序,所述软件的更新包括:
[0039] 获取单元,用于获取软件的更新包,所述更新包内包括所述软件的现有组件需要更新为的新组件;
[0040] 第一检测单元,用于检测所述现有组件是否存在被所述软件的主程序引用的句柄;其中,所述现有组件在被所述主程序引用过程中可以被所述主程序多次调用;
[0041] 第二检测单元,用于若所述现有组件存在被所述软件的主程序引用的句柄,则检测所述现有组件是否正在被所述主程序调用;
[0042] 第一解除单元,用于若所述现有组件未被所述主程序调用,则解除所述主程序对所述现有组件引用的句柄;
[0043] 第一发送单元,用于若所述现有组件正被所述主程序调用,向所述主程序发送在本次调用所述现有组件结束后暂停下一次调用的暂停通知;
[0044] 接收单元,用于接收所述更新程序根据所述暂停通知发送的已暂停现有组件调用的已暂停通知;
[0045] 第二解除单元,用于在接收单元接收所述主程序根据所述暂停通知发送的已暂停本次现有组件调用的已暂停通知之后,解除所述主程序对所述现有组件引用的句柄;
[0046] 第二发送单元,用于向所述主程序发送调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;
[0047] 调用单元,用于根据所述标识信息将对所述现有组件的调用更新为对所述新组件的调用。
[0048] 可选地,第一检测单元在检测所述现有组件是否存在被所述软件的主程序引用的句柄时,具体用于:
[0049] 通过句柄探测程序检测所述现有组件是否存在被所述软件的主程序引用的句柄。
[0050] 可选地,第一解除单元或第二解除单元在解除所述主程序对所述现有组件引用的句柄时,具体用于:
[0051] 调用解除函数解除所述主程序对所述现有组件引用的句柄。
[0052] 可选地,第一发送单元或第二发送单元在向所述主程序发送调用通知时,具体用于:
[0053] 通过回调函数向所述主程序发送调用通知。
[0054] 可选地,所述调用单元对所述现有组件的调用更新为对所述新组件的调用时,具体用于:
[0055] 通过NET Framework中的Process类对所述现有组件的调用更新为通过NET Framework中的Process类对所述新组件的调用。
[0056] 本申请第六方面提供了另一种软件更新系统,软件包括相互分离的主程序和更新程序,所述软件的更新包括:
[0057] 获取单元,用于获取更新程序的更新包,所述更新包内包括所述更新程序的现有组件需要更新为的新组件;
[0058] 第一检测单元,用于检测所述现有组件是否存在被所述更新程序引用的句柄;其中,所述现有组件在被所述更新程序引用过程中可以被所述更新程序多次调用;
[0059] 第二检测单元,用于若所述现有组件存在被所述软件的更新程序引用的句柄,则检测所述现有组件是否正在被所述更新程序调用;
[0060] 第一解除单元,用于若所述现有组件未被所述更新程序调用,则解除所述更新程序对所述现有组件引用的句柄;
[0061] 第一发送单元,用于若所述现有组件正被所述更新程序调用,向所述更新程序发送在本次调用所述现有组件结束后暂停下一次调用的暂停通知;
[0062] 接收单元,用于接收所述主程序根据所述暂停通知发送的已暂停现有组件调用的已暂停通知;
[0063] 第二解除单元,用于在接收单元接收所述更新程序根据所述暂停通知发送的已暂停本次现有组件调用的已暂停通知之后,解除所述更新程序对所述现有组件引用的句柄;
[0064] 第二发送单元,用于向所述更新程序发送调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;
[0065] 调用单元,用于根据所述标识信息将对所述现有组件的调用更新为对所述新组件的调用。
[0066] 本申请第七方面提供了另一种软件更新系统,包括:
[0067] 接收单元,用于在调用现有组件时,接收更新程序或主程序发送的在本次调用所述现有组件结束后暂停下一次调用的暂停通知;
[0068] 暂停单元,用于根据所述暂停通知在本次调用所述现有组件结束后,暂停对所述现有组件的调用;
[0069] 发送单元,用于向所述更新程序或主程序发送已暂停所述现有组件的调用的已暂停通知;
[0070] 接收单元,还用于接收更新程序或主程序发送的调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;
[0071] 调用单元,用于在需要再次调用所述现有组件时,所述主程序或更新程序调用所述标识信息对应的新组件。
[0072] 可选地,所述调用单元对所述现有组件的调用更新为对所述新组件的调用时,具体用于:
[0073] 通过NET Framework中的Process类对所述现有组件的调用更新为通过NET Framework中的Process类对所述新组件的调用。
[0074] 本申请第八方面提供了一种计算机装置,包括:
[0075] 处理器和存储器,所述存储器存储有计算机程序;
[0076] 所述处理器执行前述第一方面和第二方面的任一项所述的方法。
[0077] 本申请第九方面提供了一种计算机存储介质,所述计算机存储介质中存储有指令,所述指令在计算机上执行时,使得所述计算机执行前述第一方面和第二方面的任一项所述的方法。
[0078] 本申请第十方面提供了一种计算机程序产品,所述计算机程序产品在计算机上执行时,使得所述计算机执行前述第一方面和第二方面的任一项所述的方法。
[0079] 从以上技术方案可以看出,本申请实施例具有以下优点:
[0080] 本申请中在软件需要更新时,软件的更新程序执行更新的过程中不需要通过关闭软件的主程序,而是通过调用解除函数来解除引用的句柄,然后通知调用新组件,根据更新的通知指示调用对应的新组件,进而实现不需要关闭主程序也可以将现有组件更新为新组件,解决造成用户使用不便的问题。

附图说明

[0081] 图1为本申请实施例中软件更新方法一个流程示意图;
[0082] 图2为本申请实施例中软件更新方法另一个流程示意图;
[0083] 图3为本申请实施例中软件更新方法另一个流程示意图;
[0084] 图4为本申请实施例中软件更新方法另一个流程示意图;
[0085] 图5为本申请实施例中软件更新方法另一个流程示意图;
[0086] 图6为本申请实施例中软件更新方法另一个流程示意图;
[0087] 图7为本申请实施例中软件更新系统一个结构示意图;
[0088] 图8为本申请实施例中软件更新系统另一个结构示意图;
[0089] 图9为本申请实施例中软件更新的计算机装置的一个结构示意图。

具体实施方式

[0090] 本申请实施例提供了一种软件更新方法以及相关装置,用于解决不需要关闭主程序也可以将现有组件更新为新组件,解决造成用户使用不便的问题。
[0091] 本申请所提及的软件包含相互分离的主程序和更新程序,即软件的主程序和更新程序是在不同的软件工程下编写的程序。
[0092] 请参阅图1,本申请实施例中软件更新方法的一个实施例包括:
[0093] 101、更新程序获取软件的更新包,更新包内包括软件的现有组件需要更新为的新组件;
[0094] 当软件的更新程序检测到该软件存在比目前安装的版本有更新的版本时,该更新程序会获取该软件的更新包,该更新包至少包括有该软件现有组件需要更新为的新组件。
[0095] 102、更新程序检测新组件对应的现有组件是否存在被软件的主程序引用的句柄,若该现有组件存在被软件的主程序引用的句柄,则执行步骤103,若该现有组件不存在被软件的主程序引用的句柄,则执行步骤107;
[0096] 当步骤101中更新程序获取到更新版本的新组件之后,需要检测一下新组件要更新的对应现有组件是否正被软件的主程序引用,即检测该现有组件是否存在被主程序引用的句柄,其中,需要说明的是现有组件在被主程序引用过程中可以被主程序多次调用。
[0097] 103、更新程序检测现有组件是否正被主程序调用,若该现有组件正被主程序调用,则执行步骤104,若该现有组件未被主程序调用,则执行步骤105;
[0098] 当步骤102中更新程序确定该新组件对应的现有组件正被主程序引用,则该更新程序进一步检测该现有组件是否正在被该主程序调用。
[0099] 104、更新程序向主程序发送本次调用现有组件结束后暂停下一次调用的暂停通知;
[0100] 当步骤103中更新程序确定该现有组件正在被该软件的主程序调用,则向该主程序发送本次调用现有组件结束后暂停下一次调用的暂停通知。
[0101] 105、更新程序接收主程序根据暂停通知发送的已暂停现有组件调用的已暂停通知;
[0102] 当步骤104中更新程序向主程序发送暂停通知之后,更新程序会接收主程序在结束当次对该现有组件调用之后发给更新程序发送的已暂停通知。
[0103] 106、更新程序解除主程序对现有组件引用的句柄;
[0104] 当步骤103中更新程序确定现有组件存在被软件的主程序引用的句柄,但该现有组件未被该主程序调用时,更新程序可以解除主程序对该现有组件引用的句柄。因为当组件被程序持有句柄时,是没法进行更新替换的。当步骤105中更新程序接收到主程序发送的已暂停调用相应现有组件的已暂停通知之后,更新程序就可以解除主程序对该现有组件引用的句柄。
[0105] 107、更新程序向主程序发送调用通知,调用通知包括现有组件需要更新为的新组件的标识信息;
[0106] 当步骤102中更新程序检测新组件对应的现有组件不存在被软件的主程序引用的句柄时,更新程序可以直接向主程序发送调用通知,该通知包括现有组件需要更新为的新组件的标识信息;当步骤106中更新程序解除该现有组件的句柄之后,即可向主程序发送调用新组件的调用通知。
[0107] 108、主程序根据标识信息将现有组件的调用更新为对新组件的调用。
[0108] 在步骤107中更新程序向主程序发出调用通知之后,主程序会根据该标识信息在需要调用该现有组件的时候去调用该现有组件对应的新组件。
[0109] 本申请实施例中,在软件需要更新时,软件的更新程序执行更新的过程中不需要通过关闭软件的主程序来解除程序引用的句柄,而是通过调用解除函数解除程序引用的句柄,然后通知程序调用新组件,进而实现不需要关闭主程序也可以将现有组件更新为新组件,减少造成用户使用不便的问题。
[0110] 请参阅图2,本申请实施例中软件更新方法的另一个实施例包括:
[0111] 201、主程序在调用现有组件时,接收更新程序发送的在本次调用现有组件结束后暂停下一次调用的暂停通知;
[0112] 软件的主程序在运行时可以调用一些现有组件,在调用某一现有组件的时候,可以接收更新程序发送的针对本次调用的该现有组件的暂停通知,即在主程序结束本次对该现有组件的调用之后暂停下一次的调用。
[0113] 202、主程序根据暂停通知在本次调用现有组件结束后,暂停对该现有组件的调用;
[0114] 在步骤201中主程序接收到更新程序发送的暂停通知之后,在完成当次对该现有组件的调用之后,暂停对该现有组件的调用。
[0115] 203、主程序向更新程序发送已暂停该现有组件的调用的已暂停通知;
[0116] 在步骤202中主程序暂停对该现有组件的调用之后,主程序可以向更新程序发送已暂停该现有组件的调用的已暂停通知。
[0117] 204、主程序接收更新程序根据已暂停通知发送的调用通知,调用通知包括该现有组件需要更新为的新组件的标识信息;
[0118] 在步骤203中主程序向更新程序发送已暂停该现有组件的调用的已暂停通知之后,主程序会接收到根据已暂停通知发送的调用通知,该调用通知包括有标识信息,该标识信息用来指示主程序调用该现有组件时应当调用对应的新组件。
[0119] 205、主程序需要再次调用该现有组件时,主程序调用标识信息对应的新组件。
[0120] 在步骤204中主程序接收到调用通知之后,主程序可以在需要再次调用该现有组件时,主程序会根据调用通知调用的标识信息指示的该现有组件对应的新组件。
[0121] 本申请实施例中,软件的主程序在更新程序更新新组件的过程中,主程序不需要关闭,而是根据更新程序的指示暂时暂停对特定的现有组件的调用,转而根据更新程序的指示调用对应的新组件,进而实现不需要关闭主程序也可以将现有组件更新为新组件,减少造成用户使用不便的问题。
[0122] 请参阅图3,本实施例中软件更新方法的另一个实施包括:
[0123] 301、更新程序获取软件的更新包;
[0124] 软件的更新程序会检测该软件的当前安装版本与软件的服务器中最新版本是否一致,若发现服务器中有比目前安装的版本更新的版本时,软件的更新程序可以通过互联网获取最新版本软件的更新包,当然软件也可以通过其他途径获取最新版本软件的更新包,比如通过提醒用户去存在最新版本软件的设备中复制或剪切该更新包,获取更新包的方式与途径在此不做限定。该更新包至少包括有该软件现有组件需要更新为的新组件。
[0125] 302、更新程序检测需要更新的现有组件是否存在主程序引用的句柄,若不存在主程序引用的句柄,则执行步骤308,若存在主程序引用的句柄,则执行步骤303;
[0126] 由于需要更新的现有组件若存在被软件的主程序引用的句柄是不可以直接调用新组件进行替换的,当步骤301中更新程序获取更新包之后,更新程序可以根据更新包中的新组件检测新组件对应的现有组件是否存在被软件的主程序引用的句柄。在本步骤中,更新程序可以通过调用handle.exe句柄探测程序进行检测。
[0127] 303、更新程序检测需要更新的现有组件是否正在被主程序调用,若未被主程序调用,则执行步骤307,若正被主程序调用,则执行步骤304;
[0128] 在步骤302中更新程序确定需要更新的新组件对应的现有组件正被主程序引用之后,则该更新程序进一步检测该现有组件是否正在被该主程序调用,以便于后续步骤在不影响主程序运行的前提下,对主程序所持有的需要更新的现有组件的句柄进行解除。
[0129] 304、更新程序向主程序发送暂停下一次调用的暂停通知;
[0130] 在步骤303中更新程序确定需要更新的新组件对应的新组件正被主程序调用之后,更新程序可以向主程序发送暂停通知,该暂停通知用来指示主程序完成本次对需要更新的新组件对应的现有组件的调用之后暂停再次调用。在本步骤中,更新程序可以通过回调函数的方式向主程序发送该暂停通知。
[0131] 305、主程序暂停需要更新的现有组件的调用;
[0132] 在主程序接收步骤304中更新程序发送的暂停通知之后,主程序在完成当次对该现有组件的调用之后,暂停对该现有组件的调用。
[0133] 306、主程序向更新程序发送已暂停调用的已暂停通知;
[0134] 在步骤305中主程序暂停对需要更新的新组件对应的现有组件的调用之后,主程序可以向更新程序发送已暂停该现有组件的调用的已暂停通知。在本步骤中,主程序可以通过回调函数的方式向更新程序发送该已暂停通知。
[0135] 307、更新程序解除主程序对需要更新的现有组件引用的句柄;
[0136] 步骤303中更新程序确定需要更新的现有组件未被主程序调用之后,更新程序可以直接解除主程序对需要更新的现有组件引用的句柄;当步骤306中更新程序接收主程序的已暂停通知之后,更新程序也可以直接解除主程序对需要更新的现有组件引用的句柄,此时解除不影响主程序的运行,本步骤中更新程序可以调用操作系统的解除函数,即更新程序调用操作系统的应用程序接口(application programming interface,API)来解除主程序对需要更新的现有组件引用的句柄。
[0137] 308、更新程序向主程序发送指示主程序调用新组件的调用通知;
[0138] 步骤307中更新程序解除主程序对需要更新的现有组件引用的句柄之后,或在步骤302中更新程序确定需要更新的新组件对应的现有组件未被主程序引用之后,可以向主程序发送指示主程序调用新组件的调用通知,该调用通知包括有标识信息,该标识信息用来指示主程序调用该现有组件时应当调用对应的新组件,在本步骤中,更新程序可以通过回调函数的方式向主程序发送该调用通知。
[0139] 309、主程序根据调用通知调用新组件。
[0140] 在步骤308中主程序接收到指示主程序调用新组件的调用通知之后,主程序在需要再次调用该现有组件时,主程序会根据调用通知调用的标识信息指示的该现有组件对应的新组件,在本步骤中主程序可以通过NET Framework中C#语言的Process类调用所述标识信息对应的新组件。
[0141] 本申请实施例中,在软件需要更新时,软件的更新程序执行更新的过程中不需要通过关闭软件的主程序来解除主程序引用的句柄,而是通过更新程序调用解除函数来解除主程序引用的句柄,然后通知主程序调用新组件,主程序根据更新程序的通知指示调用对应的新组件,进而实现不需要关闭主程序也可以将现有组件更新为新组件,解决造成用户使用不便的问题。
[0142] 上面对本申请的更新程序更新软件的过程进行了描述,在实际应用过程中,以下本申请还提供可以使用软件的主程序对更新程序进行更新的方法实施例,请参阅图4,包括:
[0143] 401、主程序获取更新程序的更新包,更新包内包括更新程序的现有组件需要更新为的新组件;
[0144] 当软件的主程序检测到该软件的更新程序存在比目前安装的版本有更新的版本时,该主程序会获取该软件更新程序的更新包,该更新包至少包括有该软件现有组件需要更新为的新组件。
[0145] 402、主程序检测新组件对应的现有组件是否存在被软件的更新程序引用的句柄,若该现有组件存在被软件的更新程序引用的句柄,则执行步骤403,若该现有组件不存在被软件的更新程序引用的句柄,则执行步骤407;
[0146] 当步骤401中主程序获取到更新版本的新组件之后,需要检测一下新组件要更新的对应现有组件是否正被软件的更新程序引用,即检测该现有组件是否存在被更新程序引用的句柄,其中,需要说明的是现有组件在被更新程序引用过程中可以被更新程序多次调用。
[0147] 403、主程序检测现有组件是否正被更新程序调用,若该现有组件正被更新程序调用,则执行步骤404,若该现有组件未被更新程序调用,则执行步骤405;
[0148] 当步骤402中主程序确定该新组件对应的现有组件正被更新程序引用,则该主程序进一步检测该现有组件是否正在被该更新程序调用。
[0149] 404、主程序向更新程序发送本次调用现有组件结束后暂停下一次调用的暂停通知;
[0150] 当步骤403中主程序确定该现有组件正在被该软件的更新程序调用,则向该更新程序发送本次调用现有组件结束后暂停下一次调用的暂停通知。
[0151] 405、主程序接收更新程序根据暂停通知发送的已暂停现有组件调用的已暂停通知;
[0152] 当步骤404中主程序向更新程序发送暂停通知之后,主程序会接收更新程序在结束当次对该现有组件调用之后发给主程序发送的已暂停通知。
[0153] 406、主程序解除更新程序对现有组件引用的句柄;
[0154] 当步骤403中主程序确定现有组件存在被软件的更新程序引用的句柄,但该现有组件未被该更新程序调用时,主程序可以解除更新程序对该现有组件引用的句柄。因为当组件被程序持有句柄时,是没法进行更新替换的。当步骤405中主程序接收到更新程序发送的已暂停调用相应现有组件的已暂停通知之后,主程序就可以解除更新程序对该现有组件引用的句柄。
[0155] 407、主程序向更新程序发送调用通知,调用通知包括现有组件需要更新为的新组件的标识信息;
[0156] 当步骤402中主程序检测新组件对应的现有组件不存在被软件的更新程序引用的句柄时,主程序可以直接向更新程序发送调用通知,该通知包括现有组件需要更新为的新组件的标识信息;当步骤406中主程序解除该现有组件的句柄之后,即可向更新程序发送调用新组件的调用通知。
[0157] 408、更新程序根据标识信息将现有组件的调用更新为对新组件的调用。
[0158] 在步骤107中主程序向更新程序发出调用通知之后,更新程序会根据该标识信息在需要调用该现有组件的时候去调用该现有组件对应的新组件。
[0159] 本申请实施例中,在软件需要更新时,软件的主程序执行更新的过程中不需要通过关闭来解除程序引用的句柄,而是通过调用解除函数来解除程序引用的句柄,然后通知调用新组件,进而实现不需要关闭主程序也可以将现有组件更新为新组件,解决造成用户使用不便的问题。
[0160] 请参阅图5,本申请实施例中软件更新方法的另一个实施例,包括:
[0161] 501、更新程序在调用现有组件时,接收主程序发送的在本次调用现有组件结束后暂停下一次调用的暂停通知;
[0162] 软件的更新程序在运行时可以调用一些现有组件,在调用某一现有组件的时候,可以接收主程序发送的针对本次调用的该现有组件的暂停通知,即在更新程序结束本次对该现有组件的调用之后暂停下一次的调用。
[0163] 502、更新程序根据暂停通知在本次调用现有组件结束后,暂停对该现有组件的调用;
[0164] 在步骤501中更新程序接收到主程序发送的暂停通知之后,在完成当次对该现有组件的调用之后,暂停对该现有组件的调用。
[0165] 503、更新程序向主程序发送已暂停该现有组件的调用的已暂停通知;
[0166] 在步骤502中更新程序暂停对该现有组件的调用之后,更新程序可以向主程序发送已暂停该现有组件的调用的已暂停通知。
[0167] 504、更新程序接收主程序根据已暂停通知发送的调用通知,调用通知包括该现有组件需要更新为的新组件的标识信息;
[0168] 在步骤503中更新程序向主程序发送已暂停该现有组件的调用的已暂停通知之后,更新程序会接收到根据已暂停通知发送的调用通知,该调用通知包括有标识信息,该标识信息用来指示更新程序调用该现有组件时应当调用对应的新组件。
[0169] 505、更新程序需要再次调用该现有组件时,更新程序调用标识信息对应的新组件。
[0170] 在步骤504中更新程序接收到调用通知之后,更新程序在需要再次调用该现有组件时,更新程序会根据调用通知调用的标识信息指示的该现有组件对应的新组件。
[0171] 本申请实施例中,软件的更新程序在主程序更新新组件的过程中,主程序不关闭,而是根据主程序的指示暂时暂停对特定的现有组件的调用,转而根据更新程序的指示调用对应的新组件,进而实现不需要关闭主程序也可以将现有组件更新为新组件,减少造成用户使用不便的问题。
[0172] 请参阅图6,本实施例中软件更新方法的另一个实施包括:
[0173] 601、主程序获取更新程序的更新包;
[0174] 软件的主程序会检测该软件的更新程序的当前安装版本与软件的服务器中最新版本是否一致,若发现服务器中有比目前安装的版本更新的版本时,软件的主程序可以通过互联网获取最新版本更新程序的更新包,当然软件主程序也可以通过其他途径获取最新版本更新程序的更新包,比如通过提醒用户去存在最新版本更新程序的设备中复制或剪切该更新包,获取更新包的方式与途径在此不做限定。该更新包至少包括有该软件现有组件需要更新为的新组件。
[0175] 602、主程序检测需要更新的现有组件是否存在更新程序引用的句柄,若不存在更新程序引用的句柄,则执行步骤608,若存在更新程序引用的句柄,则执行步骤603;
[0176] 由于需要更新的现有组件若存在被软件的更新程序引用的句柄是不可以直接调用新组件进行替换的,当步骤601中主程序获取更新包之后,主程序可以根据更新包中的新组件检测新组件对应的现有组件是否存在被软件的更新程序引用的句柄。在本步骤中,主程序可以通过调用handle.exe句柄探测程序进行检测。
[0177] 603、主程序检测需要更新的现有组件是否正在被更新程序调用,若未被更新程序调用,则执行步骤607,若正被更新程序调用,则执行步骤604;
[0178] 在步骤602中主程序确定需要更新的新组件对应的现有组件正被更新程序引用之后,则该主程序进一步检测该现有组件是否正在被该更新程序调用,以便于后续步骤在不影响更新程序运行的前提下,对更新程序所持有的需要更新的现有组件的句柄进行解除。
[0179] 604、主程序向更新程序发送暂停下一次调用的暂停通知;
[0180] 在步骤603中主程序确定需要更新的新组件对应的新组件正被更新程序调用之后,主程序可以向更新程序发送暂停通知,该暂停通知用来指示更新程序完成本次对需要更新的新组件对应的现有组件的调用之后暂停再次调用。在本步骤中,主程序可以通过回调函数的方式向主程序发送该暂停通知。
[0181] 605、更新程序暂停需要更新的现有组件的调用;
[0182] 在更新程序接收步骤604中主程序发送的暂停通知之后,更新程序可以在完成当次对该现有组件的调用之后,暂停对该现有组件的调用。
[0183] 606、更新程序向主程序发送已暂停调用的已暂停通知;
[0184] 在步骤605中更新程序暂停对需要更新的新组件对应的现有组件的调用之后,更新程序可以向主程序发送已暂停该现有组件的调用的已暂停通知。在本步骤中,更新程序可以通过回调函数的方式向主程序发送该已暂停通知。
[0185] 607、主程序解除更新程序对需要更新的现有组件引用的句柄;
[0186] 步骤603中主程序确定需要更新的现有组件未被更新程序调用之后,主程序可以直接解除更新程序对需要更新的现有组件引用的句柄;当步骤606中主程序接收更新程序的已暂停通知之后,主程序也可以直接解除更新程序对需要更新的现有组件引用的句柄,此时解除不影响更新程序的运行,本步骤中主程序可以调用操作系统的解除函数,即主程序调用操作系统的应用程序接口(application programming interface,API)来解除更新程序对需要更新的现有组件引用的句柄。
[0187] 608、主程序向更新程序发送指示更新程序调用新组件的调用通知;
[0188] 步骤607中主程序解除更新程序对需要更新的现有组件引用的句柄之后,或在步骤602中主程序确定需要更新的新组件对应的现有组件未被更新程序引用之后,可以向更新程序发送指示更新程序调用新组件的调用通知,该调用通知包括有标识信息,该标识信息用来指示更新程序调用该现有组件时应当调用对应的新组件,在本步骤中,主程序可以通过回调函数的方式向更新程序发送该调用通知。
[0189] 609、更新程序根据调用通知调用新组件。
[0190] 在步骤608中更新程序接收到指示更新程序调用新组件的调用通知之后,更新程序在需要再次调用该现有组件时,更新程序会根据调用通知调用的标识信息指示的该现有组件对应的新组件,在本步骤中更新程序可以通过NET Framework中C#语言的Process类调用所述标识信息对应的新组件。
[0191] 本申请实施例中,在软件需要更新时,软件的主程序执行更新的过程中不需要通过闭软件的主程序来解除程序引用的句柄,而是通过调用解除函数来解除程序引用的句柄,然后通知程序调用新组件,程序根据调用通知指示调用对应的新组件,进而实现不需要关闭主程序也可以将现有组件更新为新组件,解决造成用户使用不便的问题。
[0192] 上面对本申请实施例的软件更新方法进行了描述,下面对本申请实施例的软件更新系统进行描述,请参考图7,本申请实施例中软件更新系统的一个实施例包括:
[0193] 获取单元701,用于获取软件或软件的更新程序的更新包,所述更新包内包括所述软件的现有组件需要更新为的新组件;
[0194] 第一检测单元702,用于检测所述现有组件是否存在被所述软件的主程序引用的句柄;其中,所述现有组件在被所述主程序引用过程中可以被多次调用;
[0195] 第二检测单元703,用于若所述现有组件存在被所述软件的主程序引用的句柄,则检测所述现有组件是否正在被所述主程序调用;
[0196] 第一解除单元704,用于若所述现有组件未被所述主程序调用,则解除所述主程序对所述现有组件引用的句柄;
[0197] 第一发送单元705,用于若所述现有组件正被所述主程序调用,向所述主程序发送在本次调用所述现有组件结束后暂停下一次调用的暂停通知;
[0198] 接收单元706,用于接收所述主程序根据所述暂停通知发送的已暂停现有组件调用的已暂停通知;
[0199] 第二解除单元707,用于在接收单元接收所述主程序根据所述暂停通知发送的已暂停本次现有组件调用的已暂停通知之后,解除所述主程序对所述现有组件引用的句柄;
[0200] 第二发送单元708,用于向所述主程序发送调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;
[0201] 调用单元709,用于根据所述标识信息对所述现有组件的调用更新为对所述新组件的调用。
[0202] 本申请实施例中,软件更新系统的所执行的操作与前述图1或图3中执行的更新程序操作类似,可以理解的是,在本实施例中更新程序的执行操作可以与主程序的执行操作互换,与前述图4或图6中主程序的操作类似,在此不再赘述。
[0203] 本申请实施例中,在软件需要更新时,软件更新系统执行更新的过程中不需要通过关闭软件的主程序来解除程序引用的句柄,而是通过调用解除函数解除程序引用的句柄,然后通知程序调用新组件,进而实现不需要关闭主程序也可以将现有组件更新为新组件,减少造成用户使用不便的问题。
[0204] 请参考图8,本申请实施例中软件更新系统的另一个实施例包括:
[0205] 接收单元801,用于在调用现有组件时,接收更新程序发送的在本次调用所述现有组件结束后暂停下一次调用的暂停通知;
[0206] 暂停单元802,用于根据所述暂停通知在本次调用所述现有组件结束后,暂停对所述现有组件的调用;
[0207] 发送单元803,用于向所述更新程序发送已暂停所述现有组件的调用的已暂停通知;
[0208] 接收单元801,还用于接收更新程序发送的调用通知,所述调用通知包括所述现有组件需要更新为的新组件的标识信息;
[0209] 调用单元804,用于在需要再次调用所述现有组件时,所述主程序调用所述标识信息对应的新组件。
[0210] 本申请实施例中,软件更新系统的所执行的操作与前述图2或图3中主程序执行的操作类似,可以理解的是,在本实施例中主程序的执行操作可以与更新程序的执行操作互换,与前述图5或图6中更新程序执行的操作类似,在此不再赘述。
[0211] 本申请实施例中,在软件需要更新时,软件执行更新的过程中不需要通过关闭软件的主程序来解除主程序引用的句柄,而是通过调用解除函数来解除程序引用的句柄,然后通知程序调用新组件,程序根据调用通知调用对应的新组件,进而实现不需要关闭主程序也可以将现有组件更新为新组件,解决造成用户使用不便的问题。
[0212] 下面对软件更新系统的计算机装置的一实施例进行描述,请参阅图9,具体包括:
[0213] 计算机装置900可以包括一个或一个以上处理器(central processing units,CPU)901和存储器902,该存储器902中存储有一个或一个以上的应用程序或数据。其中,存储器902可以是易失性存储或持久存储。存储在存储器902的程序可以包括一个或一个以上模块,每个模块可以包括对软件更新系统中的一系列指令操作。该计算机装置900还可以包括一个或一个以上操作系统,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD等。该计算机装置900的处理器901可以执行前述图1至图6所示实施例中所执行的操作,具体此处不再赘述。
[0214] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0215] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0216] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0217] 集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-only memory)、随机存取存储器(RAM,random access memory)等各种可以存储程序代码的介质。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用