Установщик завершается с ошибкой «не удалось зарегистрировать» для определенных библиотек DLL - PullRequest
2 голосов
/ 19 марта 2012

Я разработал программу vb6, а затем создаю мастер установки с Visual Studio Interdev.

Я использовал "обходчик зависимостей" и "проводник процессов", чтобы найти недостающие библиотеки DLL, но всегда есть проблема с:

IESHIMS.DLL
WER.DLL
MPR.DLL

Эти dll, показанные обходчиком зависимостей.

А при установке программы на другую машину у меня появляются такие сообщения об ошибках:

uxtheme.dll failed to register
msdatsrc.tlb failed to register etc..

PS: нет проблем на компьютере, где установлена ​​Visual Studio.

Любая идея, чтобы решить эту проблему?

Спасибо

Ответы [ 2 ]

6 голосов
/ 19 марта 2012

Dependency Walker не подходит для устранения проблем с зависимостями VB6. Это работает достаточно хорошо для библиотек DLL, написанных на C или C ++, которые используют неявные зависимости. Хотя он не идет в ногу со временем и имеет проблемы с библиотеками DLL, которые хранятся в параллельном кэше Windows или загружаются с задержкой. Задержка загрузки - это то, что генерирует предупреждения для ieshims.dll и др.

VB6 использует COM, который динамически загружает библиотеки DLL с помощью LoadLibrary (). Вы никогда не увидите такую ​​зависимость обратно в зависимости, если не используете опцию профиля. Такие библиотеки DLL возвращаются через реестр, причина, по которой вам нужно было написать установщик и поработать с regsvr32.exe.

Вы должны быть очень осторожны, когда пишете такие установщики, VB6 старый и может зависеть от компонентов операционной системы, которые обновлялись много раз с 1998 года. Как и uxtheme.dll, важная DLL-библиотека операционной системы который реализует визуальные стили. То, что ваш установщик перезаписал существующий на компьютере пользователя, это, конечно, катастрофически. Хотя он, вероятно, защищен Windows через функцию защиты файловой системы, что было добавлено в качестве меры противодействия неработающим установщикам.

Дать надлежащие советы здесь сложно, кроме «не навреди». Коммерческий установщик, такой как InstallShield или Wise (который мне тогда понравился) - лучший способ избежать стрельбы из ноги клиента. Я уверен, что они по-прежнему поддерживают установку VB6. Microsoft делает готовый установщик доступным для VB6, который устанавливает все основные компоненты среды выполнения vb6. Вы можете скачать его здесь .

0 голосов
/ 20 марта 2012

Вы должны ВСЕГДА проверять и проверять любые зависимости, которые, по вашему мнению, необходимы вашему приложению.Все файлы, которые вы упомянули, являются системными DLL и НЕ ДОЛЖНЫ распространяться.

Для приложения VB6 вам нужны базовые среды выполнения и любые библиотеки DLL, на которые вы явно ссылаетесь / используете, если и только если у вас есть разрешение от авторов этих файлов.Библиотеки DLL и инструкции о правильной процедуре и месте их установки.

Для стандартных файлов OCX, предоставляемых Microsoft, их обычно просто нужно скопировать в папку system32 и зарегистрировать.Смотрите redist.txt в корне вашей установки Visual Studio для получения более подробной информации.

...