首页 文章

无法使用WiX注册DLL

提问于
浏览
8

我正在尝试使用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

    我知道这是旧的但我想在这里添加一个答案 - 发生这种情况的原因是因为您尝试注册的DLL是64位dll - 而Heat.exe是32位因此它无法在其地址空间中加载dll . 无论如何,只需指向一个32位版本的DLL来创建wxs文件,你不应该收到该错误 .

  • 1

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

  • 11

    我遇到了与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

相关问题