2016-11-03 149 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。很高兴知道! –