Just to follow up on this: In the end the issue was that there were 
dependencies that also needed to be registered in the GAC. Visual Studio was 
masking the process from the developer so we didn't know that these 
dependencies were not being handled correctly. 

So this process of using heat.exe on the dll, adding in the "Assembly='.net'" 
into the <file> element, and using heat.exe on the TLB file (generated via 
regasm /tlb) seems to work. 

-----Original Message-----
From: Nicholas Makin [mailto:nma...@opentext.com] 
Sent: Tuesday, September 08, 2009 5:06 PM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] .net COM registration with heat

Hello,

I am trying to build an installer for a .Net COM dll - and the things seem to 
work until the developer tries to use the COM object. If the developer runs 
regasm and gacutil on the dll then she is then able to use the COM object.

I was under the impression that my MSI installer should have been doing 
everything that gacutil/regasm are doing but there must be something I am 
missing.

My build process uses the following:

#1 use heat on the dll file:

Foo_dll.wxs : .\Foo\Foo.dll
    $(HEAT) file .\Foo\Foo.dll -gg -dr INSTALLDIR -o Foo_dll.wxs

I then open up the file and fix the directory references to match the main 
install wxs. I copy the component reference into the main install wxs.

#2 use heat on the tlb file:

Foo_tlb.wxs : .\Foo\Foo.tlb
    $(HEAT) file .\Foo\Foo.tlb -gg -dr INSTALLDIR -o Foo.wxs

I then open up the file and fix the directory references to match the main 
install wxs. Add Assembly = ".net" to the file tag. I copy the component 
reference into the main install wxs.

I think build the installer and run it.

I have used the following to ensure that heat is picking up the proper registry 
setting for the dll:
Run regasm Foo.dll /codebase /regfile:Foo.reg
Run regasm Foo.dll /codebase /tdl:Foo.tlb

Compared Foo.reg with registry entries created using heat - all seem to be 
compatable.

The component element looks like so:
<File Id="filSOMEID" KeyPath="yes" Assembly=".net" 
Source="SourceDir\Foo\Foo.dll" />

Now I do have to add in Assembly=".net" portion which does seem odd to me, but 
the file does get installed to the GAC once I do.

The TLD file component looks like so:

<File Id="filSOMEID" KeyPath="yes" Source="SourceDir\Foo\Foo.tlb">
    <TypeLib Id="{FFFFFFFF-0000-0000-0000-000000000000}" Description="Foo" 
HelpDirectory="INSTALLDIR"
Language="0" MajorVersion="1" MinorVersion="0">
        <Interface Id="{99999999-0000-0000-0000-000000000000}" Name="_FOO"
ProxyStubClassId="{00020424-0000-0000-C000-000000000046}"
ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
    </TypeLib>
</File>

Which makes no sense to me, but seems to be right.

Can anyone think of a step I may be missing or something that sounds a little 
strange:
Can Heat generate all the same information that regasm does?
Do I need a local copy of the dll or should the one copied to the GAC suffice? 
(that is one major difference when the developer does it on their own - the 
file remains in the install dir)
Does the TypeLib Id have any special requirements (I am using the one generated 
by heat - but something I read made me think that maybe it need to be something 
specific).

Anyway the developer is pretty frustrated with me because they can use the 
regasm/gacutil and get their app to work, but my installer does not install it 
correctly and I have no clue what the difference may be.

Nicholas
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to