Inno setup 如何根据外部应用程序的返回代码强制重新启动?

Inno setup 如何根据外部应用程序的返回代码强制重新启动?,inno-setup,Inno Setup,如果外部应用程序返回退出代码5,我是否可以强制重新启动 [Run] Filename: {app}\e.exe; Parameters: Z; Description: {cm:ALaunchProgram,{#ti}}; 如果RUN部分不可能,我在哪里可以调用ShellExec,以便在后期阶段运行可执行文件。除非执行的文件执行了Inno可以自动检测到需要重新启动的操作(例如计划在重新启动时替换或删除文件),否则无法从[RUN]条目触发重新启动. 这是通过restartfneedbyrun设

如果外部应用程序返回退出代码5,我是否可以强制重新启动

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

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

除非执行的文件执行了Inno可以自动检测到需要重新启动的操作(例如计划在重新启动时替换或删除文件),否则无法从
[RUN]
条目触发重新启动. 这是通过
restartfneedbyrun
设置控制的,默认设置为
yes

如果希望能够捕获返回值并对其进行有趣的操作,则必须使用
[code]
。如果您必须在安装后执行此操作,那么建议的位置是
CurStepChanged(ssPostInstall)
(这实际上发生在
[Run]
条目正常运行之后)

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


然而,在走下这条路径之前,如果您要运行的东西实际上是某种必备组件,您应该强烈考虑改为从<代码> PraseRo安装安装> /代码>。Inno附带了一个例子,包括在必备安装和主应用程序安装之间触发重新启动的例子。

我相信,如果外部安装程序发出需要重新启动的信号,Inno安装程序会在
FinishPage
上显示这样的消息。您还可以选中:
[Setup]:restartfneedbyrun=yes
,但默认值为
yes
。。。描述:如果设置为“是”,并且在[Run]部分执行的程序将在下次重新启动时(通过调用MoveFileEx或修改wininit.ini)替换的文件排队,安装程序将检测到此情况,并在安装结束时提示用户重新启动计算机。