Heat.exe无法从64位COM DLL中获取TypeLib信息

时间:2014-05-19 17:40:05

标签: com wix win64

我有一个64位的COM DLL,我想使用heat.exe从中获取typelib信息。但是当我尝试这样做时,我得到错误193(错误的可执行格式)。 heat.exe只有32位,并且不能与64位可执行文件一起使用吗?我在我的机器上发现只有一个版本的heat.exe。

感谢。

5 个答案:

答案 0 :(得分:2)

不幸的是heat.exe确实是32位,因此只能收集32位COM注册:http://wixtoolset.org/issues/1661/

此处讨论了64位heat.exe扩展程序:http://sourceforge.net/p/wix/mailman/message/30541133/,代码可在此处找到:https://wix.codeplex.com/SourceControl/network/forks/roberthyang/NewHeatExtension/latest

答案 1 :(得分:1)

根据您尝试的操作,可能有一个解决方案,如果您只需要添加Win64属性,可以通过candle.exe执行此操作,请参阅here

否则,您可能还发现了一个尚未解决的已知bug

答案 2 :(得分:0)

我有类似的问题,在收集vb6和非.net库时。你可以尝试加热吗?     -scom -o

如果没有解决问题,可以在此处粘贴加热命令。

答案 3 :(得分:0)

在我的情况下,我需要一个单独的包,用于32位和64位COM DLL。使用32位DLL的收获工作适用于64位版本。只需要确保构建配置是64位特定的。

答案 4 :(得分:0)

如果可以让警告流过,并且只有少量文件作为64位DLL,则可以尝试以下操作:

  • 像往常一样运行HEAT.EXE,创建您的输出文件;
  • 编辑文件,并将 SelfRegCost =“ 0” 添加到您需要包括的每个文件元素

示例:

<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

我只需要像我的包中那样管理一个DLL,它就可以工作