2011-02-10 7 views
5

私は、1人のユーザインストールプロジェクトでたくさんのファイルをwixに収めています。複数のファイルを収穫するためにwix heat.exeを使用するときにKeyPath項目をカスタマイズする

私はheat.exeを使ってファイルを収集しましたが、1つのコンポーネントの各ファイルには独自のkeypathプロパティがあります。私のファイルは "app data"にコピーされるので、HKCUのレジストリキーをKeyPath、 XMLファイルの各項目を変更する必要があります。

heat.exeで実行できますか?私は収穫するために何千ものファイルを持っていますが、手動で修正するのは恐ろしいことです。

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

更新属性 –

答えて

1

私が知る限り、熱はこのアウトオブボックスをサポートしていません。しかし、熱出力にXSLテンプレートを適用し、最終的なwxsファイルを好みの方法で調整することができます。詳細は、heat.exeの-t:switchを参照してください。

+0

おかげでヤン、私に情報をくれますか?私の問題を解決することができますか?もっと教えてくれますか?私は正式な文書で答えを見つけることができません。 –

+0

heat.exeのヘルプテキストを参照してください。 -t:transform.xsltを指定することができ、その変換では最初にheat.exeによって生成されたXMLの変更を行います。たとえば、あなたのケースでは、コンポーネント要素に "一致"するテンプレートを作成し、それぞれにレジストリキーを追加します(要件が正しく分かっている場合)。しかし、出力XMLの責任はあなたのものであることを理解する必要があります。そして、それはXSLT変換言語の少なくとも基本的な知識を必要とします... –

4

xsltを使用して、子ノードを持つノードのKeyPathアイテムをカスタマイズします。 http://stackoverflow.com/questions/8034798/wix-installer-using-xslt-with-heat-exe-to-:ここ@KirillPolishchukの答えhttps://stackoverflow.com/a/8035049/483588

関連する問題