views:

423

answers:

2

My InstallShield installer doesn't appear to register several of its COM DLLs correctly, even though I have refreshed the COM information for them in the installer. If I manually run regsvr32 after installation, everything is fine.

I notice that after installation, I have InprocServer32 values in the registry for my components containing random-looking strings, which I believe are Darwin descriptors, which I understand will override the cleartext path location if present. When I manually run regsvr32 these Darwin descriptors disappear. My current hypothesis is that the information encoded in these descriptors is incorrect, and so when my program tries to instantiate the COM components, it uses the incorrect Darwin descriptor information and fails, even though the cleartext path to the DLLs is correct.

Can anyone shed any light on how I can see if this is the case, decode these descriptors, stop InstallShield from generating Darwin Descriptors, or otherwise fix my installer?

Thankyou in advance!

+1  A: 

I understand the darwin descriptors to be the windows installer service tracking the COM entry points back to the original .MSI (so it can heal the .dll if it is deleted etc). The MSI holds the actual value.

Presumably since you've rebuilt the COM info, have you uninstalled the MSI from your machine and re-installed (so msiexec is not just doing a maintenance install rather thana full install).

Air Benji
A: 

You mean uninstalled the MSI on the machine I'm building the installer on? This is a separate machine to the one I'm installing the installer on, which is a clean Windows XP virtual machine. I haven't uninstalled the MSI from either...I'm not even sure I know how to, although it shouldn't matter on the VM as I'm currently always testing from clean.

NeilDurant