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

Reply via email to