使用WIX还原回先前的注册表值



我有一个简单的WIX应用程序,可修改现有注册表值。在卸载期间,应将注册表设置为以前的/原始值。因此,我将这些现有值存储到临时注册表中。

我可以将这些临时注册表值读为属性,但是如何在卸载过程中将此属性设置为注册表?

这是我的属性,它将从临时注册表中读取原始值:

<Property Id="TEMPVALUE" Secure="yes">
  <RegistrySearch Id="FindExistingMySetting"
                  Root="HKLM"
                  Key="SoftwareSampleApp"
                  Name="TempSampleKey"
                  Type="raw"/>
</Property>

因此,我应该如何使用此" tempvalue"属性在卸载期间设置注册表。我认为可能需要采取某种自定义行动。我是这个概念的新手,所以样本真的很有帮助。

我通过使用自定义操作来做到这一点。我认为否则不可能,因为没有办法在卸载上安装组件(我知道(。

作为一个示例,我有一个称为" saveoriginalRegistrue"的自定义操作,可以保存原始值,其中注册表密钥名称附加到其名称的末尾。

然后i另一个称为" RestoreOriginalRegistrue"的自定义操作将原始密钥放回,然后从注册表中删除" _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>

因此,保存自定义操作将是第一次安装产品而不是升级时。

还原自定义操作只有在完全删除产品时,而不是在升级时删除较旧版本时进行。

相关内容

  • 没有找到相关文章

最新更新