每页调用两次ShouldSkipPage

时间:2016-12-06 09:12:17

标签: inno-setup

我注意到,每个页面调用ShouldSkipPage两次 - 实际显示页面之前和之后。只需将Log添加到功能:

,即可轻松检查此项
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if  PageID = wpSelectDir then
    Log('ShouldSkipPage for SelectDir was called');

  Result := false;
end;

您将看到两次记录消息(并且通过在编译器中执行脚本,您可以看到,在显示页面后发生第二次调用)。

那么,有人可以解释一下,为什么它会在页面显示之后第二次被调用?这没有任何意义,可能会引起混淆甚至导致安装程序逻辑出现意外偏差。

另外,有没有办法阻止二次通话?

1 个答案:

答案 0 :(得分:2)

第一个电话(或实际上是第一组电话)是找到要显示的下一页。

第二个电话(或实际上是第二组电话)是找到,如果有任何要返回的页面(以确定后退按钮是否应该可见)。< / p>

这样你就可以阻止用户在到达某个页面后返回。

一般情况下,ShouldSkipPage event function可以随时被调用任意次。并且您的代码必须能够处理它。

如果您想在更改页面之前和之后进行特殊处理,请使用NextButtonClick / BackButtonClickCurPageChanged,而不是ShouldSkipPage

以下示例显示了一旦&#34;准备安装&#34;以及如何防止用户修改安装。页面已到达:

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

  if (WizardForm.CurPageID >= wpReady) and (PageID < wpReady) then
  begin
    Result := True;
  end;
end;

&#34;准备好安装&#34>上面没有任何后退按钮。页:

enter image description here