我想要在安装后断言某个注册表值存在,所以我添加了以下组件:
<Component Id="RegistryEntryContextMenuOdt" Guid="4BA5BA24-4F65-4BDF-99EB-CB4B947F31A9" DiskId="1" KeyPath="yes">
<RegistryKey Id="RegKeyOdt" Root="HKCR" Action="create" Key=".odt">
<RegistryValue Type="string" Value="openDocument.WriterDocument.1" />
</RegistryKey>
</Component>
键/值可能在安装前已经设置好了。但我希望该值被设置为我的特定值,也就是说,它将被覆盖为我的值。我的问题现在是,当我的产品被卸载时,这个值总是被删除。然而,如果它是由我的安装程序添加的,我只希望删除该值。如果我的安装程序只是修改了该值,则应恢复先前的值(或者,如果不可能恢复,则我的值应保持不变)。
请注意,键本身在卸载时不会被移除。这似乎是正常工作的,因为我在RegistryKey元素上指定了Action="create"。
是否有类似于RegistryValue的设置,可以创建值但不在安装时删除它?
更新:HKCR下的两个注册表键都是全局设置,即它们来自注册表的HKLM\SOFTWARE\Classes分支。