Какова разница между зависимостями и вручную добавить dll/ocx в установщик 6 против?
Я использую 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 ответа
Не гарантируется, что все эти библиотеки будут присутствовать в системе, на которой устанавливается программное обеспечение. Поэтому они должны быть включены в ваш установщик. Оттуда у вас есть два варианта.
Вы можете установить их в системные папки Windows или в папку приложения. Разница в том, что если вы устанавливаете их в папку приложения, вы можете настроить их на XP и Vista, чтобы разные версии программного обеспечения с разными версиями компонентов можно было запускать и запускать рядом. Установка их в системную папку сломает любую более старую версию, которая зависит от более старой версии компонентов.
Установка в папку приложения редко не работает, если компонент зависит от других компонентов, которые не могут быть обновлены. Когда это происходит, это обычно происходит с библиотеками Microsoft. Они поправились за эти годы.
Вы можете прочитать больше о проблемах, связанных с параллельным исполнением здесь
Наконец, зависимости должны быть в вашем установщике, чтобы они были зарегистрированы в реестре Windows. В отличие от большинства сборок.NET любое приложение ActiveX/COM должно иметь зарегистрированный компонент, чтобы использовать его, даже если вы используете для этого типы CreateObject и Variant.
Я признаю, что весь процесс уникален и является одним из источников для историй об DLL Hell. Начните со статьи MSDN, воспользуйтесь википедией и, конечно, задайте дополнительные вопросы здесь.
Обычно у вас не должно быть папки "dlls" в папке приложения для обычного пакета установщика, но здесь задействовано много факторов (частные стандартные DLL, Reg-Free COM и т. Д.). Да, зависимости включаются (если вы не исключаете их). У каждого из них должно быть свойство, определяющее, где они устанавливаются в целевых системах.
В этом списке также есть несколько компонентов, которые либо не распространяются таким образом, поскольку они являются системно-зависимыми компонентами системы, компонентами MDAC или не лицензированы для повторного распространения (например, fm20.dll).
К сожалению, это пример типа пакета, который может привести непосредственно к DLL Hell для систем ваших пользователей. Исправить это может означать исследование каждого компонента MS в статьях MS KB, чтобы определить, что можно или нужно распространять и как.
Развертывание может быть грязным делом, чтобы получить право.