单击“完成”按钮后运行应用程序(不是安装后)

sam*_*mgi 4 inno-setup

我有一个安装应用程序的设置,我需要在成功安装后运行该应用程序。我曾经postinstall这样做过。

但它显示一个复选框,用户可以取消选中它。我需要在不询问的情况下运行该应用程序,因为它是一种需要在启动时运行的服务。如果用户取消选中它,则需要重新启动电脑才能启动。

因此,我可以使用Filename: "{app}\myapp.exe"该部分中没有任何标志的代码Run来启动应用程序,但问题是,它在安装后立即运行,而不是在单击完成按钮后运行。

第一个问题是我的应用程序有一个说明窗口。它在启动时出现,因此设置窗口位于后面。第二个问题是我的应用程序不允许终止,除非卸载,因为它需要在后台运行。设置正在等待处理结束。

在 inno setup 中单击完成按钮后有什么方法可以运行应用程序吗?

Mar*_*ryl 6

单击 Inno Setup 中的“完成”按钮后,根据自定义复选框简化“运行文件和程序”的答案,您可以使用如下代码:

[Code]

function NextButtonClick(CurPageID: Integer): Boolean;
var
  ResultCode: Integer;
  Path, Msg: string;
begin
  if CurPageID = wpFinished then
  begin
    Path := ExpandConstant('{app}\MyProg.exe');
    if ExecAsOriginalUser(Path, '', '', SW_SHOW, ewNoWait, ResultCode) then
    begin
      Log('Executed MyProg');
    end
      else
    begin
      Msg := 'Error executing MyProg - ' + SysErrorMessage(ResultCode);
      MsgBox(Msg, mbError, MB_OK);
    end;
  end;
  Result := True;
end;
Run Code Online (Sandbox Code Playgroud)

如果您想以提升的/管理员权限运行程序(如果安装程序完全使用它们),请替换ExecAsOriginalUser为。Exec