Wix工具集 - 将目录条件应用于其文件

时间:2017-02-20 11:55:20

标签: wix conditional-statements

考虑这个目录,

          <Directory Id="MyProgramDir" Name="DirName">
          <Component Id="comp_MyProgramDir" Guid="FC0409CE-27E6-475E-B6C2-95E4B4C0223C" KeyPath="yes">
            <Condition><![CDATA[MyCondition]]></Condition>
          </Component>
        </Directory>

我必须将MyCondition应用于目录的所有子组件。由于它是一个包含许多文件的非常大的目录,有没有办法避免为每个组件写入条件? Transitive属性根本没用!

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
<xsl:output method="xml" indent="yes" cdata-section-elements="wix:Condition"/>
<xsl:strip-space elements="*" />

<xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
  </xsl:template>

<xsl:template match="wix:Component">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
        <xsl:element name="Condition" namespace="http://schemas.microsoft.com/wix/2006/wi">
            <xsl:attribute name="level">1</xsl:attribute>
            <xsl:text>MyCondition</xsl:text>
        </xsl:element>  
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

How to add condition to component during xsl transformation?