2016-11-03 217 views
1

在我的包中我有兩個功能,都是基於屬性的值創建文件夾結構。正如你所看到的,我的條件相當簡單。有趣的是隻有feature ONE的條件才起作用,而在TWO(它進行比較的時候)它沒有任何作用,但是如果我在每個組件上添加條件,就像在其他粘貼代碼中一樣,它工作正常。基於屬性的條件屬性

我想知道爲什麼發生這種情況

<Property Id="NUMBER" /> 


    <Feature Id="ONE" Level="0"> 
     <Condition Level="1"> 
     <![CDATA[NOT NUMBER]]> 
     </Condition> 
     <ComponentGroupRef Id="OneStructure"/> 
    </Feature> 

    <Feature Id="TWO" Level="0"> 
     <Condition Level="1"> 
     <![CDATA[NUMBER <> ""]]> 
     </Condition> 
     <ComponentGroupRef Id="OneStructure"/> 
    </Feature> 

-

   <Directory Id="dir77996843FCCE5E3734A5EDAA86FCE55B" Name="Input"> 
        <Component Id="cmp2F4C23D858A887EF0B2539F7EC1884BE" Guid="{625D2714-157F-4B21-86C0-D4954A4E1F73}" KeyPath="yes">  <Condition>  <![CDATA[NUMBER <> ""]]> </Condition> 
         <CreateFolder /> 
        </Component> 
       </Directory> 

回答

0

有同樣的問題。顯然它只與被評估一次的條件有關。

可以將條件直接放入特徵中,而不是將條件放入與給定對話框中的按鈕相關的控制事件中。

例子:

<Control Id="Install" Type="PushButton" X="304" Y="243" Width="56" Height="17" Default="yes" Text="Install"> 
    <!--Check property value here:--> 
    <Publish Event="AddLocal" Value="ALL">1</Publish> 
    <Publish Event="Remove" Value="ONE">NUMBER = 0</Publish> 
    <Publish Event="Remove" Value="TWO">NUMBER = 1</Publish> 
    <Publish Event="EndDialog" Value="Return" /> 
    </Control> 

你會再更改屬性「NUMBER」與單選按鈕的值。

希望這會有所幫助!

+1

不錯的替代解決方案:D。很高興知道! –