确定静默安装何时完成
Determine when a verysilent install is complete
当我 运行 使用 Inno Setup 安装时:
Installer.exe /VERYSILENT
尽管安装大约需要 10 分钟,但命令会立即 returns。所以,如果我 运行:
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 吗?]
为什么要使用工作?只需 运行 安装程序使用安装程序命令。当可执行文件完成时,PowerShell 将继续执行脚本的下一行。
您可能需要在 inno-setup 的 运行 部分添加一个命令来创建一个文件 "IamFinishedInstalling.txt" 作为它所做的最后一件事。
您的 powershell 然后可以阻止该文件,而不是试图找出进程或作业状态。
while (! (Test-Path "IamFinishedInstalling.txt")) { sleep 10 }
如果 installer.exe 在安装完成之前真的返回,这可能是您可以尝试的最简单的方法。
当我 运行 使用 Inno Setup 安装时:
Installer.exe /VERYSILENT
尽管安装大约需要 10 分钟,但命令会立即 returns。所以,如果我 运行:
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 吗?]
为什么要使用工作?只需 运行 安装程序使用安装程序命令。当可执行文件完成时,PowerShell 将继续执行脚本的下一行。
您可能需要在 inno-setup 的 运行 部分添加一个命令来创建一个文件 "IamFinishedInstalling.txt" 作为它所做的最后一件事。
您的 powershell 然后可以阻止该文件,而不是试图找出进程或作业状态。
while (! (Test-Path "IamFinishedInstalling.txt")) { sleep 10 }
如果 installer.exe 在安装完成之前真的返回,这可能是您可以尝试的最简单的方法。