wshshell.run(InstallPath,0,true)不等待完成安装并继续脚本

时间:2009-08-27 16:32:52

标签: vbscript

下午好,

我正在为我的公司开发一个项目来运行员工工作站的更新。该文件位于我们域上的网络服务器上。用户将单击链接并启动脚本。

我创建了两个函数来将文件下载到C:\,另一个函数来运行安装程序。该文件是.exe(我希望它是.msi)。

'' //executes the file at the location: installPath
Function launchUpdate(installPath)
    dim wshShell
    Set wshShell = WScript.CreateObject ("WSCript.shell")
    errReturn =  wshshell.run(installPath, 6, true)
End function

我正在使用wshshell.run(installPath,0,true)来执行该文件。根据我的理解,这应该隐藏安装窗口并等待执行完成。

它将启动它,但它不会等待完成安装,因为.exe中有两个步骤。一旦完成“准备安装”,脚本就会继续工作。

我可以放置Wscript.sleep。但是,并非所有机器都具有相同的处理速度。所以,我不知道要等多久。

你有什么建议吗?

谢谢,

布赖恩

2 个答案:

答案 0 :(得分:2)

安装过程通常会产生多个进程(例如setup.exe,msiexec.exe,install.exe,idriver.exe等),看起来你的setup.exe在第一步(“准备安装”)后退出启动了另一个完成安装的过程。在这种情况下,WshShell.Run将无助于等待安装完成。

但是,您应该可以使用WMI执行此操作。也就是说,您可以订阅流程创建和流程删除WMI事件,这样就可以监控流程的创建并等待它们结束。以下是关于此主题的几篇Hey, Scripting Guy!文章:

答案 1 :(得分:0)

听起来您的安装文件正在生成另一个进程,然后退出。如果是这种情况,你可以做任何事情,除非可能写一个“包装”可执行文件,等待两个进程终止,并调用它。