无法使用WiX注册DLL

时间:2012-09-17 16:16:29

标签: dll com wix wix3.5

我正在尝试使用WiX注册DLL。现在我知道并理解我应该使用heat并让它为我提取注册表信息,但是热量似乎失败并显示以下错误消息:heat.exe : warning HEAT5150 : Could not harvest data from a file that was expected to be a SelfReg DLL: C:\Users\seb\Desktop\Development\addin.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\seb\Desktop\Development\addin.dll, error: 193

我环顾四周,发现这篇文章更详细地解释了registering DLLs,但我想尽可能避免自我注册路线。我还看到了下面手动注册DLL的提及,但是我不太了解注册表或COM对象,知道我甚至可以获得CLSID,ProgId以及已经提到的任何其他信息。

如果有人能指出我正确的方向或向我解释我需要做什么才能通过heat运行DLL,我们将不胜感激。

3 个答案:

答案 0 :(得分:11)

我知道这已经过时但是我想在这里添加一个答案 - 之所以发生这种情况,是因为你要注册的dll是64位dll - 而Heat.exe是32位所以它无法在其中加载dll地址空间。无论如何,只需指向一个32位版本的dll来创建wxs文件,你就不会收到该错误。

答案 1 :(得分:1)

这是一个非托管/本机DLL吗? Dependency Walker是否显示任何缺少的依赖项?通常这意味着DllRegisterFunction失败,而Heat无法提取任何数据。解决这个问题,你应该得到很好的XML元。

答案 2 :(得分:0)

我遇到了与Wix heat.exe相同的问题:警告HEAT5150:无法从预期为SelfReg DLL的文件中获取数据。原因是dll无法找到加载依赖项。我想你一定有类似的问题。我运行了Process Monitor工具并应用了过滤器以捕获heat.exe事件。我能够找到问题的根本原因。基本上我必须将所有依赖dll放在我的主dll所在的同一位置。对于你的情况,addin.dll需要指向你的依赖dll的相同位置。

关于此警告的以下博客帮助我找出根本原因。

http://marc.durdin.net/2009/12/case-of-hidden-exception.html