2011-08-03 12 views
2

私のインストーラが非常に簡単です、それは基本的に次のとおりです。Inno Setupの単純な進行状況ページ

  1. Welcomeページ
  2. 最終ページ

歓迎し、最終ページの進捗ページ

  • 標準(ただ一つのボタン)です。 進捗状況ページでは、他のプログラムをサイレントモードでインストールしています。

    実際のスクリプトは、各プログラムを `[実行]セクションにインストールしています。
    バーは100%に達してからそこにとどまるという問題があります。
    私はメッセージテキストのみを変更できます。

    私は何を達成したいことはパスカル・スクリプトを使用して進行状況を表示することである(それは私がより多くの柔軟性を持つことを可能にするよう)、のようなもの:私は、より正確なプログレスバーを表示することができる方法

    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; 
    

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

    私は間違っていますか?

    ありがとうございます!

  • +0

    Ergh、NextButtonClickの内部では実行しないでください。 CurStepChanged(ssInstall)を一番早く実行します。 – Deanna

    +0

    なぜNextButtonClick内にいないのですか? Inno SetupでPascalScriptingを使うのは初めてのことなので、どのようにすればいいのか分かりません。 – lepe

    +0

    これは1回以上呼び出すことができるので、ほとんどのインストールでは、ユーザーが「はい、これをインストールしてください」と確認した時点よりも前です。 – Deanna

    答えて

    2

    見つけました!

    私が行方不明になった:

    • Result := True;(代わりにwpWelcomeの)
    • if CurPageID = wpReadyProgressPage.Hide;
    • 問題を解決し

    4

    WizardForm.ProgressGaugeを使用して、コード内の実際の進行状況バーの位置を制御できます。

    +0

    いくつかの例を教えてもらえますか?どのように使用されているのかわかりません(ドキュメントのみ)。 – lepe

    +0

    例はありませんが、Object reference intは、アクセスする必要があるプロパティを示しています。 [Run]エントリのBefore/AfterInstallエントリから呼び出すことができます。 – Deanna

    +0

    私はWizardForm.ProgressGaugeを使うともっとシンプルでエレガントになると思います。しかし、私は例がなく、インストーラはうまく動いているので(私はあなたの提案を投票することができます)。私はそれをテストすることができないので正解とすることはできません。ご理解頂けるとありがたいです。 – lepe

    関連する問題