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