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

AComponent Conditionは、機能の状態が決定された時点では評価されません。したがって、あなたConditionが正しく評価することは決してありません(あなたが見つけたように)。

ただし、が必要かどうかはわかりませんCondition。コンポーネントは、その親機能もインストールされるように設定されている場合にのみインストールされます。Condition組み込みの動作を複製しようとしているようです (ただし、上記の理由でできません)。

于 2013-03-27T21:06:47.270 に答える