2009-08-27 135 views
2

下午好,wshshell.run(安装路径,0,真)不等待完成安装,并继续脚本

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

我做了两个函数,一个是将文件下载到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

安装程序通常产生多个进程(例如setup.exe,msiexec.exe,install.exe,idriver.exe等),并且它看起来像您的setup.exe在第一步(“准备安装”)后退出推出了完成安装的另一个流程。在这种情况下WshShell.Run不会等待安装完成。不过,你应该可以使用WMI来做到这一点。也就是说,您可以订阅进程创建并处理删除WMI事件,并以此方式监视进程的创建并等待它们结束。这里有一对夫妇关于这一主题的Hey, Scripting Guy!文章:

+0

我不得不查找进程启动和做的伎俩。这非常有帮助,写得也很好。 谢谢! -Brian – Illure 2009-08-31 16:38:10

0

这听起来像你的安装文件产卵另一个进程,然后退出。如果是这种情况,除了编写一个等待这两个进程终止的“包装器”可执行文件,并调用该文件外,没有什么可以做的。