Что делает развертывание успешным для некоторых пользователей и неудачным для других? - PullRequest
2 голосов
/ 13 января 2010

Я пытаюсь развернуть приложение Visual C ++ (разработанное с помощью Microsoft Visual Studio 2008), используя проект установки и развертывания. После установки пользователи на некоторых целевых компьютерах после запуска исполняемого файла приложения получают следующее сообщение об ошибке: «Это приложение не удалось запустить из-за неправильной конфигурации приложения. Переустановка приложения может решить проблему ». Другой пользователь после установки сможет правильно запустить приложение. Я не могу найти основную причину этой проблемы, несмотря на то, что трачу несколько часов на файлы справки Visual Studio и онлайн-форумы (большинство публикаций относятся к 2006 году). У кого-нибудь в Stack Overflow есть предложение? Заранее спасибо. Дополнительные подробности приведены ниже.

Приложение использует FLTK 1.1.9 для библиотеки GUI, а также некоторые библиотеки Boost 1.39 (regex, lexical_cast, date_time, math).

Я убедился, что пытаюсь развернуть версию выпуска (не версию отладки) приложения. Библиотека времени выполнения в настройках генерации кода - многопоточная DLL (/MD).

Обходчик зависимостей myapp.exe перечисляет следующие библиотеки DLL: wsock32.dll, comctl32.dll, kernel32.dll, user32.dll, gdi32.dll, shell32.dll, ole32.dll, mvcp90.dll, msvcr90.dll .

В проекте установки и развертывания я добавляю в файловую систему на целевом компьютере следующие библиотеки DLL: fltkdlld.dll и папку с именем Microsoft.VC90.CRT с msvcm90.dll, msvcp90.dll, mcvcr90.dll и Microsoft .VC90.CRT.manifest.

Процесс установки на целевых компьютерах, получающих сообщение об ошибке, требует сначала установить .Net Framework 3.5.

Есть предложения? Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 20 января 2010

У меня была похожая проблема после обновлений безопасности ATL в прошлом году. Моему приложению требовалась более поздняя версия библиотек времени выполнения C ++, чем проект развертывания.

Попробуйте запустить Центр обновления Windows на целевых машинах после установки или загрузите и установите последний (28 июля 2009 г.) последний распространяемый пакет C ++.

http://support.microsoft.com/?kbid=973551

Это решило проблему для меня. Я еще не исправил проект развертывания.

1 голос
/ 13 января 2010

Добавьте распространяемый Visual C ++ в проект развертывания и обязательно запустите Setup.exe вместо MSI при установке. Это вызовет загрузчик VCRedist, чтобы убедиться, что на вашем ПК есть эти кусочки перед установкой вашего приложения.

Dependency Walker показывает только статические (время соединения) зависимости - он не может знать о динамических зависимостях, таких как COM-объекты.

...