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

时间:2017-02-07 12:20:41

标签: inno-setup pascalscript

我希望我的安装应该是静默的,而不需要用户点击任何 Next Install 按钮。我试图禁用所有页面,我正在获取“准备安装”页面。我想避免这个安装页面。

1 个答案:

答案 0 :(得分:2)

要运行Inno Setup内置的安装程序而不与用户进行任何交互,甚至没有任何窗口,请使用/SILENT or /VERYSILENT command-line parameters

  

指示安装程序保持沉默或非常安静。安装程序静默时,不显示向导和后台窗口,但安装进度窗口为。当设置非常安静时,不会显示此安装进度窗口。其他一切都是正常的,例如显示安装过程中的错误消息并启动提示符(如果您没有使用DisableStartupPrompt或上面解释的'/ SP-'命令行选项禁用它)。

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

如果您想使用任何其他命令行开关“静默”运行安装程序,您可以:

[Files]
Source: "InnoCallback.dll"; Flags: dontcopy

[Code]

type
  TTimerProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

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

function WrapTimerProc(Callback: TTimerProc; ParamCount: Integer): LongWord;
  external 'wrapcallback@files:InnoCallback.dll stdcall delayload';

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, WrapTimerProc(@SubmitPageProc, 4));
  end
    else
  begin
    if SubmitPageTimer <> 0 then
    begin
      KillSubmitPageTimer;
    end;
  end;
end;

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

代码使用InnoTools InnoCallback库来实现计时器。

另一种方法是将CN_COMMAND发送到下一步按钮,如下所示:How to skip all the wizard pages and go directly to the installation process?