Wix Heat harvest:使用transform删除包含过滤组件的目录

时间:2016-06-24 22:39:32

标签: xslt wix heat

我有以下从WiX收获中输出的.wxs(Ids ommitted)片段。

        <Directory Id="" Name="tr">
            <Component Id="" Guid="*">
                <File Id="" KeyPath="yes" Source="$(var.SourceDir)\tr\ZedGraph.resources.dll" />
            </Component>
        </Directory>
        <Directory Id="" Name="zh-cn">
            <Component Id="" Guid="*">
                <File Id="" KeyPath="yes" Source="$(var.SourceDir)\zh-cn\ZedGraph.resources.dll" />
            </Component>
        </Directory>
        <Directory Id="" Name="zh-tw">
            <Component Id="" Guid="*">
                <File Id="" KeyPath="yes" Source="$(var.SourceDir)\zh-tw\ZedGraph.resources.dll" />
            </Component>
        </Directory>
    </DirectoryRef>

以下转换将删除组件但保留空目录元素。我怎样才能删除它们?鉴于我不想删除所有目录元素。理想情况下,我希望根据包含从搜索返回的组件ID来匹配它们。

<xsl:key name="zedResource-search" match="wix:Component[contains(wix:File/@Source, 'ZedGraph.resources.dll')]" use="@Id" />
<xsl:template match="wix:Component[key('zedResource-search', @Id)]" />
<xsl:template match="wix:ComponentRef[key('zedResource-search', @Id)]" />

This question是类似的,但使用目录名称,我希望避免添加搜索其中的每一个,因为有很多语言变体。

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用单独的模板来匹配$response = $mySforceConnection->create(array($record),'Account'); 元素,其中所有子Directory元素都在键中。您使用Component

进行此比较
count

或者,您可以说要删除 <xsl:template match="wix:Directory[count(wix:Component) = count(wix:Component[key('zedResource-search', @Id)])]" /> 没有Directory引用但不在密钥中的Component(所以,双重否定)

<xsl:template match="wix:Directory[not(wix:Component[not(key('zedResource-search', @Id))])]" />