我正在維護一箇舊應用程序,其中用戶配置存儲在註冊表中。卸載時,它是留下的。我現在正在使用WiX重新編寫安裝程序。在註冊表中設置默認值(如果沒有)
安裝程序應該在註冊表中添加一個默認值(如果沒有),否則 現有值應單獨保留。
我在想如何在WiX中做到這一點。而我提出的解決方案有點麻煩:
<Property Id="MY_PROPERTY">
<RegistrySearch Root="HKLM" Key="SOFTWARE\MyProduct" Name="MyProperty" Type="raw" />
</Property>
<CustomAction Id="ca.SetDefaultValue" Property="MY_PROPERTY" Value="DefaultValue" />
<InstallExecuteSequence>
<Custom After="RegistrySearch" Action="ca.SetDefaultValue">Not MY_PROPERTY</Custom>
</InstallExecuteSequence>
<Component Id="c.Registry">
<RegistryValue Root="HKLM" Key="SOFTWARE\MyProduct" Name="MyProperty" Type="string" Value="[MY_PROPERTY]" />
</Component>
所以做一個註冊表搜索找到舊的價值。如果未設置,則使用計劃的自定義操作將其設置爲默認值。然後創建值「照常」。
任何人都可以想出一個更流暢的方式來做到這一點?
請注意,我不能使用像Installed
這樣的方便變量,因爲值可能在那裏,被先前的,現在卸載的版本留下。
謝謝恩,我欣賞它! – 2012-07-10 23:41:17
你有一個地方的「屬性優先」的示例實現嗎?我現在正在與OP一樣苦苦掙扎,並且希望能夠完全實現您的建議。 – 2014-09-10 06:41:49