inno-setup - 如何根据外部应用程序的返回码强制重启?

标签 inno-setup

如果外部应用程序返回退出代码 5,我能否以某种方式强制重启?

[Run]
Filename: {app}\e.exe; Parameters: Z; Description: {cm:ALaunchProgram,{#ti}};

如果 RUN 部分不可能,我可以在哪里调用 ShellExec 以便在后期阶段运行可执行文件。

最佳答案

没有办法从 [Run] 条目触发重启,除非执行的文件做了一些 Inno 可以自动检测为需要重启的事情(比如安排一个文件被替换或删除重启)。这是通过 RestartIfNeededByRun 设置控制的,默认为 yes

如果您希望能够捕获返回值并用它做一些有趣的事情,您必须使用[Code]。如果您必须在安装后执行此操作,那么建议的位置是 CurStepChanged(ssPostInstall)(实际上发生在 [Run] 条目通常执行之后)。

此时您可以使用 Exec 来运行您的程序并检查退出代码,可选择设置一些全局变量以指示它是否要重新启动。然后,您可以在 NeedRestart 事件函数中使用该值。

然而,在走这条路之前,如果您尝试运行的东西实际上是某种先决条件组件,您应该强烈考虑从 PrepareToInstall 安装它。 Inno 中包含一个这样的示例,包括在先决条件安装和主应用程序安装之间触发重启的示例。

关于inno-setup - 如何根据外部应用程序的返回码强制重启?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14358614/

相关文章:

inno-setup - Inno 安装程序 : Delete empty lines from test file

inno-setup - 使用 Inno Setup 将应用程序安装到其路径中包含当前用户名的文件夹(用户配置文件)

winapi - 如何在Inno Setup中获取电池数据?

excel - Inno Setup - 将组件注册为管理员

inno-setup - Inno 安装程序 : how to use {app} in InitializeWizard?

installation - Inno Setup,从 CD ROM 读取速度慢

windows - InnoSetup - 如何要求用户键入许可证 key 或产品 key 并将该代码与编译常量匹配?

string - 删除字符串的特定部分

inno-setup - 修改Inno Setup中的默认路径 'Setup Needs the Next Disk'提示

installation - 创新设置: How to automatically uninstall previous installed version?