看了很多自动安装的方法,觉得很实用。企业里运行就需要把自动运行脚本和程序一起打包成一个exe文件,然后再提权安装。研究了一段时间,以"好压"为例分享一下我的代码:$Exe = "haozip_v2.2.exe"
FileInstall("haozip_v2.2.exe" , @SystemDir & "",1)
Local $username="administrator"
Local $password="9a;asi9dw"
RunAs($username,@Computername,$password,2,$Exe, @TempDir & "")
BlockInput(1) ;锁定键盘鼠标
;--------------------------------------------------------------;一键安装脚本开始
Opt("TrayIconDebug", 1) ;0=无信息, 1=调试信息
Opt("WinTextMatchMode", 2) ;1=完全匹配, 2=快速匹配
Opt("WinTitleMatchMode", 4) ;1=开头, 2=子串, 3=完全, 4=高级
Opt("WinSearchChildren", 1) ;0=不搜索, 1=搜索子窗口
Opt("WinDetectHiddenText", 1) ;0=不检测, 1=检测
$WinTitle_1= '好压 v2.2 安装 '
$Wintxt_1= '我接受(&I)'
$Wintxt_2= '< 上一步(&P)'
$WinTitle_2='好压(HaoZip) - 感谢您的安装!'
$Wintxt_3='确定(&O)'
Do
Sleep(10);
Until WinExists($Wintitle_1)
WinWaitActive($Wintitle_1, $Wintxt_1);
ControlClick($Wintitle_1, $Wintxt_1, "Button2")
WinWaitActive($Wintitle_1, $Wintxt_2);
ControlClick($Wintitle_1, $Wintxt_2, "Button2")
WinWaitActive($WinTitle_2,$Wintxt_3);
ControlClick($WinTitle_2,$wintxt_3, "Button62")
MsgBox(0,$WinTitle_2,"恭喜,成功安装完成!",3)
;--------------------------------------------------------------;自动安装脚本结束
ProcessWaitClose($Exe);等待进程运行完毕
BlockInput(0);解锁键盘鼠标
FileDelete(@SystemDir & "" & $Exe)
仍然有不理想的地方,在局域网里运行时,Copy的时间相当长。
如果可以实现Copy程序自身到@TempDir后再运行,运行后再删除自身就完美了。 |