2015-06-18 60 views
0

我遇到了一個奇怪的問題與「配置」msi我正在寫WIX中使用XMLConfig檢查,刪除,然後在一個單一的XML文件中創建新的值。WIX XMLConfig不同的根元素名稱

由於我發現WIX我一直在打包很多我們的手動配置過程,所以這是我的第7次或第8次,所以我基本上完成了上述步驟。

雖然我遇到了一個奇怪的情況,但我不確定如何讓WIX理解。

同一文件可以改變它的視情況而定

當第一次安裝根元素名稱:

<DataSet> 
    <SomeStuff /> 
</DataSet> 

如果刪除或更改已安裝程序的「設置」對話框

<NewDataSet> 
    <SomeStuff /> 
</NewDataSet> 

我正在使用VerifyPath來檢查刪除和添加,但當xmlconfig的路徑不在文件中時,它會顯示錯誤,因此即使我有兩組XMLCon無花果每個場景人會明顯錯誤輸出這是不希望

A組分摘錄低於

<Component Id="C_MobileSettings" Guid="" KeyPath="yes"> 
    <CreateFolder Directory="MOBILEINSTALLLOCATION" /> 
    <XmlConfig 
     Id="MobileSettings_Key_Delete" 
     Action="delete" 
     ElementPath="//NewDataSet/GeneralSettings" 
     File="[MOBILESETTINGSPATH]" 
     Name="Key" 
     Node="element" 
     On="install" 
     Sequence="1" 
     VerifyPath="//NewDataSet/GeneralSettings/Key" 
     xmlns="http://schemas.microsoft.com/wix/UtilExtension" 
    /> 
    <XmlConfig 
     Id="MobileSettings_Key_Add" 
     Action="create" 
     ElementPath="//NewDataSet/GeneralSettings" 
     File="[MOBILESETTINGSPATH]" 
     Name="Key" 
     Node="element" 
     On="install" 
     Sequence="1" 
     Value="Product Key" 
     xmlns="http://schemas.microsoft.com/wix/UtilExtension" 
    /> 
</Component> 

這個配置MSI必須能夠在任何點後的軟件安裝無論根部的狀態的運行元素名稱。

這是可能的直WIX或我會不得不寫一個自定義操作?

回答

1

我不相信您需要自定義操作。 XmlConfig::ElementPath是一個XPath,您可以使用|(聯合)運算符來執行影響任一名稱的xml節點的單個操作。

+1

正是醫生所訂購的!像魅力一樣工作。似乎我只是在錯誤的地方尋找答案。猜猜我需要刷新我的XPath知識,因爲接下來會有更復雜的XML配置。謝謝你這麼快速的解決方案,你已經救了我的理智! (至少在接下來的5分鐘內,直到下一個WIX「哪裏有記錄?」時刻) – TofuBug

0

(發佈代表問題作者)

對於其他人誰被這裏發生的原因,是我如何解決了這個用亞當的偉大的建議:

<util:XmlConfig 
    Id="MobileSettings_Key_Create" 
    Action="create" 
    ElementPath="//(NewDataSet | DataSet)/GeneralSettings/Key" 
    File="[MOBILESETTINGSPATH]" 
    Node="value" 
    On="install" 
    Sequence="1" 
    VerifyPath="//(NewDataSet | DataSet)/GeneralSettings/Key" 
    Value="[PRODUCTKEY]" 
/> 

重新包裝可怕的書面第三部分安裝了堅實的一個月後,這是一個很好的轉變有一個解決方案SOMETHING是這個簡單而優雅。禪宗的轉瞬即逝,但禪宗無所不及。

相關問題