应用程序阻止安装程序返回退出代码

时间:2015-12-25 09:44:53

标签: powershell inno-setup

有奇怪的问题。我有安装程序,工作得很好。我正在使用PowerShell启动它,类似于

$p = 'Start-Process $path -Verb "RunAs" -PassThru -Wait'
$p = Invoke-Expression $p

并将其退出代码设为$p.ExitCode 通常这一切都很完美。但我已在ShellExec中为CurStepChanged步骤添加ssPostInstall,以便在安装完成后启动其他可执行文件。

ShellExec('', ExpandConstant('{app}\DentalDesktopServerAgent.exe'), '', '', SW_HIDE, ewNoWait, ResultCode);

有了它,它不再返回退出代码。 此行是使用和不使用退出代码的安装程序之间的唯一区别。由于PowerShell脚本正在等待退出代码,因此它只是挂起。

那么,为什么ShellExec会影响退出代码呢?有什么想法吗?

更新 似乎问题不在ShellExec中,而是在启动的应用程序本身。应用程序本身不应该被关闭(它是主要安装的应用程序的帮助应用程序)。我试图将其移动到[Run],似乎应用程序没有返回退出代码(很明显)。但我不确定,这会导致安装程序不返回自己的退出代码,因为即使在将应用程序启动到bat文件后,当bat文件在应用程序启动后立即返回退出代码时,安装程​​序仍然不会返回退出代码,虽然它的[Run]条目都是。

更新 附加信息传入。 Exec的记录结果代码,用于启动应用程序。代码是259,这意味着"应用程序仍在进行中#34;。是否有可能影响安装人员的结果代码?

1 个答案:

答案 0 :(得分:0)

我昨天没有很好地阅读你的问题。似乎是Invoke-Expression会给你带来麻烦。尝试以正常方式启动安装程序(只需在批处理文件中声明其路径),然后检查PowerShell变量$ LastExitCode。

我假设你知道要比较的退出代码: http://www.jrsoftware.org/ishelp/index.php?topic=setupexitcodes