Heat.exe Cannot Harvest TypeLib Info from a 64-bit

2019-06-20 00:21发布

问题:

I have a 64-bit-only COM DLL that I want to harvest typelib info from, using heat.exe. But when I attempt to do that, I get the error 193 (bad executable format). Is heat.exe 32-bit only, and cannot work with 64-bit executables? I found only one version of heat.exe on my machine.

Thanks.

回答1:

Unfortunately heat.exe is indeed 32-bit and can therefore only harvest 32-bit COM registrations: http://wixtoolset.org/issues/1661/

However 64-bit heat.exe extensions are discussed here: http://sourceforge.net/p/wix/mailman/message/30541133/ and code can be found here: https://wix.codeplex.com/SourceControl/network/forks/roberthyang/NewHeatExtension/latest



回答2:

Depending on what you are trying to do there may be a solution, if you just need to add the Win64 attribute you can do that through candle.exe see here

Otherwise you may also have found a known bug that is unresolved.



回答3:

I have had similar issues, whentrying to to harvest vb6 and non .net libraries. Can you try heat with -scom -o

If that doesn't solve the problem, can you paste your heat command here.



回答4:

In my case I needed a separate package for 32 and 64 bit COM DLLs. Using the harvest from the 32bit DLL worked for the 64bit version. Just needed to make sure the build configuration was 64bit specific.



标签: com wix win64