Какова разница между зависимостями и вручную добавить dll / ocx в vs installer 6? - PullRequest
0 голосов
/ 20 ноября 2008

Я использую vs установщик, чтобы собрать установочный пакет для моего приложения vb6. и проблема в том, что я вижу, что в проводнике проекта есть список зависимостей, прикрепленных к моему exe-файлу.

альтернативный текст http://img505.imageshack.us/img505/9696/croppercapture259lr8.png

и в файловой системе на дереве дерева целевой машины я могу фактически сохранить dll / ocx в папке или в самой папке системы Windows [левое окно].

альтернативный текст http://img101.imageshack.us/img101/9224/croppercapture251qm1.png

так что я не понимаю ... есть ли разница? если я просто установил зависимости и не добавил dll или ocx в папку или в папку win sys, dll тоже автоматически копируется?

Ответы [ 2 ]

1 голос
/ 20 ноября 2008

Не гарантируется, что все эти библиотеки будут присутствовать в системе, в которой устанавливается программное обеспечение. Поэтому они должны быть включены в ваш установщик. Оттуда у вас есть два варианта.

Вы можете установить их в системные папки Windows или в папку приложения. Разница заключается в том, что если вы устанавливаете их в папку приложения, вы можете настроить их на XP и Vista, чтобы разные версии программного обеспечения с разными версиями компонентов можно было запускать и запускать рядом. Установка их в системную папку сломает любую более старую версию, которая зависит от более старой версии компонентов.

Установка в папке приложения редко не работает, если компонент зависит от других компонентов, которые не могут быть обновлены. Когда это происходит, это обычно происходит с библиотеками Microsoft. Они поправились за эти годы.

Подробнее о проблемах, связанных с параллельным выполнением, вы можете прочитать здесь

Наконец, зависимости должны быть в вашем установщике, чтобы они были зарегистрированы в реестре Windows. В отличие от большинства сборок .NET любое приложение ActiveX / COM должно иметь зарегистрированный компонент, чтобы использовать его, даже если вы используете для этого типы CreateObject и Variant.

Я признаю, что весь этот процесс уникален и является одним из источников для историй об DLL Hell. Начните со статьи MSDN, воспользуйтесь википедией и, конечно, задайте дополнительные вопросы здесь.

0 голосов
/ 17 января 2009

Обычно у вас не должно быть папки «dll» в папке приложения для обычного пакета установщика, но есть много факторов (частные стандартные DLL, Reg-Free COM и т. Д.). Да, зависимости включаются (если только вы не исключаете их). У каждого из них должно быть свойство, определяющее, где они устанавливаются в целевых системах.

У вас также есть ряд компонентов в этом списке, которые либо не распространяются таким образом, поскольку они являются системно-зависимыми компонентами системы, компонентами MDAC или не лицензированы для повторного распространения (например, fm20.dll).

К сожалению, это пример типа пакета, который может привести непосредственно к DLL Hell для систем ваших пользователей. Исправить это может означать исследование каждого компонента MS в статьях MS KB, чтобы определить, что можно или нужно распространять и как.

Развертывание может быть грязным делом, чтобы получить право.

...