我想自动化安装程序。我用shellexecute
启动了安装程序。问题是send命令不起作用。安装程序实际上是一个自解压存档,可以提取三个文件:
提取后,启动setup.exe
,检测操作系统是32位还是64位,然后根据检测到的操作系统启动msi。
现在我需要发送一个键,按下MSI上的下一个按钮,但它不起作用。
如果我直接运行MSI文件,它可以工作,但是当我以这种方式运行时,安装程序会失败。
基本上,我需要运行一个EXE文件并将密钥发送到MSI文件。怎么办呢?
答案 0 :(得分:1)
听起来你正在向网络空间发送密钥! ;-P
不,但实际上,这听起来像是一个窗口焦点问题,你发送密钥但它们没有登陆你期望的窗口。您需要使用WinActivate("you_window_title")
抓住正确的窗口。
手动运行安装程序并记下安装时弹出的所有窗口标题。然后在您的脚本中,您可以确保您期望聚焦的窗口是焦点。
使用以下内容:
Run(your_installer.exe) ; execute your installer
Sleep(2500) ; sleep for 2.5 seconds waiting for the exe to do it's thing and eventually open the msi
;;;;~~ This is how you would now grab onto the new msi installer's window ~~;;;;
WinActivate("Your Installer Window's Title") ; make sure the installer window is in focus
;;;;~~ ~~;;;;
Send("{TAB}") ; tab around the window that's in focus
Send("{ENTER}") ; press <ENTER> on the "NEXT" button
Sleep(100); ; sleep for 100ms while the next page loads
Send("{TAB}") ; tab again to select a checkbox for the "I agree" on the EULA
Send("{SPACE}") ; space will toggle the checkbox to checked (I agree)
Send("+{TAB}") ; tab back to the NEXT button
Send("+{TAB}") ; still tabbing to the next button
Send("{ENTER}") ; now hit enter on the next button
; etc... ;
答案 1 :(得分:0)
您是否检查过窗口是否聚焦以及按钮&#34;下一步&#34;重点也是? 只需使用ShellExecute运行可执行文件,然后按Enter键查看该按钮是否已被聚焦。