Richard This has gone off topic a bit but yes I have done complex c/c++ registrations and have monitored what happens when com is registered and it all made sense until I monitored a VB6 DLL.
For example, it always seems to rewrite this (among many many more): Key: HKCR\CLSID\{D5DE8D20-5BB8-11D1-A1E3-00A0C90F2731}\InProcServer32 Value="C:\Windows\system32\MSVBVM60.DLL" Which I think is part of the VB runtime and I certainly wouldn't want my install to remove it. My untested theory is that when you call DllRegisterServer on a VB6 DLL it either calls DllRegisterServer on MSVBVM60.dll or the code from it is embedded into the VB6 dll. The key issue here is what do you need to exclude when registering a VB6 DLL or is it possible to monitor it so we find the key information. Can you recommend a registry monitoring tool that works for VB6 DLL? Neil -----Original Message----- From: Richard [mailto:[EMAIL PROTECTED] Sent: 01 October 2008 16:22 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] COM registration weirdness In article <[EMAIL PROTECTED]>, "Neil Sleightholm" <[EMAIL PROTECTED]> writes: > All regsvr32 does is call DllRegisterServer on the DLL, what happens in = > here is voodoo! It is perfectly legal to d anything you want in this = > call and is the reason why self registration is frowned upon. Actually, no, its not perfectly legal to do anything you want in DllRegisterServer. You are *only* supposed to do COM registration there. Yeah, if you put other code in there, it will run. But that is not "legal" in terms of how you are supposed to implement this entry point into the DLL. > I know a = > VB6 DLL is just doing standard COM stuff but it is way more complicated = > that any COM I have ever done in C++ [...] I'm guessing that means you've never done dispinterfaces in C++ or used other attributes of COM that are used by VB6. VB6 supports late binding on its COM servers, so there is a lot of infrastructure there to support dispinterfaces, Invoke, etc. > of things to make binary compatibility work. There are also references = > back to the VB runtime. I'm not saying it is not possible to make it = > work by just writing registry entries but I have never got it to work, = > hence setting self reg (which I assume just calls DllRegisterServer) = > works for me. =20 The way to gather all the registry entries is to use a registry capture tool to capture all the changes made to the registry when regsvr32 is run on the DLL. -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://www.xmission.com/~legalize/book/download/index.html> Legalize Adulthood! <http://blogs.xmission.com/legalize/> ------------------------------------------------------------------------ - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users