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

Reply via email to