I have the exact same problem with a Out-Of-Process COM server & it
would be absolutely awesome if heat.exe would be able to process these
in the same manner as it does for DLL's & OCX's which have a
DLLRegisterServer entrypoint but I doubt that'll ever happen. I'd much
prefer having the fragment for registering this executable to be the
similar to the rest of my fragments for COM registration as it is much
tidier using TypeLibs & Class ID's & Interfaces than a huge list of
RegistryKeys & RegistryValues.

Just a tip, you can automate step 3 using WiXCop.exe from WiX v3. It
won't fix the hard-coded paths but at least it will save you the trouble
of having to convert all the Registry tags to either RegistryKey or
RegistryValue (again it would be nice if heat.exe would convert .reg to
wix code as it's supposed to be the successor to tallow but I doubt
it'll ever happen & it would be a moot point if heat.exe did the first
thing anyway).


Palbinder Sandher 
Software Deployment and IT Administrator 

T: +44 (0) 141 945 8500 
F: +44 (0) 141 945 8501 
http://www.iesve.com 

**Design, Simulate + Innovate with the <Virtual Environment>**

Integrated Environmental Solutions Limited. Registered in Scotland No.
SC151456 
Registered Office - Helix Building, West Of Scotland Science Park,
Glasgow G20 0SP

Email Disclaimer



-----Original Message-----
From: Arunkumar Viswanathan [mailto:[EMAIL PROTECTED] 
Sent: 11 October 2008 04:29
To: 'General discussion for Windows Installer XML toolset.'
Subject: Re: [WiX-users] Heat and COM executable registry extraction

Phil,

Thanks for your tip. Here is what I did to solve the problem:

1) As Phil suggested I ran RegSpy2 and gathered all the registry
information from the COM Executable and saved it in a .reg file.
2) I used Tallow option to generate a wix file by passing in the .reg
file.
3) Tallow uses <Registry> instead of the newer <RegistryKey> and
<RegistryValue> tags. The older <Registry> key logic causes primary key
errors in the Registry table. Hence I did a very fast search and replace
of the older keys into the newer format. For example, part of the final
output looks like this - 

<RegistryKey Root="HKCR"
Key="Interface\{41A7D761-6018-11CF-9016-00AA0068841E}"
Action="createAndRemoveOnUninstall">
        <RegistryValue Value="DataObjectFiles" Type="string" />
      </RegistryKey>
      <RegistryKey Root="HKCR"
Key="Interface\{41A7D761-6018-11CF-9016-00AA0068841E}\ProxyStubClsid"
Action="createAndRemoveOnUninstall">
        <RegistryValue Value="{00020424-0000-0000-C000-000000000046}"
Type="string" />
      </RegistryKey>
      <RegistryKey Root="HKCR"
Key="Interface\{41A7D761-6018-11CF-9016-00AA0068841E}\ProxyStubClsid32"
Action="createAndRemoveOnUninstall">
        <RegistryValue Value="{00020424-0000-0000-C000-000000000046}"
Type="string" />
      </RegistryKey>
      <RegistryKey Root="HKCR"
Key="Interface\{41A7D761-6018-11CF-9016-00AA0068841E}\TypeLib"
Action="createAndRemoveOnUninstall">
        <RegistryValue Value="{EA544A21-C82D-11D1-A3E4-00A0C90AEA82}"
Type="string" />
        <RegistryValue Name="Version" Value="6.0" Type="string" />
      </RegistryKey>

4) Next I replaced hard coded file paths to MSI friendly ones like
[INSTALLDIR], [SystemFolder]\MSVBVM60.DLL\3 etc.

5) I included the new component fragment where it is necessary and
linked with the feature.

Thanks a lot for all your help.

-Arun

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Wilson,
Phil
Sent: 2008-Oct-09 Thu 12:49 PM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Heat and COM executable registry extraction

If you scroll down here:
http://installsite.org/pages/en/msi/tips.htm
to RegSpy you'll find the source for a tool that works with Dlls and exe
COM servers.

It uses the registry overrides to redirect the registration entries. Exe
servers are handled by running them with /regserver suspended, then
injecting registry redirection, then resuming them to do the
registration to the redirected registry location.

Someone updated it to include typelib information too, that's what
RegSpy2 is.

Phil Wilson

-----Original Message-----
From: Arunkumar Viswanathan [mailto:[EMAIL PROTECTED]
Sent: Thursday, October 09, 2008 4:32 AM
To: 'General discussion for Windows Installer XML toolset.'
Subject: Re: [WiX-users] Heat and COM executable registry extraction

Kamil & Michael, thanks a lot for the information you have provided.

Kamil, I am very interested in trying out your tool. I can use Oleview
and extract the threading model and other default information. Do post
details on where to get your tool and how to use it.

Thanks
-Arun

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Kamil
Mierzejewski
Sent: 2008-Oct-09 Thu 6:01 AM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Heat and COM executable registry extraction

Hi,

I also encountered this problem. My solution was to design a special
tool which scans .tlb files and generates WiX code from them.

details in my comment here:
https://sourceforge.net/tracker/?func=detail&atid=642717&aid=1468663&gro
up_i
d=105970

The tools assumes that classes defined in the tlb are implemented by the
module that holds it. Of course class definitions in tlb lack some
information needed for registration (threading model, progid, etc). The
tool has two options of taking care of this:
1. By passing default threading model, which is assigned to every class
in the tlb.
2. By analyzing custom attributes of that classes (this allows defining
threading model and other attributes as custom attributes in an  idl
file).

The tool can scan .tlb files as well as modules holding tlb resources,
no matter if it's dll or exe.

I've been using it for a long time now without any problems.
If anyone is interested, I can share my work.

Kamil


[EMAIL PROTECTED] writes:
> Hi Arun,
>
> I've been experiencing the same kind of problems and I posted a 
> question
about it recently. See
> the
http://n2.nabble.com/Heat-problem-harvesting-class-from-type-library-td1
3035
54.html
>
> I believe the problem is that for executables (.exe out-of-process COM
Servers) the WiX heat tool
> can only harvest the basic type library-information (linked into it), 
> but
it cannot harvest the
> registration information for the CLSID and ProgID's because that
registration typically is
> hard-coded into the executable (and which normally is executed when it

> is
registreded with a
> "file.exe /regserver" call).
>
> I believe that heat.exe is only harvesting the registry information 
> after
a call similar to
> "regsvr32 file.dll" (i.e. the call to DllRegister expected to be found

> in
the in-process COM
> server's in dlls). Can someone confirm this?
>
> If heat.exe also would call what corresponds to "file.exe /regserver" 
> then
it would probably also
> work for .exe out-of-process COM Servers. However as far as I know 
> .exe's
can choose to register
> differently (not supporting the /regserver), in which case heat would 
> not
be able to harvest the
> information.
>
> What I ended up doing was to manually add the missing information into

> my
WiX source file (.wxs).
>
> Hope this info helps,
> /Michael
>
>
>
>
> information
>
> See
>
> ----------------------------------------------------------------------
> --- 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



------------------------------------------------------------------------
-
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