2014-01-29 48 views
0

我們使用wix在安裝期間修改xml。我們需要爲文件添加一個xml元素列表。 列表示例:使用wix將可變數量的元素添加到xml文件

<Item> 
    <Address>[email protected]</Address> 
</Item> 
<Item> 
    <Address>[email protected]</Address> 
</Item> 

現在,我們希望這個特定的節點下添加到XML文件。

我們如何在wix中做到這一點?

我們已經使用XmlFile來修改xml的其他部分,我們可以使用這個還是我們必須使用自定義操作?

回答

0

您可以使用XMLFIle元素本身來創建所需的節點。您應該在XMLFILE節點中使用以下屬性。

行動= 「的createElement」

創建在ElementPath指定的元素下的新元素。在這種情況下Name屬性是必需的,並指定新元素的名稱。將createElement指定爲操作時,Value屬性不是必需的。如果值屬性被設置,這將導致新元素的文本值設置

例如:我們希望安裝程序的設置節點下添加新節點:

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

您應該具備以下您威克斯腳本中實現這一點:

<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

+0

的問題是,我們不是k現在添加多少個元素。這由用戶在安裝程序GUI中輸入。我認爲你的建議只有在你知道元素的確切數量時纔有效。但是設置最大數量的元素是一個想法... – Julius

+0

我不知道,因爲這個問題沒有明確地提出。 WIX的foreach循環(檢查迭代語句部分)在這個鏈接http://wixtoolset.org/documentation/manual/v3/overview/preprocessor.html BUt我認爲在你的情況下,會更容易創建一個自定義操作來做工作。 – Isaiah4110

+0

你說得對,我改了標題。 – Julius