我正在尝试让条件组件起作用。
然而它根本不起作用,所以我很难过。
我有以下一些代码:
该功能的定义如下:
<Feature Id="MainFeature" Level="1" Title="!(loc.FEATURE.MAINFEATURE.TITLE)"
Description="!(loc.FEATURE.MAINFEATURE.DESCRIPTION)" Display="collapse">
<ComponentRef Id="MainExecutable" />
<ComponentRef Id="pmd" />
</Feature>
,组件定义为
<Component Id="MainExecutable" Guid="*">
<Condition><![CDATA[(&MainFeature = 3) AND NOT (!MainFeature = 3)]]></Condition>
<File Id="MainExecutableFile" Name="SampleApp.exe"
Source="..\ProductBuild\sampleFile.txt" KeyPath="yes">
<Shortcut Id="MainExecutableStartMenu" Directory="ProgramMenuDir"
Name="!(loc.APPNAME)" WorkingDirectory="INSTALLDIR"
Icon="icon.ico" IconIndex="0" Advertise="yes"/>
<Shortcut Id="MainExecutableDesktop" Directory="DesktopFolder"
Name="!(loc.APPNAME)" WorkingDirectory="INSTALLDIR"
Icon="icon.ico" IconIndex="0" Advertise="yes" />
</File>
</Component>
但是永远不会安装文件!
答案 0 :(得分:6)
在确定功能状态时,不评估Component
Condition
。因此,Condition
永远不会正确评估(如您所见)。
但是,我不确定您是否需要Condition
。只有在将其父功能设置为安装时才会安装组件。看起来你的Condition
试图复制内置行为(但由于上述原因,不能这样做。)