使用 Inno Setup 以静默方式运行安装,无需任何“下一步”按钮或“安装”按钮

Pri*_*iyu 7 inno-setup pascalscript

我希望我的安装应该是静默的,用户无需单击任何“下一步”“安装”按钮。我仍然尝试禁用所有页面,但我收到了“准备安装”页面。我想避免这个安装页面。

Mar*_*ryl 7

要运行 Inno Setup 中内置的安装程序而不与用户进行任何交互,甚至没有任何窗口,请使用/SILENT/VERYSILENT命令行参数

指示安装程序保持安静或非常安静。当安装程序处于静默状态时,不会显示向导和背景窗口,但会显示安装进度窗口。当安装非常安静时,不会显示此安装进度窗口。其他一切都正常,例如安装过程中会显示错误消息,启动提示也会显示(如果您没有使用上面解释的 DisableStartupPrompt 或“/SP-”命令行选项禁用它)。


您也可以考虑使用该/SUPPRESSMSGBOXES参数。


如果您想让安装程序“静默”运行而无需任何额外的命令行开关(在我看来这是非常错误的方法),您可以:

[Code]

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  Result := True;
end;

function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord;
  external 'SetTimer@User32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord;
  external 'KillTimer@User32.dll stdcall';

var
  SubmitPageTimer: LongWord;

procedure KillSubmitPageTimer;
begin
  KillTimer(0, SubmitPageTimer);
  SubmitPageTimer := 0;
end;  

procedure SubmitPageProc(
  H: LongWord; Msg: LongWord; IdEvent: LongWord; Time: LongWord);
begin
  WizardForm.NextButton.OnClick(WizardForm.NextButton);
  KillSubmitPageTimer;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpReady then
  begin
    SubmitPageTimer := SetTimer(0, 0, 100, CreateCallback(@SubmitPageProc));
  end
    else
  begin
    if SubmitPageTimer <> 0 then
    begin
      KillSubmitPageTimer;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

对于CreateCallback函数,您需要 Inno Setup 6。如果您无法使用 Inno Setup 5,您可以使用InnoTools InnoCallbackWrapCallback库中的函数。

另一种方法是发送CN_COMMAND“下一步”按钮,如下所示:如何跳过所有向导页面并直接进入安装过程?


另一种选择(有其自身的注意事项)是使用开关重新生成安装程序/[VERY]SILENT。您可以使用此处描述的技术:
Inno Setup 在安装程序中指定日志名称


对于具有不同答案的类似问题,请参阅如何使用 Inno Setup 进行静默安装?