2015-10-15 104 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

对那些阅读评论:这个问题最初没有说(因此这个答案)。 –