Wix heat.exe генерирует неверный фрагмент для dll контекстного меню в 32-битном приложении Windows 7

Итак, у нас есть 32-битный программный пакет, который установлен как на Win XP, так и на Win 7.

Текущая проблема, которую я рассматриваю, заключается в том, что при установке части пакета значения реестра записываются для добавления исполняемого файла из пакета в контекстное меню Windows. Эти значения реестра являются частью фрагмента wix, который генерируется теплом из библиотеки DLL, которая является частью процесса (т. Е. DLL исполняемого файла).

Проблема в том, что, хотя он работает во встроенном Windows XP, в Windows 7 приложение не только НЕ отображается в контекстном меню, но и что-то ломает, так что параметр «Новая папка» удаляется из всех контекстных меню. Удаление приложения не работает, но это можно исправить, добавив параметры реестра с этого сайта: http://social.technet.microsoft.com/Forums/en-IE/w7itprogeneral/thread/97de8a2a-12f2-4381-a409-a78f4ae551cf

Конечно, когда вы устанавливаете новую сборку, она снова стирается, и, как разработчики, мы иногда устанавливаем и удаляем 5-6 сборок в день. Я подтвердил, что это именно те параметры реестра, удалив их из установщика, построив и установив его, а параметр «Новая папка», к счастью, останется на месте.

Итак, мой вопрос: есть ли проблема с генерированием тепла допустимыми значениями реестра для записи для 32-разрядного приложения / dll, которое будет добавлено в контекстное меню в Windows 7? (для полного раскрытия информации, я использую 64-разрядную версию Win7, но у нас была такая же проблема с 32-разрядной версией Win7, но мы не пробовали Vista)


person NaimK    schedule 07.11.2011    source источник


Ответы (1)


Heat просто захватывает ключи реестра, записанные во время вызова DllRegisterServer (). Если вы не получаете ожидаемые ключи реестра, посмотрите на код DllRegisterServer (), чтобы узнать, что он делает. Кроме того, может оказаться более полезным записать ключи реестра один раз, проверить их правильность и больше не использовать heat.exe.

Это мой предпочтительный подход.

person Rob Mensching    schedule 20.02.2012