4

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)

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

4

1 回答 1

3

AFAIK这只能通过直接从注册表中删除条目来“卸载”。您将能够在 下找到该组件HKEY_CLASSES_ROOT\Installer\Components。组件键名是重新打包的 guid。根据here,可以按照以下规则计算打包的GUID:

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

  • 从标准 GUID 中删除花括号和分隔破折号
  • 以相反的顺序在标准 GUID 中写入前三组十六进制字符
  • 在标准 GUID 中的第四组和第五组中每两个字符切换一次

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

另一种选择是给组件一个新的 guid 并保持旧的原样。

于 2014-06-16T11:55:09.800 回答