Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Sergey B. от Октябрь 15, 2007, 14:29



Название: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Sergey B. от Октябрь 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 (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")


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: DmP от Октябрь 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, то похоже это решает многие проблемы.


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Sergey B. от Октябрь 15, 2007, 15:25
Многие, но не эту (с плагином).
Я отписал всё подробно, начиная с первых ступеней подготовки пакета, чтобы не гонять по форумам тех кто первый раз сталкивается с этой проблемой, а собрал всё в одном месте. Чтоб прочитал, сделал так же.

Кстати с MingW таких проблем нет.
:)


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Вячеслав от Октябрь 16, 2007, 09:29

Кстати с MingW таких проблем нет.
:)
Таки тама и манифестов нема ;) Или уже сделали ? :(


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Tonal от Октябрь 16, 2007, 10:10
Можешь добавить, если тебе почему-то с ними веселее. ;-)


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Вячеслав от Октябрь 16, 2007, 11:04
Мне - пофиг ;) А в форточки оччень редко вылезаю. Хотя сама идея была хорошая(IMHO) - хоть какая-то защита от загрузки левых длл в форточках ... Но реализация "Акуеть" (с) ... особенно веселит , что если на машине нет нужного фреймворка то прога молча _не запускается_ :(


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: T800 от Октябрь 17, 2007, 00:33
Потому что оснавная позиция мелкософта - надо создавать MSI пакеты. Кстати если студия Про ничего качать не надо - этот файлик и многие есть в комплекте дистрибутива (и без него студия то тоже не ставится). Если создаешь пакет установки из самой студии, создав проект Deployment в  том же Workspace и указываешь  выход проекта твоей программы как файл к установке остальное студия добавит автоматически (определив runtime dependencies - "все что нужно для запуска"  - проекта)


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Вячеслав от Октябрь 17, 2007, 10:52
Не "Все что нужно" , а что она может найти ;) если проект использует внешний плагин не включенный в солюшен - то фиг он будет в msi (если ручками не положешь) .... Так-что все-равно думать надо, как-бы не хотелось M$ от этого отучить (думать) ;) ;)


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: T800 от Октябрь 17, 2007, 12:50
Прошу прощения я солюшн по привычке ворспейсом назвал. Да, это так, если использовать внешние  (чужие)модули, придется проводить исследования. Есть в тулзах старой студии такая программа - Dependencies. Она же есть во всех SDK.  Назначение - посмотреть какие   dll-ки импортирует модуль. Остается только проблема , как узнать какие COM+ объекты используются прошраммой (если код не известен)


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


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Вячеслав от Октябрь 17, 2007, 13:32
Прошу прощения я солюшн по привычке ворспейсом назвал. Да, это так, если использовать внешние  (чужие)модули, придется проводить исследования. Есть в тулзах старой студии такая программа - Dependencies. Она же есть во всех SDK.  Назначение - посмотреть какие   dll-ки импортирует модуль. Остается только проблема , как узнать какие COM+ объекты используются прошраммой (если код не известен)


З.Ы. Отучить МС не удасться... они идут в этом направлении очень давно. Попробуй запустить сторонний экзешник под Вистой - там операционна "обматерит" пользователя, программу, ее изготовителя, тех, кто ставил антивирус и поставит его (экзешник, не антивирус) в "черный список".  если сможет, еще и в инет нажалуется. Такая вот у них концепция безопасности.
Dependencies покажет только модули на которые есть прямые ссылки ввиде импорта ;) А если плаг грузиться в динамике QLibrary или QPluginLoader -  то фиг оно найдет ;) Это уже AI нужен  ;D ;D
Про думать - я имел ввиду пользователей - хош-не хош , а про внешние модули надо самому помнить и не надеяться что "M$ сам все положит" ;)


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: T800 от Октябрь 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 для примера  и включила туда нужные библиотеки. ))


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Вячеслав от Октябрь 17, 2007, 22:04
Ну в общем дошли до логического конц IMHO ;) Есть предложние 1) тему закрыть 2) Начать клепать фак\вики


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Sergey B. от Октябрь 18, 2007, 05:25
Wiki!


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Вячеслав от Октябрь 18, 2007, 07:41
+1
Товарищи админы , может реально начать ?


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Lion от Октябрь 19, 2007, 14:45
З.Ы. У меня 2005-я студия создала msi для примера  и включила туда нужные библиотеки. ))
А можно подробнее как создавать msi из студии.


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: Вячеслав от Октябрь 19, 2007, 15:34
Solution -> add new project-> setup and deployment
А далее по тексту ж)


Название: Re: VC++ Express 2005 SP1 && Qt 4 deployment.
Отправлено: Sergey B. от Октябрь 20, 2007, 09:35
Только в VC++ Express этого нет.
http://www.microsoft.com/Rus/Msdn/vs/versions.mspx (http://www.microsoft.com/Rus/Msdn/vs/versions.mspx)


Название: Re: VC Express 2005 SP1 && Qt 4 deployment.
Отправлено: T800 от Октябрь 29, 2007, 05:57
 черт а это отдельный продукт - VC Express изолированный от цельной студии...  там почти ничего нет ( дистрибутив - 80 Мб) У тебя даже latform SDK  там на самом деле урезанный (в заголовки не влючено редко используемое) И генератора классов нет - хотя если используешь T он тебе не нужен.