Inno Setup Простая страница прогресса для секции Run - PullRequest
2 голосов
/ 03 августа 2011

Мой установщик очень прост, в основном это:

  1. Страница приветствия
  2. Страница прогресса
  3. Конечная страница

Страница приветствия и финал являются стандартными (всего одна кнопка).На странице Progress я устанавливаю кучу других программ в автоматическом режиме.

Фактический скрипт устанавливает каждую программу внутри секции `[Run].
Проблема в том, что планка достигает 100%, а затемостается там.
Я могу изменить только текст сообщения.

Чего я хотел бы добиться, так это показать прогресс с использованием Pascal Script (поскольку это может позволить мне иметь большую гибкость), что-токак:

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 ]

4 голосов
/ 03 августа 2011

Вы можете контролировать реальное положение индикатора в коде, используя WizardForm.ProgressGauge.

2 голосов
/ 03 августа 2011

Нашел!

Мне не хватало:

  • Result := True; после ProgressPage.Hide;
  • if CurPageID = wpReady (вместо wpWelcome)

Это решило проблему!

...