一种实现补丁自动安装的方法及系统转让专利

申请号 : CN201110041534.5

文献号 : CN102063322B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 浦欣李涛

申请人 : 北京奇虎科技有限公司

摘要 :

本申请实施例公开了一种实现补丁自动安装的方法和系统;其中,所述方法包括:调用系统函数创建新的隐藏桌面;在所述新隐藏桌面上运行补丁安装程序;通过模拟点击完成补丁安装步骤。采用本发明实施例提供的方法或系统,保证了补丁成功安装的同时,有效的避免了该补丁在安装过程中对当前桌面的刷新和抢焦点,从而保证了用户当前的工作能够正常进行。

权利要求 :

1.一种实现补丁自动安装的方法,其特征在于,包括:调用系统函数创建新的隐藏桌面;

在所述新隐藏桌面上运行补丁安装程序;采用如下方式实现在所述新隐藏桌面上运行补丁安装程序:提取所述新创建隐藏桌面的名称;在补丁运行前将所述新隐藏桌面名称通过参数传入并控制补丁在新隐藏桌面运行;

通过模拟点击完成补丁安装步骤。

2.根据权利要求1所述的方法,其特征在于,采用如下方式实现模拟点击:录制安装引导脚本;

发送录制好的安装引导脚本;

利用所述安装引导脚本中已定义的窗口消息,模拟鼠标点击相应窗口位置所产生的系统消息,完成模拟点击。

3.根据权利要求2所述的方法,其特征在于,采用如下方式实现所述安装引导脚本的录制:通过记录补丁安装过程中的鼠标点击信息、键盘输入信息、窗口的信息以及实际安装中的安装步骤完成安装引导脚本的录制。

4.根据权利要求3所述的方法,其特征在于,所述窗口信息至少包括以下参数中的一种:窗口类名称、窗口标题、大小、位置、父窗口类名、父窗口标题。

5.一种实现补丁自动安装的系统,其特征在于,包括:调用单元,用于调用系统函数创建新的隐藏桌面;

运行单元,用于在所述新隐藏桌面上运行补丁安装程序;所述运行单元包括:提取模块,用于提取所述新创建桌面的名称;传入模块,用于在补丁运行前将所述新隐藏桌面名称通过参数传入并控制补丁在新隐藏桌面运行;

安装单元,用于通过模拟点击完成补丁安装步骤。

6.根据权利要求5所述的系统,其特征在于,所述安装单元包括:设置模块,用于录制安装引导脚本;

发送模块,用于发送录制好的安装引导脚本;

点击模块,用于利用所述安装引导脚本中已定义的窗口消息,模拟鼠标点击相应窗口位置所产生的系统消息,完成模拟点击。

7.根据权利要求6所述的系统,其特征在于,所述设置模块包括:记录设备,用于记录补丁安装过程中的鼠标点击信息、键盘输入信息、窗口的信息以及实际安装中的安装步骤;

录制设备,用于根据所述记录设备记录的信息录制安装引导脚本。

8.根据权利要求7所述的系统,其特征在于,所述记录设备记录的窗口信息至少包括以下参数中的一种:窗口类名称、窗口标题、大小、位置、父窗口类名、父窗口标题。

说明书 :

一种实现补丁自动安装的方法及系统

技术领域

[0001] 本申请涉及计算机技术领域,特别是涉及一种实现补丁自动安装的方法及系统。

背景技术

[0002] 在现在计算机的各种应用过程中,常常会发现各种操作系统、应用软件等存在问题或漏洞,也可称为BUG,而这些漏洞会使用户在使用操作系统或软件时出现干扰,或者导致软件的安全性能降低,因此可以通过写出一些可插入源程序的程序语言,对这些漏洞进行修复,上述用于修复漏洞的程序语言就称为补丁。
[0003] 针对此,目前一些操作系统或应用软件的专门网站会定期发布一段时间内的补丁,以针对这些操作系统或应用软件进行漏洞修复;然而,发明人在对现有技术的研究过程中发现,现有技术中专门网站发布的补丁往往并不是静默安装,而是会通过显示窗口,并需要用户点击下一步,进而一步一步安装;但是,这种方式在需要安装多个补丁时就会变得很繁琐,同时也很容易由于用户的误操作(如误点击取消按钮)而造成安装失败;更为重要的是,这些非静默安装的补丁在安装过程中会刷新桌面、抢焦点,从而极易导致用户在安装多个补丁时无法进行正常的工作。

发明内容

[0004] 本申请实施例提供了一种实现补丁自动安装的方法及系统,以解决现有补丁在安装时刷新隐藏桌面、抢焦点所导致的问题。
[0005] 为了解决上述技术问题,本申请实施例公开了如下技术方案:
[0006] 一种实现补丁自动安装的方法,包括:
[0007] 调用系统函数创建新的隐藏桌面;
[0008] 在所述新隐藏桌面上运行补丁安装程序;
[0009] 通过模拟点击完成补丁安装步骤。
[0010] 优选的,采用如下方式实现在所述新隐藏桌面上运行补丁安装程序:
[0011] 提取所述新创建桌面的名称;
[0012] 在补丁运行前将所述新隐藏桌面名称通过参数传入完成补丁在新隐藏桌面运行。
[0013] 优选的,采用如下方式实现模拟点击:
[0014] 预设对应的已录制的安装引导脚本;
[0015] 发送录制好的安装引导脚本;
[0016] 利用所述安装引导脚本中已定义的窗口消息,模拟鼠标点击相应窗口位置所产生的系统消息,完成模拟点击。
[0017] 优选的,采用如下方式实现所述安装引导脚本的录制:
[0018] 通过记录鼠标点击、相应的工具获取点击窗口的信息以及实际安装中的安装步骤完成安装引导脚本的录制。
[0019] 优选的,所述鼠标点击获取的窗口信息至少包括以下参数中的一种:
[0020] 窗口类名称、窗口标题、大小、位置、父窗口类名、父窗口标题。
[0021] 一种实现补丁自动安装的,包括:
[0022] 调用单元,用于调用系统函数创建新的隐藏桌面;
[0023] 运行单元,用于在所述新隐藏桌面上运行补丁安装程序;
[0024] 安装单元,用于通过模拟点击完成补丁安装步骤。
[0025] 优选的,所述运行单元包括:
[0026] 提取模块,用于提取所述新创建桌面的名称;
[0027] 传入模块,用于在补丁运行前将所述新隐藏桌面名称通过参数传入完成补丁在新隐藏桌面运行。
[0028] 优选的,所述安装单元包括:
[0029] 设置模块,用于预设对应的已录制的安装引导脚本;
[0030] 发送模块,用于发送录制好的安装引导脚本;
[0031] 点击模块,用于利用所述安装引导脚本中已定义的窗口消息,模拟鼠标点击相应窗口位置所产生的系统消息,完成模拟点击。
[0032] 优选的,所述设置模块包括:
[0033] 记录设备,用于记录鼠标点击、相应的工具获取点击窗口的信息以及实际安装中的安装步骤;
[0034] 录制设备,用于根据所述记录设备记录的信息录制安装引导脚本。
[0035] 优选的,所述记录设备记录的窗口信息至少包括以下参数中的一种:
[0036] 窗口类名称、窗口标题、大小、位置、父窗口类名、父窗口标题。
[0037] 由上述实施例可以看出,本申请实施例中,通过开启另一个新的隐藏桌面,并在新开启的桌面中运行补丁安装程序,通过模拟点击来实现补丁的自动安装,从而在保证了补丁成功安装的同时,有效的避免了该补丁在安装过程中对当前桌面的刷新和抢焦点,从而保证了用户当前的工作能够正常进行。

附图说明

[0038] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0039] 图1为本申请实现补丁自动安装的方法的第一实施例流程示意图;
[0040] 图2为本申请第一实施例中完成模拟点击的流程示意图;
[0041] 图3为本申请实现补丁自动安装的系统的实施例框图。

具体实施方式

[0042] 本发明的基本思想在于当有补丁需要安装时,开启另一个新的隐藏桌面,并在新开启的桌面中运行补丁安装程序,通过模拟点击来实现补丁的自动安装,从而在保证了补丁成功安装的同时,有效的避免了该补丁在安装过程中对当前桌面的刷新和抢焦点,从而保证了用户当前的工作能够正常进行。
[0043] 本发明如下实施例提供了一种实现补丁自动安装的方法及系统。
[0044] 为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
[0045] 参见图1,为本申请实现补丁自动安装方法的第一实施例流程图:
[0046] 步骤101:调用系统函数创建新的隐藏桌面;
[0047] 具体的,在实际操作中所述创建的新隐藏桌面还可称为虚拟桌面:虚拟桌面上的程序运行、安装并不在当前桌面显示,当然也可以采用部分后台执行、当前显示浮窗或气泡等方式,正是由于当前桌名并不显示所述新隐藏桌面及其上运行的程序,因此可以彻底的避免用户被打扰,用户在当前桌面上的任何操作都不会被打断,从而防止了抢焦点出现的对当前工作的影响问题;所述虚拟桌面,可以主要利用CreateDesktop、OpenDesktop和SwitchDesktop这几个API函数来实现,具体本文不再赘述。
[0048] 其中,在Linux系统中,虚拟桌面是一种将用户的工作区扩展到计算机屏幕边界以外的方法,这个桌面可以上下左右滚动,就好象一个更大的桌面放置在玻璃屏幕后面,并且可以四处移动以显示图标、窗口以及其它一些存在于幕后或视野以外的对象;而目前,其他操作系统如Windows XP、2003也可以像Linux一样实现虚拟桌面,而且不需要安装任何程序,只要下载一个msvdm.dll文件即可;其中,Windows一共可以提供四个桌面,每个桌面可以应用不同的背景和相应的快捷键,但是这四个桌面上的快捷方式图标永远是相同的,不能分别摆放不同的程序,因此,在虚拟桌面上安装软件,不必担心快捷方式的生成问题。
[0049] 以Windows系统为例:当有补丁程序需要运行安装时,首先调用系统内置的函数CreateDesktop即可创建一个桌面,具体调用过程如下所示:
[0050] char*DesktopName=″DESK″;
[0051] desktop=CreateDesktop(DesktopName,NULL,NULL,0,GENERIC_ALL,NULL);
[0052] 后续如果需要在此桌面进行操作,只需在创建进程时在参数中配置此桌面的名称即可。
[0053] 步骤102:在所述新隐藏桌面上运行补丁安装程序;
[0054] 其中,当本实施例中调用系统内置的函数CreateDesktop创建一个桌面后,当需要安装补丁时,首先提取所述新创建桌面的名称,然后在补丁运行前将所述桌面的名称也通过参数传入即可将这个补丁在新的隐藏桌面中运行;具体的提取方式可采用现有方式实现,本文在此不再赘述;
[0055] 具体的,所述创建进程函数CreateProcess的第九个参数的结构体定义了如何将进程创建指定的桌面中,即通过创建桌面时使用的名称即可实现进程在相应桌面中运行:结构体第三个成员lpDesktop指定桌面名称用于将要创建的进程;
[0056] 例如:若要将一个补丁KB在另一个桌面“360LeakDesktop”上运行,具体如下实现:
[0057] STARTUPINFO si={sizeof(si)};
[0058] si.lpDesktop=″360LeakDesktop″;
[0059] PROCESS_INFORMATION pi={0};
[0060] CreateProcess(NULL,“C:\\Program Files \\360 \\360safe\\hotfix \\office2007-kb2443839-fullfile-x86-glb.exe”,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
[0061] 步骤103:通过模拟点击完成补丁安装步骤;
[0062] 在本实施例中,可以通过实际模拟安装来考察整个安装过程是否需要用户点击选择,根据模拟安装过程中被点击所包含的信息,预先设置对应的录制好的安装引导脚本;在脚本的执行流程中,通过静默安装参数或虚拟点击等实现安装选择,例如,对于“KB123456789”这一补丁,可以通过如下静默参数实现:KB123456789/S/quickasso/skipcheck;
[0063] 其中,/S代表静默安装;在新建的桌面安装,若没有其他参数,则依系统默认的语言按照默认的设置安装默认的组件;/quickasso代表安装完成后按推荐/当前格式直接关联文件而不跳出选择对话框;/skipcheck代表安装时跳过对运行环境的检查;
[0064] 具体的,如图2所示,可通过如下步骤实现模拟点击:
[0065] S301:录制安装引导脚本;录制安装引导脚本的实现是通过实际安装过程中,通过记录补丁安装过程中的鼠标点击信息、键盘输入信息、窗口的信息以及实际安装中的安装步骤,录制成安装引导脚本;其中,所述窗口信息包括但不局限于窗口类名称、窗口标题、大小、位置、父窗口类名、父窗口标题等;
[0066] S302:发送录制好的安装引导脚本;
[0067] S303:利用所述安装引导脚本中已定义的窗口消息,模拟鼠标点击相应窗口位置所产生的系统消息,达到鼠标点击的效果;
[0068] 模拟点击一般通过发送消息来实现,主要是SendMessage和PostMessage来实现,如下所示:
[0069] SendMessage(hWnd,WM_COMMAND,MAKELPARAM(BN_CLICK,ID),hButtonWnd)。
[0070] 与本申请实现补丁自动安装的方法的实施例相对应,本申请还提供了实现该方法的系统的实施例。
[0071] 参见图3,为本申请补丁自动安装的系统的实施例框图:
[0072] 该系统300包括:
[0073] 调用单元310,用于调用系统函数创建新的隐藏桌面;
[0074] 运行单元320,用于在所述新隐藏桌面上运行补丁安装程序;
[0075] 安装单元330,用于通过模拟点击完成补丁安装步骤。
[0076] 其中,所述运行单元320还可包括(图中未示出):提取模块,用于提取所述新创建桌面的名称;传入模块,用于在补丁运行前将所述新隐藏桌面名称通过参数传入完成补丁在新隐藏桌面运行。
[0077] 值得注意的是,所述安装单元330还可包括(图中未示出):设置模块,用于预设对应的已录制的安装引导脚本;发送模块,用于发送录制好的安装引导脚本;点击模块,用于利用所述安装引导脚本中已定义的窗口消息,模拟鼠标点击相应窗口位置所产生的系统消息,完成模拟点击。
[0078] 其中,所述设置模块包括:记录设备,用于记录鼠标点击、相应的工具获取点击窗口的信息以及实际安装中的安装步骤;录制设备,用于根据所述记录设备记录的信息录制安装引导脚本。
[0079] 尤其需要注意的是,所述记录设备记录的窗口信息至少包括以下参数中的任意一种:窗口类名称、窗口标题、大小、位置、父窗口类名、父窗口标题等。
[0080] 可以看出,采用本发明上述实施例的方法或系统,利用系统自带的函数开启另一个新的隐藏桌面,并在新开启的桌面中运行补丁安装程序,通过模拟点击来实现补丁的自动安装,从而在保证了补丁成功安装的同时,有效的避免了该补丁在安装过程中对当前桌面的刷新和抢焦点,从而保证了用户当前的工作能够正常进行。
[0081] 本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0082] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0083] 以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。