2011-12-09 79 views
2

我有一個自定義對話框,在選擇InstallPEDatabase功能時顯示。 這裏是序列的一部分,其中MyEditConfig是我的自定義對話框:帶條件的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提出的功能,並在不那麼選擇功能,它不會顯示。問題是,當我點擊下一步從我的自定義對話框,並轉到VerifyReadyDlg,並從那裏點擊回來,它把我帶回MyCustomizeDlg,而不是MyEditConfigDlg.我知道有什麼問題的條件,但我只是無法弄清楚什麼。

回答

3

「功能」CreatePEDatabase的語法被指定爲「屬性」(不帶前綴的變量)。您需要使用&號前綴功能。就像現在一樣,測試要求「NOT(屬性CreatePEDatabase = 3)」這將是真實的,因爲該屬性不存在並且不等於任何東西。 如果將語法更改爲某個功能,則它將被正確評估。

這裏是由MSI引擎(讀取維克斯導致MSI文件)所使用的語法很好地概括: http://msdn.microsoft.com/en-us/library/aa368012(VS.85).aspx

此外,您還可以省略「訂單」的價值觀,那些只能在使用針對相同條件的多個對話的特殊情況。您的測試將使每種情況都是獨一無二

+0

感謝您的鏈接,這幫了我很多! – hs2d