WiX在主要升级期间保留注册表,但在卸载时删除
我希望在MSI主要升级期间保留所有注册表值(全部包含在单个注册表项中),但我希望在卸载应用程序时删除这些值(与往常一样) 我相信我需要使用来实现这一点,将值单独读取到属性 我理解这可以通过使用以下标记来实现:WiX在主要升级期间保留注册表,但在卸载时删除,wix,windows-installer,Wix,Windows Installer,我希望在MSI主要升级期间保留所有注册表值(全部包含在单个注册表项中),但我希望在卸载应用程序时删除这些值(与往常一样) 我相信我需要使用来实现这一点,将值单独读取到属性 我理解这可以通过使用以下标记来实现: <Property Id="EXISTINGAPIKEY"> <RegistrySearch Id="name_of_dword" Root="HKLM" Key="Software\SomeCompany\SomeApp" Name="api
<Property Id="EXISTINGAPIKEY">
<RegistrySearch Id="name_of_dword"
Root="HKLM"
Key="Software\SomeCompany\SomeApp"
Name="api_key"
Type="raw" />
</Property>
我现在已将HKLM:\Software\SomeCompany\SomeApp\api\u key
的值保存到名为EXISTINGAPIKEY
的属性中
下一步是在升级完成后,但在服务(由软件包安装/更新)启动之前,将此值写回注册表
因此,问题是:
很有可能是我想得太多了 实际上,您可以创建一个自定义操作,该操作将仅在卸载时删除带有值的注册表项,而在主要升级期间不执行任何操作。另一个选项是为带有注册表项和值的注册表项和值设置
neverwrite
(如果您在安装程序中进行了管理),谢谢@PavelAnikhouski,我甚至不知道从哪里开始自定义操作(我只是一个PowerShell家伙)。我将尝试在包含注册表项的组件上使用neverwrite
,然后还原@PavelAnikhouski这不是我想要的,我会在有机会的时候更新这个问题(再次感谢!)事实上,你可以创建一个自定义操作,只在卸载时删除带有值的注册表项,而在主要升级期间不做任何事。另一个选项是使用注册表项和值为设置neverwrite
(如果您在安装程序中管理它)谢谢@PavelAnikhouski,我甚至不知道从哪里开始自定义操作(我只是一个PowerShell家伙)。我将尝试在包含注册表项的组件上使用NeverOverwrite
,然后还原!@PavelAnikhouski这不是我想要的,我会在有机会时更新问题(再次感谢!)