2011-12-09 7 views
2

InstallPEDatabase機能が選択されているときに表示されるカスタムダイアログがあります。このよう条件付きWiXスキップダイアログ

<Publish Dialog="MyCustomizeDlg" Control="Next" Event="NewDialog" Value="MyEditConfigDlg"><![CDATA[(&CreatePEDatabase=3)]]></Publish> 
    <Publish Dialog="MyCustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg"><![CDATA[NOT(&CreatePEDatabase=3)]]></Publish> 

    <Publish Dialog="MyEditConfigDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> 
    <Publish Dialog="MyEditConfigDlg" Control="Back" Event="NewDialog" Value="MyCustomizeDlg">1</Publish> 

    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MyCustomizeDlg" Order="1">NOT CreatePEDatabase = 3 AND NOT Installed OR WixUI_InstallMode = "Change"</Publish> 
    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MyEditConfigDlg" Order="2">CreatePEDatabase = 3 AND NOT Installed OR WixUI_InstallMode = "Change"</Publish> 
    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="3">Installed AND NOT PATCH</Publish> 
    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="4">Installed AND PATCH</Publish> 

それはMyEditConfigDlgが提示され、機能が選択されていない場合、それが提示されていないその後、機能を選択するために動作します:ここで はMyEditConfigが私のカスタムダイアログである配列の一部です。問題は、私が自分のカスタムダイアログから次をクリックしてVerifyReadyDlgに行き、そこでそこから戻ると、MyEditConfigDlg.の代わりにMyCustomizeDlgに戻ってきます。私は条件に何か問題があることを知っています。

答えて

3

"feature" CreatePEDatabaseの構文は、 "プロパティ"(接頭辞なしの変数)として指定されています。フィーチャーの前にアンパサンドを付ける必要があります。今のように、テストは "NOT(Is Create the Property CreatePEDatabase = 3)"という質問をしています。これは、そのプロパティが存在せず、何と同等でもないため真となります。 構文を機能に変更すると、正しく評価されます。これらのみに使用されているように、また http://msdn.microsoft.com/en-us/library/aa368012(VS.85).aspx

、あなたは「順序」の値を省略することができます:ここでは

は(WiXの結果のMSIファイルを読み込む)MSIエンジンによって使用される構文の偉大な要約です同じ条件の複数のダイアログの特別なケース。あなたのテストは、それぞれの状況を一意にします。

+0

リンクをいただきありがとうございました。 – hs2d