dhwc 发表于 2010-12-13 12:16:27

【已解决】关于nod32的自动安装问题

本帖最后由 dhwc 于 2010-12-14 22:07 编辑

nod2.7比较经典,想做一个自动安装的脚本,脚本如下:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MsgBox(4096, "注意!", "程序安装过程中,请不要有任何键鼠操作!", 3)
blockinput (1)
Run("setup.exe")
WinWaitActive("设定向导","欢迎使用NOD32设定程序")
ControlClick("设定向导","欢迎使用NOD32设定程序","")
WinWaitActive("最终用户软件使用协议","我同意")
ControlClick("最终用户软件使用协议","我同意","")
ControlClick("最终用户软件使用协议","我同意","")
WinWaitActive("自动更新设定","以后再设定更新参数")
ControlClick("自动更新设定","以后再设定更新参数","")
ControlClick("自动更新设定","以后再设定更新参数","")
WinWaitActive("ThreatSense.Net","预警系统")
ControlClick("ThreatSense.Net","预警系统","")
WinWaitActive("不受欢迎软件侦测","启动不受欢迎软件侦测")
ControlClick("不受欢迎软件侦测","启动不受欢迎软件侦测","")
ControlClick("不受欢迎软件侦测","启动不受欢迎软件侦测","")
WinWaitActive("文件实时监控AMON","我希望自动加载文件实时监控")
ControlClick("文件实时监控AMON","我希望自动加载文件实时监控","")
if WinWaitActive("网络监视","侦测来自互联网的入侵") then
ControlClick("网络监视","侦测来自互联网的入侵","")
ControlClick("网络监视","侦测来自互联网的入侵","")
EndIf
WinWaitActive("安装参数全部设定完毕","安装参数全部设定完毕")
ControlClick("安装参数全部设定完毕","安装参数全部设定完毕","")
WinWaitActive("安装完成","需要重新启动")
ControlClick("安装完成","需要重新启动","")
ControlClick("安装完成","需要重新启动","")
FileDelete (@StartMenuCommonDir&"\程序\Eset\自述文件.lnk")
FileDelete (@StartMenuCommonDir&"\程序\Eset\卸载.lnk")
FileDelete (@StartMenuCommonDir&"\程序\Eset\帮助.lnk")
exit
++++++++++++++++++++++++++++++++++++++++++++++++++++++++

因为xp和2003环境下nod安装过程有区别(200环境多一个设置网络监视的环节),所以我用了if...then...语句,但是,很奇怪,这样做了之后2003正常了,xp反而不正常了,运行到这一步就停止不前了,请问达人,这代码哪里错了?

恳请指教,谢谢!


新人发帖,如有违规,请斑竹移贴并谅解

dhwc 发表于 2010-12-13 19:49:17

顶一下等达人

yhxhappy 发表于 2010-12-13 20:46:51

WinWaitActive 的意思是:暂停脚本的执行,直到请求的窗口处于激活状态为止. 在XP系统下,根据不存在你请求的窗口,脚本将永远暂停

建议你将红色部分替换成以下代码:If @OSVersion = "WIN_2003" Then                ;判断如果系统版本是2003系统则执行以下操作
        WinWait("网络监视","侦测来自互联网的入侵")      ;等待窗口出现
        ControlClick("网络监视","侦测来自互联网的入侵","")
        ControlClick("网络监视","侦测来自互联网的入侵","")
EndIf

dhwc 发表于 2010-12-14 06:43:31

我想过用系统版本来判断,但是win系统版本太多了,你这样在2000、win7下面还是会有问题的。

既然winwaitactive会因为窗口是否激活出问题,那么换成winwait呢?也还是不行啊?

谢谢你的解答

yhxhappy 发表于 2010-12-14 08:27:31

回复 4# dhwc


    你不是说2003系统下才有那个对话框吗?

    WinWait ( "标题" [, "文本" [, 超时]] ),可以填上超时时间,如果时间过了窗口还没出现则继续,单位:秒

sybzpq 发表于 2010-12-14 08:59:56

进来学习一下,谢谢!

都市浪子666 发表于 2010-12-14 09:10:55

本帖最后由 都市浪子666 于 2010-12-14 14:48 编辑


MsgBox(4096, "注意!", "程序安装过程中,请不要有任何键鼠操作!", 3)
blockinput (1)
Run("setup.exe")
WinWaitActive("设定向导","欢迎使用NOD32设定程序")
ControlClick("设定向导","欢迎使用NOD32设定程序","")
WinWaitActive("最终用户软件使用协议","我同意")
ControlClick("最终用户软件使用协议","我同意","")
ControlClick("最终用户软件使用协议","我同意","")
WinWaitActive("自动更新设定","以后再设定更新参数")
ControlClick("自动更新设定","以后再设定更新参数","")
ControlClick("自动更新设定","以后再设定更新参数","")
WinWaitActive("ThreatSense.Net","预警系统")
ControlClick("ThreatSense.Net","预警系统","")
WinWaitActive("不受欢迎软件侦测","启动不受欢迎软件侦测")
ControlClick("不受欢迎软件侦测","启动不受欢迎软件侦测","")
ControlClick("不受欢迎软件侦测","启动不受欢迎软件侦测","")
WinWaitActive("文件实时监控AMON","我希望自动加载文件实时监控")
ControlClick("文件实时监控AMON","我希望自动加载文件实时监控","")

;一直循环,直到存在("安装参数全部设定完毕","安装参数全部设定完毕") 这个窗口 才跳出循环
;在循环期间如有 ("网络监视","侦测来自互联网的入侵")这个窗口则执行相应的操作
Do
    Sleep(10)
   if WinExists("网络监视","侦测来自互联网的入侵") then
   ControlClick("网络监视","侦测来自互联网的入侵","")
   ControlClick("网络监视","侦测来自互联网的入侵","")
EndIf
Until WinExists("安装参数全部设定完毕","安装参数全部设定完毕")   =True


WinWaitActive("安装参数全部设定完毕","安装参数全部设定完毕")
ControlClick("安装参数全部设定完毕","安装参数全部设定完毕","")
WinWaitActive("安装完成","需要重新启动")
ControlClick("安装完成","需要重新启动","")
ControlClick("安装完成","需要重新启动","")
FileDelete (@StartMenuCommonDir&"\程序\Eset\自述文件.lnk")
FileDelete (@StartMenuCommonDir&"\程序\Eset\卸载.lnk")
FileDelete (@StartMenuCommonDir&"\程序\Eset\帮助.lnk")
exit

dhwc 发表于 2010-12-14 12:28:06

回复dhwc


    你不是说2003系统下才有那个对话框吗?

...
yhxhappy 发表于 2010-12-14 08:27 http://www.autoitx.com/images/common/back.gif
抱歉,是我说的不够完整,我就是不想因操作系统环境的不同造成安装失败,谢谢解答

dhwc 发表于 2010-12-14 12:30:21


都市浪子666 发表于 2010-12-14 09:10 http://www.autoitx.com/images/common/back.gif

谢谢你的解答,回去试验后确认

35598253 发表于 2010-12-14 12:45:46

一会研究一下~~~~

35598253 发表于 2010-12-14 13:07:25

研究的怎样~~~~~~

dhwc 发表于 2010-12-14 18:23:02

xp_sp3、2003se、2003ee测试通过!

谢谢都市浪子的解答
页: [1]
查看完整版本: 【已解决】关于nod32的自动安装问题