[英]using wix revert back to the previous registry value
我有一個簡單的wix應用程序,它可以修改現有的注冊表值。 在卸載過程中,注冊表應設置為先前/原始值。 因此,我將這些現有值存儲到臨時注冊表中。
我可以將這些臨時注冊表值讀入一個屬性,但是在卸載過程中如何將該屬性設置為注冊表?
這是我的媒體資源,它將從臨時注冊表中讀取原始值:
<Property Id="TEMPVALUE" Secure="yes">
<RegistrySearch Id="FindExistingMySetting"
Root="HKLM"
Key="Software\SampleApp"
Name="TempSampleKey"
Type="raw"/>
</Property>
因此,在卸載過程中如何使用此“ TEMPVALUE”屬性設置注冊表。 我認為可能需要某種自定義操作。 我是這個概念的新手,因此示例非常有用。
我通過使用自定義操作來做到這一點。 我認為否則是不可能的,因為無法在卸載時安裝組件(據我所知)。
例如,我有一個名為“ SaveOriginalRegistryValue”的自定義操作,用於保存原始值,並在注冊表項名稱的末尾附加“ _Original”。
然后,我執行另一個名為“ RestoreOriginalRegistryValue”的自定義操作,該操作將原始鍵放回去,然后從注冊表中刪除“ _Original”鍵。
在wix安裝程序定義中,我有
<CustomAction Id="CA_SaveOriginalRegistrySettings" BinaryKey="ClientCustomActionsDLL" DllEntry="SaveOriginalRegistrySettings" Execute="deferred" />
<CustomAction Id="CA_RestoreOriginalRegistrySettings" BinaryKey="ClientCustomActionsDLL" DllEntry="RestoreOriginalRegistrySettings" Execute="deferred" />
<InstallExecuteSequence>
<Custom Action="CA_SaveOriginalRegistrySettings" After="WriteRegistryValues">NOT UPGRADINGPRODUCTCODE AND NOT REMOVE~="ALL" AND NOT WIX_UPGRADE_DETECTED</Custom>
<Custom Action="CA_RestoreOriginalRegistrySettings" After="RemoveRegistryValues">NOT UPGRADINGPRODUCTCODE AND REMOVE~="ALL"</Custom>
</InstallExecuteSequence>
因此,“保存自定義”操作將在首次安裝產品時進行,而不是在升級時進行。
恢復自定義操作將僅在完全刪除產品時運行,而不是在我們通過升級刪除舊版本時運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.