Dir*_*mar 15 registry wix uninstall
我想声明安装后存在某个注册表值,所以我添加了以下组件:
<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>
Run Code Online (Sandbox Code Playgroud)
在安装之前可能已经设置了键/值.但是,我希望将值设置为我的特定值,即它将被我的值覆盖.
我现在的问题是,卸载我的产品时总会删除此值.但是,如果我的安装程序添加了值,我只希望删除该值.如果我的安装程序刚刚修改了该值,则应恢复之前的值(或者,如果不可能,则我的值应保持不变).
请注意,卸载时不会删除密钥本身.这似乎工作正常,因为我Action="create"在RegistryKey元素上指定.
是否有类似的设置RegistryValue可以创建值,但不能在安装时删除它?
更新:HKCR下的两个注册表项都是机器范围的settinge,即它们来自注册表的HKLM\SOFTWARE\Classes分支.
Wim*_*nen 25
通过使用Component元素的NeverOverwrite属性,可以确保仅在注册表项不存在时才安装组件.从wix文档中NeverOverwrite:
如果此属性设置为"yes",则如果组件的密钥路径文件或密钥路径注册表项已存在,则安装程序不会安装或重新安装该组件.
您可能还需要KeyPath在Registry元素上设置属性,yes以使其明确表明注册表项是组件键路径.
如果您确实想要设置注册表值,即使它已经存在,但您不想在卸载时删除它,那么您可以使用PermanentComponent元素的属性.
| 归档时间: |
|
| 查看次数: |
7671 次 |
| 最近记录: |