2

我试图让一个条件组件工作。

但是它根本不起作用,所以我很难过。

我有以下代码块:

该功能定义如下:

<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>

但是这些文件永远不会安装!

4

1 回答 1

6

Component Condition在确定特征状态时不评估A。因此,您Condition永远不会正确评估(如您所见)。

但是,我不确定您是否需要Condition. 仅当组件的父功能也设置为安装时,才会安装组件。似乎您Condition正在尝试复制内置行为(但由于上述原因不能)。

于 2013-03-27T21:06:47.270 回答