Wix通过单个XmlConfig插入XML结构

时间:2014-07-01 15:29:41

标签: xml wix

我使用 Wix 3.8 ,我可以使用XmlConfig

成功更新XML .config文件中的值
<util:XmlConfig Id="..."
    File="[INSTALLFOLDER]unity.config"
    Action="create"
    Node="value"
    On="install"
    ElementPath="/configuration/unity/..."
    Value="[SOME_PROPERTY]" />

我的目标是不仅插入文本值,而且插入整个 XML块

我知道我可以使用多个XmlConfig 语句连接 ElementId 属性来构建XML结构。这不适合我。

要插入的实际XML结构仅在安装时定义,因此我无法猜测XmlConfig元素的结构在构建期间应该如何。

我将这个XML结构作为文本添加到[SOME_PROPERTY]中,这实际上是一个有效的XML代码。 如何将其插入.config文件中的现有节点?

一个简单的C#Custom Action的例子适合我,但我想也许有一个标准的方法来做这个像XmlConfig或其他一些Wix扩展......

1 个答案:

答案 0 :(得分:0)

它比你想象的更简单,只需将XML片段作为CDATA部分包含在XmlConfig元素的内容中,即

所以我们假设你有一个类似的结构:

<root>
<child name="test"/>
</root>

然后,您可以执行以下操作,将名为test2的子项添加到父节点&#34; root&#34;。

重要的一点是,在ElementPath中你必须放一个选择父节点的Xpath,你必须省略Value属性,而是把它放在XmlConfig元素的元素体内,如果它是Xml你想插入,你必须把它包装在CDATA部分。

如下所示

<util:XmlConfig Id="..."
    File="[INSTALLFOLDER]unity.config"
    Action="create"
    Node="document"
    On="install"
    ElementPath="//root"
    >
<![CDATA[<child name="test2"/>]]>
</util:XmlConfig>