Inno Setup-失败时如何在[运行]部分重复执行.exe文件

问题描述

是否可以在终止后重复.exe文件。因此,当您终止正在运行的可执行程序(来自Run部分)时,由于出现错误代码,然后您想要再次执行同一程序(类似于循环)。

解决方法

我认为Run部分中不可能。除了您可以使用cmd ||运算符基于非零退出代码来进行有限的重试次数之外,

[Run]
Filename: {cmd}; Parameters: "/c command params || command params || ..."

如果您需要更好的控制,则应在ssInstallssPostInstall步骤中使用Exec function中的CurStepChanged event function,例如:

procedure CurStepChanged(CurStep: TSetupStep);
var
  Code: Integer;
begin
  if CurPageID = ssPostInstall then
  begin
    while (not Exec('command','params','',SW_HIDE,ewWaitUntilTerminated,Code)) or
          (Code <> 0) do ;
  end;
end;