WiX:将永久组件恢复为永久状态

时间:2014-06-16 10:50:50

标签: wix uninstall permanent

我已经标记了一个用Permanent="yes"属性编写注册表项的组件。后来我删除了这个属性,但组件仍然认为它是永久性的。卸载日志说:

Disallowing uninstallation of component: {XXXXXXXX-3955-519D-AC73-F6832147D388} since another client exists

在Windows注册表中搜索该GUID不会产生任何结果。如何清理“Windows Installer内存”?

Permanent属性的文档说

The installer registers an extra system client for the component in the Windows Installer registry settings (which basically just means that at least one product is always referencing this component)

但是可以找到并卸载这个“额外系统客户端”吗?

1 个答案:

答案 0 :(得分:3)

AFAIK这只能是"未安装"直接从注册表中删除条目。您将能够在HKEY_CLASSES_ROOT\Installer\Components下找到该组件。组件键名是重新打包的guid。根据{{​​3}},可以按照以下规则计算打包的GUID:

  

可以通过将变换应用于标准来获得打包的GUID   GUID。此转换执行以下操作:

     
      
  • 删除花括号并将破折号与标准GUID
  • 分开   
  • 以反向顺序在标准GUID中写入前三组十六进制字符
  •   
  • 在标准GUID
  • 中切换第四和第五组中的每两个字符   

请记住首先进行注册备份以防万一,并在尝试安装非永久性软件包之前将已安装的文件移开。

另一种选择是为组件提供一个新的guid,并保持原有状态。