使用wix将可变数量的元素添加到xml文件中

时间:2014-01-29 12:13:18

标签: xml wix burn

我们在安装期间使用wix修改xml。我们需要将一个xml元素列表添加到文件中。 示例列表:

<Item>
    <Address>some@address.com</Address>
</Item>
<Item>
    <Address>someother@address.com</Address>
</Item>

现在我们要将其添加到特定节点下的xml文件中。

我们怎么能在wix中做到这一点?

我们已经使用XmlFile来修改xml的其他部分,我们可以使用它还是我们必须使用自定义操作?

1 个答案:

答案 0 :(得分:0)

您可以使用XMLFIle元素本身来创建所需的节点。您应该在XMLFILE节点中使用以下属性。

动作=&#34; createElement&#34;

在ElementPath中指定的元素下创建一个新元素。在这种情况下,Name属性是必需的,并指定新元素的名称。将createElement指定为操作时,不需要Value属性。如果设置了Value属性,则会设置新元素的文本值

例如:我们希望安装程序在设置节点下添加新节点:

<settings>   
      <add key="a_key" value="a_value">key_item
        <inside>inside_item</inside>   
      </add> 
</settings>

您应该在wix脚本中使用以下内容来实现此目的:

<util:XmlFile Id='XmlSettings1' File='[INSTALLDIR]settings.xml'
    Action='createElement' Name='add' ElementPath='//settings' Sequence='1' />
  <util:XmlFile Id='XmlSettings2' File='[INSTALLDIR]settings.xml'
    Action='setValue' Name='key' Value='a_key' ElementPath='//settings/add' Sequence='2' />
  <util:XmlFile Id='XmlSettings3' File='[INSTALLDIR]settings.xml'
    Action='setValue' Name='value' Value='a_value' ElementPath='//settings/add' Sequence='3' />
  <util:XmlFile Id='XmlSettings4' File='[INSTALLDIR]settings.xml'
    Action='setValue' Value='key_item' ElementPath='//settings/add' Sequence='4' />
  <util:XmlFile Id='XmlSettings5' File='[INSTALLDIR]settings.xml'
    Action='createElement' Name='inside' ElementPath='//settings/add' Sequence='5' />
  <util:XmlFile Id='XmlSettings6' File='[INSTALLDIR]settings.xml'
    Action='setValue' Value='inside_item' ElementPath='//settings/add/inside' Sequence='6' />

XMLFILE EXample XMLFILE Element