10 Stimmen

Anpassen des KeyPath-Elements bei Verwendung von wix heat.exe zum Sammeln mehrerer Dateien

Ich habe eine Menge Dateien zu ernten in einem pro Benutzer installieren Projekt in wix.

Ich habe heat.exe verwendet, um die Datei zu sammeln, aber jede Datei in einer Komponente hat ihre eigene Keypath-Eigenschaft, während meine Dateien in "Anwendungsdaten" kopiert werden, so dass ein Registrierungsschlüssel unter HKCU als KeyPath verwendet werden muss, also muss ich jedes Element in der XML-Datei ändern.

Kann das mit heat.exe gemacht werden? Ich habe Tausende von Dateien zu ernten, es ist schrecklich, es manuell zu beheben.

7voto

Ujjwal Singh Punkte 4740

Verwenden Sie diese xslt zum Anpassen KeyPath für Knoten, die Unterknoten haben.

<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>

abgeleitet von @KirillPolishchuk 's Antwort https://stackoverflow.com/a/8035049/483588

1voto

Yan Sklyarenko Punkte 30506

Soweit ich weiß, unterstützt Heat diese Funktion nicht sofort. Sie können jedoch eine XSL-Vorlage auf die heat-Ausgabe anwenden und die endgültige wxs-Datei nach Ihren Wünschen anpassen. Siehe -t: Schalter von heat.exe für weitere Details.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X