Wix组件条件

时间:2013-03-27 20:32:02

标签: wix installer windows-installer

我正在尝试让条件组件起作用。

然而它根本不起作用,所以我很难过。

我有以下一些代码:

该功能的定义如下:

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

但是永远不会安装文件!

1 个答案:

答案 0 :(得分:6)

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

但是,我不确定您是否需要Condition。只有在将其父功能设置为安装时才会安装组件。看起来你的Condition试图复制内置行为(但由于上述原因,不能这样做。)