确定verysilent安装何时完成

时间:2015-10-15 23:50:23

标签: powershell inno-setup

当我从Inno Setup运行安装时:

Installer.exe /VERYSILENT

即使安装大约需要10分钟,该命令也会立即返回。所以,如果我跑:

Installer.exe /VERYSILENT
DoNextThing.exe

在installer.exe仍在安装时运行DoNextThing.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吗?]

2 个答案:

答案 0 :(得分:1)

您可能只需在inno-setup中向RUN部分添加命令即可创建文件" IamFinishedInstalling.txt"它是最后一件事。

然后您的powershell可以阻止该文件,而不是试图找出进程或作业状态。

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

如果在安装完成之前,installer.exe确实已经返回,那么这可能是您可以尝试的最简单的事情。

答案 1 :(得分:0)

为什么要找工作呢?只需使用installer命令运行安装程序即可。当可执行文件完成时,PowerShell将继续执行脚本的下一行。