开发者

Inno Setup Simple progress page for Run section

开发者 https://www.devze.com 2023-03-25 01:16 出处:网络
My installer is very simple, it basically is: Welcome Page Progress Page Final Page The Welcome and Final pages are standard (just one button).

My installer is very simple, it basically is:

  1. Welcome Page
  2. Progress Page
  3. Final Page

The Welcome and Final pages are standard (just one button). At the Progress page I'm installing a bunch of other programs silently.

The actual script is installing each program inside the `[Run] section.

The problem is that the bar reaches 100% and then stays there.

I'm only able to change the message text.

What I would like to achieve is to show the progress using Pascal Script (as it may allow me to have more flexibility), something like:

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

That way I can show a more accur开发者_JAVA百科ate progress bar. This is what I have (simulating installation. Taken from an example):

[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;

The problem is that when I build the installer it doesn't show the Welcome page (the installer is running, but nothing is shown).

What I'm doing wrong?

Thank you in advance!


You can control the real progress bar position in code using WizardForm.ProgressGauge.


Found it!

I was missing :

  • Result := True; after ProgressPage.Hide;
  • if CurPageID = wpReady (Instead of wpWelcome)

That solved the problem!

0

精彩评论

暂无评论...
验证码 换一张
取 消