我使用 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扩展......
答案 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>