当我从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吗?]
答案 0 :(得分:1)
您可能只需在inno-setup中向RUN部分添加命令即可创建文件" IamFinishedInstalling.txt"它是最后一件事。
然后您的powershell可以阻止该文件,而不是试图找出进程或作业状态。
while (! (Test-Path "IamFinishedInstalling.txt")) { sleep 10 }
如果在安装完成之前,installer.exe确实已经返回,那么这可能是您可以尝试的最简单的事情。
答案 1 :(得分:0)
为什么要找工作呢?只需使用installer命令运行安装程序即可。当可执行文件完成时,PowerShell将继续执行脚本的下一行。