【问题标题】:Wix insert XML structure by single XmlConfigWix 通过单个 XmlConfig 插入 XML 结构
【发布时间】:2014-09-18 15:07:04
【问题描述】:

我使用 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 块

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

要插入的实际 XML 结构仅在安装时定义,因此我无法猜测 XmlConfig 元素的结构在构建时应该是什么样子。

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

一个简单的 C# 自定义操作的例子很适合我,但我想也许有一种标准的方法可以做到这一点,比如 XmlConfig 或其他一些 Wix 扩展......

【问题讨论】:

    标签: xml wix


    【解决方案1】:

    它比您想象的要简单,只需将 XML sn-p 作为 CDATA 部分包含在 XmlConfig 元素的内容中,即

    假设你有这样的结构:

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

    然后您可以执行以下操作,将名为 test2 的子节点添加到父节点“root”。

    重要的部分是在 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 2014-05-05
      • 1970-01-01
      相关资源
      最近更新 更多