2009-08-27 130 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

這聽起來像你的安裝文件產卵另一個進程,然後退出。如果是這種情況,除了編寫一個等待這兩個進程終止的「包裝器」可執行文件,並調用該文件外,沒有什麼可以做的。