Windows 使用wix恢复到以前的注册表值
我有一个简单的wix应用程序,可以修改现有的注册表值。 卸载期间,注册表应设置为上一个/原始值。 因此,我将这些现有值存储到一个临时注册表中 我可以将这些临时注册表值读取到属性中,但如何在卸载期间将此属性设置为注册表 这是我的属性,它将从临时注册表读取原始值:Windows 使用wix恢复到以前的注册表值,windows,wix,wix3.5,wix3.7,wix3.6,Windows,Wix,Wix3.5,Wix3.7,Wix3.6,我有一个简单的wix应用程序,可以修改现有的注册表值。 卸载期间,注册表应设置为上一个/原始值。 因此,我将这些现有值存储到一个临时注册表中 我可以将这些临时注册表值读取到属性中,但如何在卸载期间将此属性设置为注册表 这是我的属性,它将从临时注册表读取原始值: <Property Id="TEMPVALUE" Secure="yes"> <RegistrySearch Id="FindExistingMySetting" Root="HK
<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>
未升级ProductCode且未删除~=“全部”且未检测到WIX\u升级
不升级ProductCode并删除~=“全部”
因此,当这是第一次安装产品而不是升级时,保存自定义操作将被取消
只有在完全删除产品时,恢复自定义操作才会运行,而在升级时删除旧版本时,则不会运行