@Demetrio95

Как развернуть(deployment) Qt приложение на windows?

Здравствуйте, с вашего позволения - зайду с далека. Спасибо.

Писал я себе, значит, приложение, не зная бед, пока не задумался о развёртывании.

Сам пользуюсь linux, но параллельно, пока я писал, приложение тестировал друг на своей windows, у него так же установлен QtCreator + Библиотеки Qt 5.3.1 + MinGW.

Собрались. Скомпилировали на Release. Кое-как подобрали зависимости, Dependency Walker - оказался слишком сложным, поэтому подбирали, методом тыка( на файл :) ), пока приложение не стало просить qt platform plugin. Нагуглил вот эту статью на хабре. Сделал так же как у автора статьи. Начала выскакивать такая вот ошибка:
Ya_qDqCub5A.jpg
Психанув, друг закинул в папку с exe'шником все библиотеки, какие только нашёл, приложение заработало однако радовались не долго, начали удалять из папки библиотеки, ища тем самым ту из за которой оно "вдруг" заработало, в итоге в папке остались ровно те же файлы что и были ранее, но приложение продолжало работать - магия! :D
Скинули знакомому, разумеется, та же ошибка что и ранее.

Опытным путём выяснили что ошибка выскакивает на этапе инициализации QApplication.
Исходник тут.

Список библиотек которые мы подобрали:
  • qwindows - platform plugin
  • qsqlite - sqlplugin
  • icudt52
  • icuin52
  • icuuc52
  • libgcc_s_dw2-1
  • libstdc++-6
  • libwinpthread-1
  • Qt5Core
  • Qt5Gui
  • Qt5Sql
  • Qt5Widgets
  • Qt5Xml
  • Вопрос задан
  • 5598 просмотров
Решения вопроса 1
EXL
@EXL
Энтузиаст
Вы неправильно развертываете плагины, они должны располагаться в каталоге с программой в поддиректориях.

Структура проекта, который будет запускаться на других компьютерах должна быть такой:

Current Directory/
	|
	+-platforms/
	|	|
	|	+-qwindows.dll
	|
	+-sqldrivers/
	|	|
	|	+-qsqlite.dll
	|
	+-DatabaseAnime.exe
	|
	+-Qt5Core.dll
	|
	+-Qt5Gui.dll
	|
	+-Qt5Sql.dll
	|
	+-Qt5Widgets.dll
	|
	+-icudt52.dll
	|
	+-icuin52.dll
	|
	+-icuuc52.dll
	|
	+-libgcc_s_dw2-1.dll
	|
	+-libstdc++-6.dll
	|
	+-libwinpthread-1.dll

И ещё несколько советов.
1. Если ваш проект не использует QtWebkit, вы можете пересобрать библиотеку Qt 5.3.1, без библиотеки icu, тогда ваше приложение "похудеет" на 27 MB.
2. Опять же, если вы не используете QtWebkit, вы можете собрать Qt 5.3.1 статически, получив единый испольнительный файл без всяких внешних DLL-библиотек и плагинов, который можно сжать upx'ом и получить exe-файл приемлемых размеров (~3-5 MB).

Подробнее про развертывание можно прочитать в официальной документации.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
savostin
@savostin
Еще один программист
Не считайте это ответом, т.к. сам только что нашел:
https://github.com/WPN-XM/qt-mini-deploy
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы