Heat.exe: 64-bit .dll fails to be converted to a 6

2019-09-07 04:56发布

I tried to generate a 64-bit FireBreath MSI installer using heat.exe but got the following output:

heat.exe : warning HEAT1108 : The command line switch 't:' is deprecated. 
Please use 't' instead.
heat.exe : warning HEAT5150 : Could not harvest data from a file that was 
expected to be  a SelfReg DLL: 
C:\Users\firebreath-master\buildPlugin\bin\Release\myPlugin64.dll. 
If this  file does not support SelfReg you can ignore this warning. 
Otherwise, this error detail may  be helpful to diagnose the failure: 
Unable to load file:
C:\Users\firebreath- master\buildPlugin\bin\Release\myPlugin64.dll, error: 193

In order to generate the 64-bit .msi I copied the MyPlugin_auto.wxs that was generated from the 32-bit .dll, and build again using the 64-bit .dll and the MyPlugin_auto.wxs that was copied previously. 64-bit msi was generated without errors, I installed it, test it and it works, but I would like to ask if it is a better way to get over the heat.exe bug.

1条回答
Root(大扎)
2楼-- · 2019-09-07 05:33

Heat is telling you that it saw a Dll with the DllRegisterServer() function exposed and that it failed to harvest any COM information. This typically means that the DLL is missing dependencies and that DllRegisterServer() failed to run correctly during the harvesting.

I'd take a look at the DLL using Depends and look for missing dependencies. Put those DLL's into the directory and try harvesting again.

查看更多
登录 后发表回答