Glad you got this worked out. In my case, the problem was that I wasn't specifying ALLUSERS=1, so I was inadvertently doing a per-user install instead of a per-machine install. When the Windows service (running as LocalSystem) tried to instantiate one of the COM objects, it couldn't find the registration for it because it was registered in the CLSID branch of HKEY_CURRENT_USER, not HKEY_LOCAL_MACHINE.
Interestingly, ProcMon (the successor to RegMon) was no help here, as all of the registration calls were being sent to HKEY_CLASSES_ROOT, which does not differentiate between which elements are going to the user hive and which to the local machine hive. Dumping the registry and comparing was the only way I could find the problem. -----Original Message----- From: Troy Howard [mailto:[EMAIL PROTECTED] Sent: Wednesday, October 01, 2008 2:32 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] COM registration weirdness Ok, I found a process that works... First, I had to explicitly add: <InstallExecuteSequence> <UnregisterClassInfo Sequence="2700" /> <UnregisterProgIdInfo Sequence="2900"/> <UnregisterTypeLibraries Sequence="2300"/> <RegisterClassInfo Sequence='4600' /> <RegisterProgIdInfo Sequence='4800' /> <RegisterTypeLibraries Sequence='5500' /> </InstallExecuteSequence> then for each .net com dll, i ran heat against it to generate a wxs. I then fixedup those wxs files in the following manner: 1. Wrap the Class/ProgID/etc tags inside the File tag so that class/@server gets set 2. Update the registry values that referred to mscoree.dll so that they each have a unique id in the Id attribute. That combination get me functioning .Net COM DLLs, and now that I fully understand what's happening, it makes sense. The default sequence doesn't include the com registration actions that read the class table/etc. So those have to be added. The heat output doesn't nest the class tags in the file tag, so server attribute doesn't know what it's target is. The registry values for mscoree.dll are in conflict with the autogenerated ones made form the class tag, because they both use autogenerated ids, which are a hash of componentId, root, key, and name... And so they need to be differentiate by assigning a unique id. I'm quite relieved I got it worked out. Thanks, Troy On Tue, Sep 30, 2008 at 9:51 PM, Troy Howard <[EMAIL PROTECTED]> wrote: > It's both. > > The application is written in VB6. It uses COM DLLs written in various > languages, including C++, VB6, and .NET. The installer needs to be able to > register all of these things. > > The non-.Net COM DLLs seem to be doing alright with the SelfRegCost > attribute applied, but now the .Net DLLs are having trouble. I've tried > various ways to get them working. > > What I'm currently looking at is the RegisterClassInfo/ProgID/TypeLib > actions. I opened the MSI up in ORCA, and realized that they are not in my > InstallExecuteSequence table. That makes sense why it wasn't working with > Class/Progid etc elements in the components. The action was never getting > called that dealt with those things. I assumed those actions would be > included, and that I didn't to explicitly add them. I'm going to give it a > try with the "correct" methodology again, this time with the correct actions > in the sequence and see if that does the trick. If so, I can get rid of the > self registration stuff, AND the duct tape batch file full of regasm calls. > > Conveniently, re-ghosting the test box and building the installer take > about the same amount of time.. >sigh< > > This application is a beast, and the installer has to tame it. What a > project.... At least I have a nice view of downtown Portland at night from > the 11th floor of this building. > > Thanks, > Troy > > > > On Tue, Sep 30, 2008 at 8:10 PM, Richard <[EMAIL PROTECTED]> wrote: > >> >> In article <[EMAIL PROTECTED]>, >> "Troy Howard" <[EMAIL PROTECTED]> writes: >> >> > So, in my efforts to resolve the .Net COM issues, [...] >> >> Earlier, this thread was talking about registering a VB6 control. >> >> Now you're talking about registering a .NET assembly for COM interop. >> >> So which is it? >> >> I've registered .NET assemblies for COM interop with no problems by >> taking the output of /regfile. >> -- >> "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download >> <http://www.xmission.com/~legalize/book/download/index.html<http://www.x mission.com/%7Elegalize/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 ------------------------------------------------------------------------- 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