2015-10-15 107 views
1

當我從創新安裝與運行安裝:確定何時VERYSILENT安裝完成

Installer.exe /VERYSILENT 

該命令立即返回,即使安裝大約需要10分鐘。因此,如果我運行:

Installer.exe /VERYSILENT 
DoNextThing.exe 

DoNextThing.exe在installer.exe仍在安裝時運行。

我想在安裝成功後運行一些配置。眼下,在PowerShell中,我做到以下幾點:

$h = Start-job -name Installer -ScriptBlock {."Installer.exe" /VERYSILENT} 
$h # the ps job control commands show this job as complete very quickly 
sleep 10 
$x = Get-Process -ProcessName Installer 
while ($x -and ! $x.HasExited) 
{ 
    write-output "waiting ..." 
    sleep 10 
} 
# Do some configuration 

雖然這似乎是工作,我覺得我必須缺少一個更好的方式來做到這一點。我不想讓它成爲安裝程序的一部分,因爲此配置僅用於Jenkins測試環境。

任何想法,爲什麼powershell工作管理不起作用呢?我是否錯誤地使用了powershell,或者Inno Setup生成的Installer.exe與PowerShell不兼容? [我應該使用cmd.exe而不是PowerShell?]

回答

1

您可能需要在inno-setup的運行部分添加一條命令,以創建一個文件「IamFinishedInstalling.txt」作爲最後一件事情。

然後,您的powershell可以阻止該文件,而不是嘗試找出進程或作業狀態。

while (! (Test-Path "IamFinishedInstalling.txt")) { sleep 10 } 

如果installer.exe在安裝完成之前真的返回,那麼這可能是您可以嘗試的最簡單的方法。

+1

雖然這確實起作用,但鏈接的問題提供了一個更清晰的管道輸出Out-Null – rkh

0

爲什麼要使用工作?只需使用installer命令運行安裝程序即可。當可執行文件完成時,PowerShell將繼續執行腳本的下一行。

+1

在問題的第一行,這是我試過的。安裝程序會立即返回,即使它還有10分鐘時間才能完成。我編輯了這個問題來澄清這一點。 – rkh

+0

對那些閱讀評論:這個問題最初沒有說(因此這個答案)。 –