3

私のインストーラーは非常にシンプルで、基本的には次のとおりです。

  1. ようこそページ
  2. 進行状況ページ
  3. 最終ページ

ようこそページと最終ページは標準です (ボタンは 1 つだけ)。進行状況ページでは、他のプログラムを黙ってインストールしています。

実際のスクリプトは、各プログラムを `[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;

問題は、インストーラーをビルドすると、ようこそページが表示されないことです (インストーラーは実行されていますが、何も表示されません)。

私が間違っていることは何ですか?

前もって感謝します!

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 に答える