Russian Qt Forum
Ноябрь 27, 2024, 06:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: VC Express 2005 SP1 && Qt 4 deployment.  (Прочитано 12119 раз)
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« : Октябрь 15, 2007, 14:29 »

Привет,
столкнулся с проблемой уже не раз обсуждавшейся, потому делюсь решением.
При компиляции программы компилятором от M$ с установленным сервис паком, столкнулся с тем что программа не запускалась на компьютере без студии, при запуске выводя сообщение, о том что:
Код:
"This application has filed to start because the application configuration is incorrect." и т.д.
В общем известная проблема...

Просмотр зависимостей, дал картину о необходимости установки библиотек из папки:
Код:
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700\
 msvcm80.dll
 msvcp80.dll
 msvcr80.dll

Соответственно я положил эти файлики вручную в папку с программой и она теперь стала запускаться, но начала писать об отсутствии драйвера.
Код:
"Driver not load" 
(я использую PostgreSQL)

Различные варианты с созданием подпакок Microsoft.VC80.CRT и перноса этих фалов туда, не дали результат тоже.

А решение, такое, необходимо скачать файл vcredist_x86.exe (для архитектуры) по адресу:
http://www.microsoft.com/downloads/details.aspx?FamilyID=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=en
Это называется: "Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)"
И установить на целевом компьютере, после чего драйвер становится виден и программа работает корректно.
M$ в очередной раз намудрила, и видимо инсталлятор где-то прописывает много чего ещё, помимо того что копирует необходимые файлы.


Структура программы:
appdir--
-----sqldrivers
--------------qsqlpsql.dll
-----qtcore4.dll
-----qtgui4.dll
-----qtsql4.dll
-----*.dll (все из папки "PostgreSQL\bin")
« Последнее редактирование: Октябрь 15, 2007, 15:31 от Sergey B. » Записан
DmP
Гость
« Ответ #1 : Октябрь 15, 2007, 15:05 »

Код:
"This application has filed to start because the application configuration is incorrect." и т.д.
Такое сообщение выскакивает, когда не хватает файла манифеста - Microsoft.VC80.CRT.manifest или Microsoft.VC80.DebugCRT.manifest, если его положить в папку Windows/System32, то похоже это решает многие проблемы.
« Последнее редактирование: Октябрь 15, 2007, 15:06 от DmP » Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #2 : Октябрь 15, 2007, 15:25 »

Многие, но не эту (с плагином).
Я отписал всё подробно, начиная с первых ступеней подготовки пакета, чтобы не гонять по форумам тех кто первый раз сталкивается с этой проблемой, а собрал всё в одном месте. Чтоб прочитал, сделал так же.

Кстати с MingW таких проблем нет.
Улыбающийся
« Последнее редактирование: Октябрь 15, 2007, 15:30 от Sergey B. » Записан
Вячеслав
Гость
« Ответ #3 : Октябрь 16, 2007, 09:29 »


Кстати с MingW таких проблем нет.
Улыбающийся
Таки тама и манифестов нема Подмигивающий Или уже сделали ? Грустный
Записан
Tonal
Гость
« Ответ #4 : Октябрь 16, 2007, 10:10 »

Можешь добавить, если тебе почему-то с ними веселее. ;-)
Записан
Вячеслав
Гость
« Ответ #5 : Октябрь 16, 2007, 11:04 »

Мне - пофиг Подмигивающий А в форточки оччень редко вылезаю. Хотя сама идея была хорошая(IMHO) - хоть какая-то защита от загрузки левых длл в форточках ... Но реализация "Акуеть" (с) ... особенно веселит , что если на машине нет нужного фреймворка то прога молча _не запускается_ Грустный
Записан
T800
Гость
« Ответ #6 : Октябрь 17, 2007, 00:33 »

Потому что оснавная позиция мелкософта - надо создавать MSI пакеты. Кстати если студия Про ничего качать не надо - этот файлик и многие есть в комплекте дистрибутива (и без него студия то тоже не ставится). Если создаешь пакет установки из самой студии, создав проект Deployment в  том же Workspace и указываешь  выход проекта твоей программы как файл к установке остальное студия добавит автоматически (определив runtime dependencies - "все что нужно для запуска"  - проекта)
Записан
Вячеслав
Гость
« Ответ #7 : Октябрь 17, 2007, 10:52 »

Не "Все что нужно" , а что она может найти Подмигивающий если проект использует внешний плагин не включенный в солюшен - то фиг он будет в msi (если ручками не положешь) .... Так-что все-равно думать надо, как-бы не хотелось M$ от этого отучить (думать) Подмигивающий Подмигивающий
Записан
T800
Гость
« Ответ #8 : Октябрь 17, 2007, 12:50 »

Прошу прощения я солюшн по привычке ворспейсом назвал. Да, это так, если использовать внешние  (чужие)модули, придется проводить исследования. Есть в тулзах старой студии такая программа - Dependencies. Она же есть во всех SDK.  Назначение - посмотреть какие   dll-ки импортирует модуль. Остается только проблема , как узнать какие COM+ объекты используются прошраммой (если код не известен)


З.Ы. Отучить МС не удасться... они идут в этом направлении очень давно. Попробуй запустить сторонний экзешник под Вистой - там операционна "обматерит" пользователя, программу, ее изготовителя, тех, кто ставил антивирус и поставит его (экзешник, не антивирус) в "черный список".  если сможет, еще и в инет нажалуется. Такая вот у них концепция безопасности.
Записан
Вячеслав
Гость
« Ответ #9 : Октябрь 17, 2007, 13:32 »

Прошу прощения я солюшн по привычке ворспейсом назвал. Да, это так, если использовать внешние  (чужие)модули, придется проводить исследования. Есть в тулзах старой студии такая программа - Dependencies. Она же есть во всех SDK.  Назначение - посмотреть какие   dll-ки импортирует модуль. Остается только проблема , как узнать какие COM+ объекты используются прошраммой (если код не известен)


З.Ы. Отучить МС не удасться... они идут в этом направлении очень давно. Попробуй запустить сторонний экзешник под Вистой - там операционна "обматерит" пользователя, программу, ее изготовителя, тех, кто ставил антивирус и поставит его (экзешник, не антивирус) в "черный список".  если сможет, еще и в инет нажалуется. Такая вот у них концепция безопасности.
Dependencies покажет только модули на которые есть прямые ссылки ввиде импорта Подмигивающий А если плаг грузиться в динамике QLibrary или QPluginLoader -  то фиг оно найдет Подмигивающий Это уже AI нужен  Смеющийся Смеющийся
Про думать - я имел ввиду пользователей - хош-не хош , а про внешние модули надо самому помнить и не надеяться что "M$ сам все положит" Подмигивающий
Записан
T800
Гость
« Ответ #10 : Октябрь 17, 2007, 21:14 »

"если ты пользователь, то программа должна быть установлена. Если девелопер - пускай из Visual Studio" - вот в чем их концепция. "А так как программы могут испльзовать разные подверсии этой библиотеки , то она должна лежать в соответствующем месте и привязана в реестре к данной программе. Поэтому для кажной программы в комплекте должен идти пакет установки. Почему перестал работать способ  с укладыванинием их в один каталог с программой? Потому что эти библиотеки содержат привелигированный код да и считаются well known application component,  а следовательно через них возможна атака на систему если они не будут защищены. Теперь их запихивают туда , куда пользователю или сетевой службе доступа нет да еще защищают  с помощью SFС - System File Control (для каталогов программ SFC по умочнанию выключен).

Dependency студии и результаты работы программы Dependency никак не связаны. Студия пользуется метадирективами в файлах проекта и заголовках.
MS не знает ничего  если Тrolltech не прописала мета-директивы в текстах QT для студии.
Там есть такие, которые указывают на то, какие пакеты нужны - например они используются в новых SDK, MFC и ATL и заголовках runtime library - той, самой которой не хватало автору этого треда.
Речь так же идет о статической импорте , COM объектах. конечно, о динамическом импорте придется заботиться программмисту.  Если пакет установки делает другой человек, то скорее стоит прописать нужные модули где-нибудь в заголовках проекта (или задокументировать иным способом).

З.Ы. У меня 2005-я студия создала msi для примера  и включила туда нужные библиотеки. ))
« Последнее редактирование: Октябрь 17, 2007, 21:29 от T800 » Записан
Вячеслав
Гость
« Ответ #11 : Октябрь 17, 2007, 22:04 »

Ну в общем дошли до логического конц IMHO Подмигивающий Есть предложние 1) тему закрыть 2) Начать клепать фак\вики
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #12 : Октябрь 18, 2007, 05:25 »

Wiki!
Записан
Вячеслав
Гость
« Ответ #13 : Октябрь 18, 2007, 07:41 »

+1
Товарищи админы , может реально начать ?
Записан
Lion
Гость
« Ответ #14 : Октябрь 19, 2007, 14:45 »

З.Ы. У меня 2005-я студия создала msi для примера  и включила туда нужные библиотеки. ))
А можно подробнее как создавать msi из студии.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.17 секунд. Запросов: 23.