我們使用WiX 3.5爲我們的產品之一構建安裝程序。爲簡單起見,我們通過一次重大升級處理版本升級的,就像這樣:WiX - 在主要升級時保留註冊表設置
<MajorUpgrade AllowSameVersionUpgrades="yes" DowngradeErrorMessage="Laterversionfound" />
我們沒有指定的時間表屬性,這意味着RemoveExistingProducts操作應「InstallValidate」後運行 - 這意味着舊版本完全卸載將在安裝新版本之前進行。
我們安裝了一些HKLM註冊表設置,用戶在安裝後必須配置這些設置。由於主要升級會執行完全卸載,然後重新安裝,因此我們正在丟失註冊表中的用戶定義設置。理想情況下,我們需要能夠在升級過程中保持這些。
我的註冊表關鍵部件是這樣的:
<Component Id="regserver" Guid="[guid]">
<RegistryValue Root="HKLM" Key="Software\Our Company\Our Product" Name="Server" Value="" Type="string" KeyPath="yes" />
</Component>
我試過設置的組件爲「yes」的NeverOverwrite屬性但這未能重現鍵的不幸影響 - 大概是因爲它檢查密鑰是否存在之前卸載發生(顯然他們這樣做),然後他們被刪除與卸載,但不會再次重新創建。
我也嘗試設置MajorUpgrade元素上的「RemoveFeatures」屬性來刪除除reg鍵以外的所有內容。儘管安裝了兩個版本的產品,但包含註冊表項的功能屬於舊版本。
我的下一步是嘗試在不同的時間點調度RemoveExistingProducts選項,儘管我期望對我們的一些自定義操作有一定的痛苦。
所以我的問題是,有沒有什麼辦法來實現我們需要的,而不會改變RemoveExistingProducts的計劃?
您能更改原始安裝程序嗎?如果是這樣,您可以使註冊表組件永久,這意味着它不會被卸載。 – 2011-12-20 16:53:40
我是否認爲即使產品被卸載,這也會使設置保持不變?理想情況下,我寧願爲我們的客戶完全清潔卸載 – 2011-12-20 17:48:09