Невозможно зарегистрировать DLL с помощью WiX

Я пытаюсь зарегистрировать DLL с помощью WiX. Теперь я знаю и понимаю, что я должен использовать 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

Я посмотрел вокруг и нашел этот пост, который объясняет немного более подробно о регистрации DLL, но я бы хотел избежать маршрута саморегистрации, если это возможно. Я также вижу упоминание о ручной регистрации библиотек DLL ниже, но я не слишком хорошо разбираюсь в реестре или COM-объектах, чтобы хорошо знать, где я мог бы получить CLSID, ProgId и любую другую упомянутую информацию.

Если кто-то может указать мне правильное направление или объяснить мне, что мне нужно сделать, чтобы запустить DLL через heat это будет с благодарностью.

3 ответа

Я знаю, что это старый, но я хотел добавить здесь ответ - причина, по которой это происходит, заключается в том, что dll, которую вы пытаетесь зарегистрировать, является 64-битной dll - и Heat.exe является 32-битной, поэтому он не может загрузить dll в свое адресное пространство. В любом случае, просто укажите 32-битную версию библиотеки DLL для создания файла wxs, и вы не получите эту ошибку.

Это неуправляемая / нативная DLL? Показывает ли Dependency Walker какие-либо недостающие зависимости? Обычно это означает, что DllRegisterFunction не работает, и Heat не может извлечь какие-либо данные. Исправьте эту проблему, и вы должны получить хорошую мета XML.

У меня возникла та же проблема с 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?

Другие вопросы по тегам