2013-04-12 104 views
2

我剛開始使用WiX的是我爲我的現有應用程序的安裝框架。該應用程序具有一個App.Config文件,用於控制各種客戶特定的設置。大多數這些設置都是內部修改的,並且不是用戶可控制的。有WiX的升級配置文件有丟失物品

這樣一個配置文件的一個例子是:

[...snip] 
<applicationSettings> 
    <setting name="DatabaseConnectionString" serializeAs="String"> 
     <value>Data Source=localhost;Initial Catalog=CustomersDatabase;Persist Security Info=True;Integrated Security=True</value> 
    </setting> 
</applicationSettings> 
[snip...] 

當應用程序的新版本交付,它將有一個股票configuation文件,其中包括任何新的應用程序設置:

[...snip] 
<applicationSettings> 
    <setting name="DatabaseConnectionString" serializeAs="String"> 
     <value>Data Source=localhost;Initial Catalog=NonProductionDatabase;Persist Security Info=True;Integrated Security=True</value> 
    </setting> 
    <setting name="NewConfigItem" serializeAs="String"> 
     <value>ConfigDetails</value> 
    </setting> 
</applicationSettings> 
[snip...] 

我想設置我的WiX安裝程序,在升級過程中創建一個合併的App.Config,使得現有的設置不變,但新的配置項插入其默認值:

[...snip] 
<applicationSettings> 
    <setting name="DatabaseConnectionString" serializeAs="String"> 
     <value>Data Source=localhost;Initial Catalog=CustomersDatabase;Persist Security Info=True;Integrated Security=True</value> 
    </setting> 
    <setting name="NewConfigItem" serializeAs="String"> 
     <value>ConfigDetails</value> 
    </setting> 
</applicationSettings> 
[snip...] 

但是,我不希望安裝程序必須事先知道配置選項是什麼;我只是想讓它掃描現有的文件,並從安裝程序中添加新的選項(如果找不到)。

這可能嗎?

回答

1

是的,你需要編寫一個自定義操作讀取現有的XML文件。然後,我建議根據讀取的數據將臨時記錄添加到XmlConfig表中作爲described in this question

+0

雖然我不害怕(好吧,也許有點)使用C++通過你所引用的文章中提到的WcaAddTempRecord()方法添加臨時記錄的,我寧願使用託管語言。是否有一個可以執行此操作的.NET庫調用,或者是否必須P /調用此庫? - 沒關係!也許我應該在我開始提問之前閱讀整篇文章。 :) – Greenknight

+0

簡短的答案是DTF,也是WiX工具集的一部分。 :) –