使用wix heat.exe获取多个文件时自定义KeyPath项

时间:2011-02-10 18:01:11

标签: wix

我在wix中的每个用户安装项目中收集了大量文件。

我使用heat.exe来收集文件,但是一个组件中的每个文件都有自己的keypath属性,而我的文件将复制到“app data”,所以它必须使用HKCU下的注册表项作为其KeyPath,所以我必须更改XML文件中的每个项目。

可以通过heat.exe完成吗?我有数以千计的文件要收获,手动修复它很糟糕。

2 个答案:

答案 0 :(得分:6)

使用此xslt为具有子节点的节点自定义KeyPath项。

<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:Wix/wix:Fragment/wix:ComponentGroup/wix:Component'>
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:attribute name="KeyPath">
            <xsl:text>no</xsl:text>
            </xsl:attribute>
            <xsl:apply-templates select="node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

源自@KirillPolishchuk的回答https://stackoverflow.com/a/8035049/483588

答案 1 :(得分:1)

据我所知,热量不支持这种开箱即用的功能。但是,您可以将XSL模板应用于热量输出,并按照您希望的方式调整最终的wxs文件。有关更多详细信息,请参阅-t:switch of heat.exe。