我使用Wix3.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#自定义操作的例子将适合我,但我想也许有一种标准的方法来做这个,像XmlConfig或其他一些Wix扩展.
发布于 2014-09-18 07:07:04
它比您想象的更简单,只需将XML片段作为CDATA部分包含在XmlConfig元素的内容中,即
因此,假设您有一个结构,如:
<root>
<child name="test"/>
</root>然后,您可以执行以下操作,将名为test2的子节点添加到父节点"root“。
重要的是,在ElementPath中,您必须放置一个XPath来选择父节点,并且您必须省略Value属性,而是将它放在XmlConfig元素的元素主体中,如果要插入它,就必须将它包装在CDATA部分中。
就像下面这样
<util:XmlConfig Id="..."
File="[INSTALLFOLDER]unity.config"
Action="create"
Node="document"
On="install"
ElementPath="//root"
>
<![CDATA[<child name="test2"/>]]>
</util:XmlConfig>https://stackoverflow.com/questions/24514069
复制相似问题