1

我的问题是 heat.exe 没有命令行开关来将“MultiInstance”属性设置为“yes”(甚至用于设置任意属性)。看来我唯一的办法就是为-t开关提供一个转换 xslt。是否有人已经拥有一个 xslt,它将MultiInstance="yes"在所有收获的输出组件元素上包含一个属性?

如果我没有得到任何答案,我将自己创作一个,并将其作为对这个问题的答案发布。

4

2 回答 2

2

这个如何?我基本上是从第二个线程复制它并修改了几个字符:

<xsl:stylesheet version="1.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:msxsl="urn:schemas-microsoft-com:xslt"
            exclude-result-prefixes="msxsl"
            xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
            xmlns:my="my:my">

    <xsl:output method="xml" indent="yes" />

    <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="@*"/>
            <xsl:attribute name="MultiInstance">
                <xsl:text>yes</xsl:text>
            </xsl:attribute>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

请注意,您可能需要对其进行更多调整,具体取决于您当前用于生成 wix 文件的热参数。

或者,您可以下载 WiX 热源并自己添加参数。理论上应该很容易。

WiX 安装程序:使用 xslt 和 heat.exe 更新属性

于 2013-10-24T15:59:44.237 回答
1

只是在这里分享我的文件,上面提供的文件可能对文件节点有一些问题。

<xsl:stylesheet version="1.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:msxsl="urn:schemas-microsoft-com:xslt"
            exclude-result-prefixes="msxsl"
            xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
            xmlns:my="my:my">

    <xsl:output method="xml" indent="yes" />

    <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 use-attribute-sets='MultiInstanceSet'>
            <xsl:apply-templates select="@*|node()"/>

        </xsl:copy>
    </xsl:template>
    <xsl:attribute-set name="MultiInstanceSet">
      <xsl:attribute name="MultiInstance">yes</xsl:attribute>
    </xsl:attribute-set>

</xsl:stylesheet>
于 2018-01-23T05:15:19.303 回答