我有一個註冊表項可以等於兩個值之一:特殊值或null。和兩個功能。如何安裝功能取決於屬性的值
當我的註冊表項等於特殊值安裝程序必須安裝第一個功能。如果通過註冊表搜索沒有找到註冊表項,安裝程序必須安裝第二個功能。如果註冊表項具有null值,則安裝程序不得安裝這兩個功能中的任何一個。
我在做什麼或理解錯誤?如果INSTALLLEVEL = 5,SPECIALVALUE =「special」,MYTREAT =「1」,則必須安裝第一個功能,但安裝程序在這種情況下不會安裝這兩個功能。
<Feature Id="MyFeatures" Level="1" ConfigurableDirectory='INSTALLLOCATION' Display='expand' AllowAdvertise='no'>
<ComponentRef Id='Empty'/>
<Feature Id='First' Level='3' AllowAdvertise='no' ConfigurableDirectory='INSTALLLOCATION'>
<Condition Level="0">INSTALLLEVEL=4 OR (MYTREAT="1" AND NOT SPECIALVALUE AND NOT SPECIALVALUE="")</Condition>
<Condition Level="1">SPECIALVALUE="special" AND MYTREAT="1"</Condition>
<ComponentRef Id="first_comp"/>
</Feature>
<Feature Id="Second" Level="4" AllowAdvertise="no" ConfigurableDirectory="INSTALLLOCATION">
<Condition Level="0">INSTALLLEVEL=3 OR (MYTREAT="1" AND SPECIALVALUE)</Condition>
<ComponentRef Id="second_comp"/>
</Feature>
</Feature>
我修改了我的代碼,但它仍然不能正常工作。有條件的問題。註冊表項中有一個特殊的值,但安裝程序仍在跳過第一個功能。我發現只有「MYTREAT = 1」的條件不起作用。但是在日誌中,客戶端正在用這個值向服務器發送MYTREAT屬性.. INSTALLLEVEL是1. MYTREAT屬性用按鈕控制初始化,可能在這裏是我的麻煩?新代碼:
<Feature Id="Myfeatures" Level="3"
ConfigurableDirectory='INSTALLLOCATION'
Display='expand' AllowAdvertise='no'>
<Condition Level='1'>MYTREAT="1"</Condition>
<ComponentRef Id='Empty'/>
<Feature Id='First' Level='3' AllowAdvertise='no'
ConfigurableDirectory='INSTALLLOCATION'> <!--Must be installed by default,default value of INSTALLLEVEL is 3-->
<Condition Level="1">MYTREAT="1" AND SPECIALVALUE="SPECIAL"</Condition>
<ComponentRef Id="first_comp"/>
</Feature>
<Feature Id="Second" Level="10" AllowAdvertise="no"
ConfigurableDirectory="INSTALLLOCATION"><!---->
<Condition Level="1">(MYTREAT="1" AND NOT SPECIALVALUE)</Condition>
<ComponentRef Id="second_comp"/>
</Feature>
</Feature>
............
<Dialog Id="TreatDlg" Width="260" Height="85">
<Control Id="Mytreat" Type="PushButton" X="50" Y="57" Width="56" Height="17" Property="MYTREAT">
<Publish Property="MYTREAT" Value="1">1</Publish>
<Publish Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
</Control>
P.S.默認情況下,我初始化了MYTREAT 1,條件被正確評估。爲什麼我無法在功能條件下使用控件的屬性?以及如何解決我的問題!請任何幫助!
很奇怪,我認爲我可以調節我的部件一個對話框控制。謝謝 – Nerielle
是否有已經通過對話框來改變它的解決方案? 「典型,完整」? –