InstallShield LE (с Visual Studio 2012) полностью не может обнаружить зависимости
У меня кошмар, пытающийся заставить простой установщик работать в InstallShield LE (тот, который поставляется с VS 2012). Есть все виды проблем, с которыми я могу обойти (например, тот факт, что я больше не могу делать "Перестроить все" без того, чтобы все испортилось - мне нужно просто выгрузить проект InstallShield во время разработки). Но важно то, что когда я собираю свой установщик, он включает неправильную версию различных библиотек DLL (включая как те, которые являются частью моего проекта, так и сторонние, такие как Entity Framework DLL).
"Чистое решение" даже не решило проблему с библиотеками DLL, которые есть в моем решении. Он находил случайную версию где-то на моей машине (в каком-то временном каталоге компилятора) и настаивал на том, чтобы включить ее. В конце концов я исправил это, выполнив поиск в Windows Explorer и удалив каждый найденный файл, но я беспокоюсь, что в следующий раз, когда я сделаю релиз, ему все равно удастся выбрать неправильный файл.
Кроме того, мне нужно иметь обе версии Entity Framework для.NET 4 и.NET 4.5 на моем компьютере, и он выбирает неправильную версию для установки. Я не могу удалить ту, которую не хочу включать.
Какой абсолютно дрянной продукт. Я мог бы "обновить" до полной версии, чтобы посмотреть, решит ли это какую-либо из этих проблем, но мой недавний опыт работы с версией LE заставляет меня когда-либо снова использовать какой-либо из их продуктов.
У кого-нибудь еще были подобные проблемы? Вы нашли решение?
6 ответов
Старый пост, так что, возможно, это может помочь вам или другим людям справиться с этой разъяренной проблемой (при условии, что вы сталкиваетесь с ошибками вроде -6225).
Симптомы:
- Вы можете (пере) построить каждый проект без заминок, включая проект Install Shield
- тем не менее, если вы создаете Решение (из нескольких проектов), ошибки просто появляются
Пытаться:
- в VS 2012 щелкните правой кнопкой мыши свое решение и выберите
Project Build Order
- даже если порядок "выглядит" правильно, продолжайте устанавливать зависимости
- Например, ваш инсталляционный проект зависит от исходного проекта (очевидно, но поскольку этот инструмент "не знает", ему нужна помощь).
Я не уверен, что это решает проблему "неправильных dll" (я не прошел через эту боль...), но предложение проверить результаты проекта могло бы помочь.... вышеупомянутое действительно решило мои проблемы.
Да, я согласен, если он не может даже достичь паритета с VS2010 и ниже, простота использования в проектах по настройке и развертыванию, то это одна из тех еще одной кривой обучения, с которой приходится сталкиваться разработчикам (пустая трата времени). Хотя он не готов назвать это дрянным, у него есть хорошая конфета - даже "ограниченная" версия....
Во всяком случае, я надеюсь, что это помогает....
Обновление 1
Да, я могу официально назвать ISLE Shoddy. Теперь я ужасно испытываю проблему "отсутствующих dll" (забудьте про неправильные dll, они даже не находятся в папке intall, извините за красочный язык, а за WTF??!!). ISLE не может определить правильные зависимости - и я не согласен с предыдущим ответом. Эта проблема не существует со встроенным Setup and Deployment Project
у нас было с VS 2005.
Договорились о комментарии по поводу перемещения MS с головой черепа.
Как только я исправлю эту проблему, я обновлю.
Обновление 2
Мое исправление (если есть лучший способ, пожалуйста, предоставьте ответ).. Все это делается в пользовательском интерфейсе ISLE:
Сканирование на наличие зависимостей - щелкните правой кнопкой мыши основной выход проекта, выберите
Dependencies from scan at build
Вы увидите зависимости, которые вам придется добавить вручную, обозначенные красным значком
Я снял флажок, чтобы избавиться от предупреждения -6248, которое действительно странно, потому что ИМХО это должно быть фатальной ошибкой в сборке - Как эта установка / настройка может работать, если в ней отсутствуют зависимости?? Предупреждение продолжает сборку, но она никогда не сработает!Затем (да) вручную добавьте зависимости, которые вы определили выше...
Кстати, не уверен, если это имеет значение - я начал весь процесс с импорта проекта установки VS 2010 с помощью ISLE (ISLE menu
-> Visual Studio Deployment Project Import Wizard
). Я не уверен, имеет ли это значение на самом деле - re: все еще сможет Dependencies from scan at build
если вы начали с нуля (вместо импорта)?
Вот вам и "прогресс" в установке и развертывании для VS2012...
Надеюсь это поможет!
Недавно я столкнулся с проблемой, которую вы описываете: консольное приложение собирается правильно, с актуальными версиями зависимостей в bin
директории, но в комплекте с InstallShield LE использует старые версии библиотек зависимостей.
Как ты говоришь:
"Чистое решение" даже не решило проблему с библиотеками DLL, которые есть в моем решении. Он находил случайную версию где-то на моей машине (в каком-то временном каталоге компилятора) и настаивал на том, чтобы включить ее.
В моем случае поврежденные файлы находились в кеше динамической компиляции ASP.NET по адресу C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root
а также C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root
Очистка содержимого этих каталогов решила проблему.
Кроме того, я подумал о добавлении действия сборки для автоматического опустошения этих каталогов, но я не мог сделать это автоматически, не получив разрешения на владение.
У каждого инструмента настройки есть свои проблемы. Обратите внимание, что нет инструментов, которые могли бы точно определить зависимости вашего приложения. Лучшее, что может сделать инструмент - это вносить предложения. Вот почему большинство разработчиков установок сами определяют зависимости и вручную включают их в установщик.
Если вас не устраивает InstallShield, вы можете попробовать другой инструмент установки: http://en.wikipedia.org/wiki/List_of_installation_software
Бесплатная версия Advanced Installer включает проект установки Visual Studio, который может помочь.
У меня была проблема с моей DLL. Он брал куда-то постарше. Ничего не было в GAC для этой DLL. Я перепробовал все. Наконец, я просто добавил проклятую вещь вручную (ISLE) в разделе "Файлы", щелкнув правой кнопкой мыши и выбрав "Добавить". Я нашел DLL в моей папке \obj\Release. Затем я просто собрал Release (SingleImage), и все заработало правильно.
Вы можете исправить проблемы с порядком сборки (например, когда вы пытаетесь перестроить решение), щелкнув правой кнопкой мыши решение -> Зависимости проекта -> Выберите проект установки и проверьте проекты, которые он использует. (Проверено в VS2013)
Я ожидал, что проект InstallShield автоматически установит эти зависимости, когда вы выбираете его исходные файлы, но, очевидно, это не так.
Вместо использования экрана установки вы можете опубликовать свой проект, просто щелкнув правой кнопкой мыши по проекту и мастеру публикации, создать исполняемый файл в виде отдельного изображения или независимо от того, что вы выбрали. И, наконец, он позаботится обо всех зависимостях. Так что при установке исполняемый файл создается мастером публикации, чем он автоматически установите все зависимости, такие как.net framework, и если вашему приложению требуется какой-то фреймворк среды выполнения, он предупредит вас об установке.
Вы можете посмотреть на это