2016-12-06 6 views
1

私は、ページが実際に表示される前と後に、ShouldSkipPageがページごとに2回呼び出されていることに気付きました。ShouldSkipPageはページごとに2回呼び出されます

function ShouldSkipPage(PageID: Integer): Boolean; 
begin 
    if PageID = wpSelectDir then 
    Log('ShouldSkipPage for SelectDir was called'); 

    Result := false; 
end; 

あなたは二回ログに記録されたメッセージが表示されます(コンパイラでスクリプトを実行することで、ページが表示された後の第2のコールが発生したことを、見ることができます):あなたは簡単に、単純に関数にLogを追加することによって、これを確認することができます。

誰かがなぜページが表示された後に2回目に呼ばれたのか説明できますか?これは意味をなさないものであり、混乱させ、インストーラロジックの予期しない逸脱につながる可能性もあります。

また、2番目の呼び出しを防止する方法はありますか?

答えて

2

最初の呼び出し(実際には最初の呼び出しのセット)は、表示する次のページを見つけることです。

2番目の呼び出し(実際には2番目の呼び出しのセット)は、返すページがあれば検索します。Backボタンを表示するかどうかを決定します。

特定のページに達すると、ユーザーが戻ってくるのを防ぎます。

一般に、ShouldSkipPage event functionは任意の回数だけ、いつでも呼び出すことができます。そしてあなたのコードはそれを処理できる必要があります。

は、ページが変更される前と後に、特別な処理を行うNextButtonClick/BackButtonClickCurPageChangedを使用し、ないShouldSkipPageします。


次の例では、「インストール準備完了」ページが到達すると、インストールを変更からユーザーを防ぐ方法を示しています

function ShouldSkipPage(PageID: Integer): Boolean; 
begin 
    Result := False; 

    if (WizardForm.CurPageID >= wpReady) and (PageID < wpReady) then 
    begin 
    Result := True; 
    end; 
end; 

いかなる戻るボタンがあるではありませんページ「インストール準備完了」に:大丈夫、

enter image description here

+0

ああ、そう、それは「スキップ」をカウントするだけでなく、「私はこのページを訪問するべきである」としてではなく私はこのページを離れるべきですか?さて、今、それは感謝します、ありがとう。 – lentinant

+0

いいえ、どちらのシナリオでも「スキップ」を意味します。それは変化する唯一の方向性です。 「次へ」を押すと、進むべきページが見つかるまで「ShouldSkipPage」を呼び出します。選択したページに切り替わります。また、「戻る」を表示するかどうかを決定するために、戻るページが見つかるまで「ShouldSkipPage」を呼び出します。 「次へ」ボタンについても同じことが行われません。なぜなら、どこに進むべきか(ページの「インストール」またはインストーラの終了/終了)がいつもあるからです。 「次へ/インストール/完了」ボタンは常に表示されます。 –

関連する問題