3

我的安装程序很简单,基本上是:

  1. 欢迎页面
  2. 进度页面
  3. 最后一页

欢迎和最终页面是标准的(只有一个按钮)。在进度页面上,我正在默默地安装一堆其他程序。

实际的脚本是在 `[Run] 部分中安装每个程序。
问题是酒吧达到 100%,然后停留在那里。
我只能更改消息文本。

我想要实现的是使用 Pascal 脚本显示进度(因为它可以让我有更多的灵活性),例如:

procedure InitializeWizard;
begin
  ProgressPage.SetProgress(1, 100);
  exec(.......)
  ProgressPage.SetProgress(15, 100);
  exec(.......)
  ProgressPage.SetProgress(40, 100);
  ...
  ...
end;

这样我可以显示更准确的进度条。这就是我所拥有的(模拟安装。取自示例):

[Code]

var
  ProgressPage: TOutputProgressWizardPage;

procedure InitializeWizard;
begin
  ProgressPage := CreateOutputProgressPage('My App','');
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
  I: Integer;
begin
  if CurPageID = wpWelcome then begin
    ProgressPage.SetText('Starting installation...', '');
    ProgressPage.SetProgress(0, 0);
    ProgressPage.Show;
    try
      for I := 0 to 10 do begin
        ProgressPage.SetProgress(I, 10);
        Sleep(100);
      end;
    finally
      ProgressPage.Hide;
    end;
  end else
    Result := True;
end;

问题是,当我构建安装程序时,它没有显示欢迎页面(安装程序正在运行,但没有显示任何内容)。

我做错了什么?

先感谢您!

4

2 回答 2

5

您可以使用 控制代码中的实际进度条位置WizardForm.ProgressGauge

于 2011-08-03T08:55:36.453 回答
3

找到了!

我失踪了:

  • Result := True;ProgressPage.Hide;
  • if CurPageID = wpReady(而不是wpWelcome

这解决了问题!

于 2011-08-03T04:08:30.060 回答