在我的软件包中,我有2个功能,这两个功能都是基于属性值创建文件夹结构。你可以看到我的条件相当简单。有趣的是,只有特征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 :(得分: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”的值。
希望这有帮助!