Inno Setup Run部分的简单进度页面

时间:2011-08-03 03:13:12

标签: progress-bar inno-setup pascalscript

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

  1. 欢迎页面
  2. 进度页
  3. 最后一页
  4. 欢迎页面和最终页面是标准页面(只需一个按钮)。 在Progress页面,我正默默地安装了许多其他程序。

    实际脚本是在[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;
    

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

    我做错了什么?

    提前谢谢!

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

发现它!

我失踪了:

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

解决了这个问题!