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

时间:2019-05-31 06:57:33

标签: inno-setup

我有一个用于安装应用程序的设置,成功安装后需要运行该应用程序。我用postinstall来做到这一点。

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

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

第一个问题是我的应用程序有一个指令窗口。它会在启动时显示,因此设置窗口会返回到后面。第二个问题是我的应用程序不允许终止,除非卸载需要,因为它需要在后台运行。等待过程结束的安装程序。

在完成设置中单击完成按钮后,是否可以运行该应用程序?

2 个答案:

答案 0 :(得分:0)

为简化Run Files and Programs according to custom checkboxes after clicking on Finish Button in Inno Setup中的答案,您可以使用如下代码:

[Code]

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

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

答案 1 :(得分:0)

code部分添加到脚本中,如下所示:

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  ResultCode: Integer;
begin
  if CurStep = ssDone then
    Exec(ExpandConstant('{app}\MyProg.exe'), '', '', SW_SHOW, ewNoWait, ResultCode);
end;

只有在成功安装后才会触发。

如果您不希望exe以管理员身份运行,请使用ExecAsOriginalUser代替Exec

相关问题