如果外部应用程序返回退出代码 5,我可以以某种方式强制重启吗?
[Run]
Filename: {app}\e.exe; Parameters: Z; Description: {cm:ALaunchProgram,{#ti}};
如果 RUN 部分不可能,我可以在哪里调用 ShellExec 以便在后期阶段运行可执行文件。
如果外部应用程序返回退出代码 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 中包含了一个示例,包括在先决条件安装和主应用程序安装之间触发重新启动的示例。