Помогите с установкой ActiveX? Объединение модулей - Windows Vista и Windows 7 - PullRequest
1 голос
/ 08 апреля 2010

Я создаю установщик элемента управления ActiveX в VS2008, в котором для установки используются модули слияния CRT и MFC. Когда мой элемент управления пытается зарегистрироваться в Windows 7, происходит сбой.

Dependency Walker говорит, что мне не хватает зависимостей mfc90u.dll, msvcr90.dll и msvcp90.dll при попытке зарегистрировать мой элемент управления, и установка не удалась. Должны ли модули слияния позаботиться об этом? Мой выходной OCX регистрируется с опцией vsdrpCOMSelfReg. Из того, что я читаю на других форумах, это может быть не самый лучший метод, что мне следует попробовать на этом этапе?

Установка отлично работает на Windows XP.

Обновление от 08.08.2010:

Изменилось на vsdrpCOM, и установка прошла (не удивительно), однако впоследствии msvcr90.dll не был найден. Я думал, что это было обработано модулем слияния для CRT (microsoft_vc90_crt_x86.msm)? В Windows XP Dependency Walker находит его в Windows / System32, а не в папке SxS, как я ожидал. В Windows 7 его просто нет. Должен ли я сам положить msvcr90.dll в Windows / System32? Это не похоже на это.

Обновление от 20.04.2010:

Похоже, что Dependency Walker находит msvcr90.dll в зависимости самого элемента управления на верхнем уровне, хотя msvcp90.dll и mfc90u.dll оба имеют неявные / перенаправленные зависимости и для msvcr90.dll, и они не могут быть решено в зависимости ходок. Элемент управления, однако, регистрируется нормально и выполняет загрузку этих библиотек. Это то, что можно игнорировать?

1 Ответ

1 голос
/ 08 апреля 2010

Два необходимых вам модуля: - Microsoft_VC90_MFC_x86.msm - Microsoft_VC90_CRT_x86.msm

Для 64-битного приложения вы должны использовать - Microsoft_VC90_MFC_x86_64.msm - Microsoft_VC90_CRT_x86_64.msm

К сожалению, саморегистрация вызывает много проблем, поэтому вам нужно вручную добавить необходимые записи реестра в проект установки. (Инструмент «heat» из WiX обеспечивает действительно простой способ сбора этой информации, хотя, если вы написали DLL, вы должны уже знать необходимые записи). Реальная проблема с саморегистрацией состоит в том, что, если это терпит неудачу, то установка умирает. Наиболее очевидная проблема заключается в том, что если вашей DLL требуются дополнительные модули для успешного завершения самостоятельной регистрации, и они устанавливаются одновременно , вы не можете гарантировать, что система найдет их для самостоятельной регистрации для завершения.

...