我目前正在維護一個具有用戶定義的註冊表項加載的軟件。 我試圖做一個WIX安裝程序,保持這些註冊表鍵與至少 數量的可維護性。我決定讓每個值都在一個註冊表鍵中,它是自己的組件,允許我使用WIX的NeverOverwrite ='yes'功能。我認爲這樣做會允許次要升級(例如REINSTALL = ALL REINSTALLMODE = vomus),如果它存在,則創建該值,否則將其保留。但是,這似乎並沒有發生在我的真實世界的例子(功能沒有條件)。文件告訴我我應該很好。下面是幾樣:註冊表值在執行Wix次要升級後消除
<Product Id="UNIQUE_KEY" Name="Spotbox Manager" Language="1033" Version="1.0.1.0" Manufacturer="Company" UpgradeCode="MY_UPGRADE_KEY">
<Package Platform="x64" Id="*" InstallerVersion="200" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" />
<Upgrade Id="MY_UPGRADE_KEY">
<UpgradeVersion OnlyDetect='yes' Property='SELFFOUND'
Minimum='1.0.1' IncludeMinimum='yes'
Maximum='1.0.1' IncludeMaximum='yes' />
<UpgradeVersion OnlyDetect='yes' Property='NEWERFOUND'
Minimum='1.0.1' IncludeMinimum='no' />
</Upgrade>
這是註冊表項的實際片段
<Component Id="cmp171812fcc51a4b91ad386fa8c27c9b89" Directory="TARGETDIR" Guid="COMPONENT_GUID" Win64='yes' NeverOverwrite='yes'>
<RegistryKey Key="SOFTWARE\Company" Root="HKLM">
<RegistryValue Name="Value" Value="1100797834" Type="integer" KeyPath='yes'/>
</RegistryKey>
</Component>
<Component Id="cmp211639bff9694f029028a22cb0bb9687" Directory="TARGETDIR" Guid="NEW COMPONENT GUID" Win64='yes' NeverOverwrite='yes'>
<RegistryKey Key="SOFTWARE\Company" Root="HKLM">
<RegistryValue Name="Country Code" Value="1" Type="integer" KeyPath='yes' />
</RegistryKey>
</Component> ...
請注意:關鍵是這兩個值這似乎仍然吹走用戶的價值時相同我嘗試改變它。
您究竟如何設置GUID?並且,嘗試在NeverOverwrite旁邊啓用永久。 – 2013-03-22 20:47:06
我收到來自Resharpers nguid snippet命令的guid。我不明白Permanant會如何處理。我是否將它與NeverOverwrite一起使用或者替代? – 2013-03-22 21:32:15
有。如果我知道爲什麼(在你的情況下),這將是一個答案,而不是一個評論。 – 2013-03-22 21:34:12