簡體   English   中英

使用wix還原回以前的注冊表值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM