4

I've marked a component which writes a registry key with Permanent="yes" attribute. Later I removed this attribute, but component still thinks it is permanent. Uninstall log says:

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

Searching Windows Registry for that GUID gives no result. How can I clean up "Windows Installer memory"?

Documentation to Permanent attribute says

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)

but where this "extra system client" can be found and uninstalled?

Roman
  • 4,531
  • 10
  • 40
  • 69
  • Don't mess with the registry database for MSI. Is this setup live? Or is it seen only on your computer? Often problems like these are seen on development computers where you end up with weird installation states every now and then. Try it on a clean virtual machine to determine if the behavior is seen by others. – Stein Åsmul Jun 16 '14 at 12:37
  • This is on my dev machine only – Roman Jun 16 '14 at 14:32

1 Answers1

3

AFAIK This can only be "un-installed" by directly deleting the entry from the registry. You will be able to find the component under HKEY_CLASSES_ROOT\Installer\Components. The component keyname is the guid re-packed. According to here the packed GUID can be worked out by following these rules:

A packed GUID can be obtained by applying a transform to a standard GUID. This transform performs the following operations:

  • removes the curly braces and separating dashes from a standard GUID
  • writes the first three groups of hexadecimals characters in a standard GUID in reverse order
  • switches every two characters in the fourth and fifth group in a standard GUID

Remember to take a reg backup first just in case and also to move the installed files out of the way before trying to install the non-permanent package.

The other alternative is to give the component a new guid and just leave old one as-is.

Community
  • 1
  • 1
caveman_dick
  • 6,302
  • 3
  • 34
  • 49
  • Thanks a lot. After converting GUID to packet one I found appropriate installer component in registry and removed it. – Roman Jun 16 '14 at 12:40
  • 1
    'The component keyname is the guid re-packaged.' - Which GUID? I guess you mean the component marked as permanent. In which case I have two Server 2008 R2 machines, one simply doesn't have the 'Components' key, the other doesn't contain the transformed GUID. Any ideas? – Russell Horwood Sep 04 '14 at 08:52
  • 2
    @NineTails comment applied to me as well. I found permanent component information in a different place: `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\`. See here for more details: https://installpac.wordpress.com/2008/03/31/packed-guids-darwin-descriptors-and-windows-installer-reference-counting/ – N Jones Sep 28 '16 at 17:48