如何在一段时间后关闭已完成的 Inno Setup 安装程序?

问题描述 投票:0回答:1

如何在一段时间后关闭“完成”页面上的安装程序?

也可以解释为:如何在一段时间不活动后关闭安装程序? (关闭/取消安装)。这可能吗?

inno-setup
1个回答
6
投票

设置一个计时器,一旦显示“完成”页面即可触发关闭。

[Code]

function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord;
  external '[email protected] stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord;
  external '[email protected] stdcall';

var
  PageTimeoutTimer: LongWord;
  PageTimeout: Integer;

procedure UpdateFinishButton;
begin
  WizardForm.NextButton.Caption :=
    Format(SetupMessage(msgButtonFinish) + ' - %ds', [PageTimeout]);
end;  
  
procedure PageTimeoutProc(
  H: LongWord; Msg: LongWord; IdEvent: LongWord; Time: LongWord);
begin
  if PageTimeout > 1 then
  begin
    Dec(PageTimeout);
    UpdateFinishButton;
  end
    else
  begin
    WizardForm.NextButton.OnClick(WizardForm.NextButton);
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpFinished then
  begin
    PageTimeout := 10;
    UpdateFinishButton;
    PageTimeoutTimer := SetTimer(0, 0, 1000, CreateCallback(@PageTimeoutProc));
  end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  if CurPageID = wpFinished then
  begin
    KillTimer(0, PageTimeoutTimer);
    PageTimeoutTimer := 0;
  end;
  Result := True;
end;

Timeout of Finished page

对于

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


相关问题:

© www.soinside.com 2019 - 2024. All rights reserved.