Heat.exe: 64-bit .dll fails to be converted to a 64-bit .msi
Asked Answered
N

1

1

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.

Natatorial answered 16/12, 2014 at 14:20 Comment(4)
It is not a bug. Error 193 is "bad executable file format". Given that this is a 64-bit DLL, you'll need to use the 64-bit version of Heat.exe. Not doing so inevitably causes this error, mixing bitness is not possible.Tabbie
Is there any link from which I could download heat.exe 64-bit?Natatorial
Searching the web I found thisNatatorial
It turns out heat.exe still doesn't handle 64-bit COM binaries properly (December 2017). See this answer for some context, explanations and some proposed solutions: https://mcmap.net/q/104154/-registering-a-cpp-dll-into-com-after-installation-using-wix-msi-installer.Ary
A
-1

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.

Awl answered 16/12, 2014 at 14:24 Comment(5)
I had found this discussion so I just wanted to make sure that the workaround I did was valid.Natatorial
Run depends.exe and got: Warning: At least one delay-load dependency module was not found. Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.Natatorial
Seems that the following DLLs are missing: API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL API-MS-WIN-CORE-WINRT-L1-1-0.DLL API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL DCOMP.DLL IESHIMS.DLL MFPLAT.DLLNatatorial
could this be the cause of heat.exe warnings and error?Natatorial
Seeing this is an open source project, maybe you could post the DLL somewhere for me to play with?Awl

© 2022 - 2024 — McMap. All rights reserved.