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

末鹿安然 提交于 2019-12-08 17:24:45

问题


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.




回答5:


If you can let the warnings flow, and you have just a very small number of files as 64-bits DLL, you can try the following:

  • run HEAT.EXE as usual, creating your output file;
  • Edit the file, and add SelfRegCost="0" to each file element you need to include

Example:

<Directory Id="dir..." Name="MyDLL">
  <Component Id="cmp..." Guid="...">
    <File Id="fil..." KeyPath="yes" 
     Source="...\MyDLLFile.dll" 
     SelfRegCost="0" />
  </Component>
</Directory>

https://wixtoolset.org/documentation/manual/v3/xsd/wix/file.html

I had to manage just one DLL like that in my package, and it worked



来源:https://stackoverflow.com/questions/23743920/heat-exe-cannot-harvest-typelib-info-from-a-64-bit-com-dll

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!