Название: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 20, 2020, 08:08 Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе?
Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 20, 2020, 08:46 http://www.dependencywalker.com/
Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 20, 2020, 09:12 http://www.dependencywalker.com/ спасибо, dependencywalker почти справился.... из требуемых 7 библиотек показал 6. Не показал libwinpthread-1.dllНу и не показал platforms/qwindows.dll и imageformats/qico.dll ps windeployqt наоборот перестраховывается, собирает всё что нужно и не нужно. при ручной компановке 19 Мб, винплой делает 43 Мб. Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: kuzulis от Март 20, 2020, 10:06 > Ну и не показал platforms/qwindows.dll и imageformats/qico.dll
И не покажет, т.к. это динамически загружаемые плагины Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 20, 2020, 10:49 И не покажет, т.к. это динамически загружаемые плагины и что? как это мне поможет?Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: kambala от Март 20, 2020, 12:26 1) поставить чистую винду в виртуалке
2) потестировать приложение Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: ssoft от Март 20, 2020, 16:43 Внедрите в приложение код
Код
и вызовите где-нибудь Код
в консоли увидите список зависимостей. Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: ViTech от Март 20, 2020, 17:33 Утилиты типа Process Hacker (https://ru.wikipedia.org/wiki/Process_Hacker) много интересного о процессах выдают. В том числе список модулей.
Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: Авварон от Март 20, 2020, 17:36 Я просто оставлю это тут https://doc.qt.io/qt-5/windows-deployment.html
Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 23, 2020, 08:16 Я просто оставлю это тут https://doc.qt.io/qt-5/windows-deployment.html Про это уже сказано, что не работает. См выше.Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 23, 2020, 12:55 Внедрите в приложение код Спсибо за полезный совет. Сделал. Увидел много чего.... из нужного (т.е. из того чего нет в голой винде) увидел 7 требуемых дополнительных *.dll. Не показал platforms/qwindows.dll и imageformats/qico.dll... в консоли увидите список зависимостей. Значит на 2020 пока что по старинке, в рукопашную, через виртуалку и тест в голой винде ((( Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: Авварон от Март 23, 2020, 14:00 Я просто оставлю это тут https://doc.qt.io/qt-5/windows-deployment.html Про это уже сказано, что не работает. См выше.Не работает что именно? Там огромная статья и по факту пока все предложения в ней тоже есть. Ладно, раз мы любим цитировать доку, предложу еще вариант - собрать Qt статически! Шутки шутки, но в статье есть список дллок которые они ставят. qwindows.dll и qico.dll - это плагины. Плагины. ПЛАГИНЫ. Ни одна тулза вам не покажет плагины потому что приложение к ним не линкуется. Только разработчик приложения знает какие плагины ему нужны, а какие нет. Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 23, 2020, 14:46 Ни одна тулза вам не покажет плагины потому что приложение к ним не линкуется. "Process Hacker" показал qwindows.dll , который плагин и который "обычный" разработчик "не использует" Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 23, 2020, 14:55 Не работает что именно? Я же писал что ИМЕННО не работает в windeployqt. Посмотрите выше..... windeployqt собирает всё что нужно и не нужно. За чем мне то, что не нужно? Можно и ебз windeployqt всю папку Qt/bin скопировать и не париться.Цитировать qwidnows.dll и qico.dll - это плагин. Плагин. ПЛАГИН. В контексте Задача тривиальная: выкатить программу в продакшин. Есть ехе, что нужно ещё? Какие файлы? Ни какие библиотеки и модули, а какие файлы? Конечному пользователю по барабану qico.dll - это плагин или модуль? Ему нужно рабочее приложение. Пока что проверяю на чистой винде.... как советует kambala. Цитировать Ни одна тулза вам не покажет плагины вот на этом можно было закончить эту тему.Цитировать Только азработчик приложения знает какие плагины ему нужны, а какие нет. От куда?Цитировать предложу еще вариант - собрать Qt статически! не вариант.Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 23, 2020, 15:01 Ни одна тулза вам не покажет плагины потому что приложение к ним не линкуется. "Process Hacker" показал qwindows.dll , который плагин и который "обычный" разработчик "не использует" "Process Hacker" вообще показал 100500 "модулей" чуть ли не на холовордное приложение. Как среди этого всего отобрать нужные? Process Hacker, также как и windeployqt, показал все Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: Авварон от Март 23, 2020, 15:07 От куда? Из документации. Только ее читать надо дальше первого абзаца. Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 23, 2020, 16:39 "Process Hacker" вообще показал 100500 "модулей" чуть ли не на холовордное приложение. Как среди этого всего отобрать нужные? отсортировать по пути ) но конечно "Process Hacker" не покажет для незапущенного приложения ничего я не знаю иного способа, кроме как запускать exe и смотреть на что он ругается, при этом про qwindows.dll венда ничего не скажет - тут либо догадаться, либо найти в документации https://doc.qt.io/qt-5/windows-deployment.html еще не забыть qt.conf создать и указать каталог плагинов ) Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 24, 2020, 07:03 2Авварон
Вопрос: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? ответ Авварон-а Из документации. Не поспоришь. Сразу бы так ответили.... И зачем вообще этот форум, если все можно узнать из документации? Цитировать Только ее читать надо дальше первого абзаца. Покажите, пожалуйста, где в документации, во втором абзаце рассказано, как узнать какие файлы нужны для запуска Qt приложения на голом виндусеЦитировать отсортировать по пути ) по какому пути? "По дороге с работы, по пути в гастроном" (С)?)) Попробуйте сами отсортировать и дайте скрин, плииз.Цитировать про qwindows.dll венда ничего не скажет Цитировать но конечно "Process Hacker" не покажет для незапущенного приложения ничего сарказм или тролинг? Можно развить тему: "но конечно "Process Hacker" не покажет ничего на выключенном ПК"Цитировать я не знаю иного способа, кроме как запускать exe и смотреть на что он ругается Я тоже не знаю иного способа. Друзья.... если вы знаете другой рабочий способ, если вы сами пробовали и практикуете иной реально рабочий способ - дайте Всем хорошего дня и успехов в работе! Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 24, 2020, 08:40 по какому пути? по пути файла очевидно - добавь колонку "File name" на вкладке "Modules" что касается сабжа, то мой путь - запуск и подкидывание нужных dll и плагинов, иного способа не знаю, возможно ктото и скажет Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 24, 2020, 09:10 по пути файла очевидно - добавь колонку "File name" на вкладке "Modules" Сортировка "по пути" задачу не решает. Отображаются все нужные и ненужные файлы, в куче, только отсортированы по путям. Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 24, 2020, 09:40 решает - смотри путь своего каталога, вендовый не смотри
Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 24, 2020, 09:50 решает - смотри путь своего каталога, вендовый не смотри Желты выделил те модули, что нужны приложению. Все модули отсортированы по путям. Как Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 24, 2020, 09:58 Приложение расположено и запущено из каталога D\Work\TeslaTest ?
Тамже есть файл qt.conf ? Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 24, 2020, 10:00 Приложение расположено и запущено из каталога D\Work\TeslaTest ? даЦитировать Тамже есть файл qt.conf ? нетНазвание: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 24, 2020, 10:03 хз чего там было в 5.6, почему именно эта версия ?
я проверил на 5.12.4 "64 bit" (такая попалась), собранный файл сам не лезит в каталоги из Qt Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: kuzulis от Март 24, 2020, 10:03 juvf ,
блин, ты издеваешься, а? Выше уже сказали, что невозможно узнать какие плагины нужны пока само приложение их не заиспользовало.. Хоть хакайте, хоть не хакайте... Можен оно заиспользует только при клике на кнопочку. И че, будешь прокликивать все кнопочки и парсить вывод? ЗЫ: Не глуми голову ни себе ни людям! Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 24, 2020, 10:23 хз чего там было в 5.6, почему именно эта версия ? как мне эта информация поможет?я проверил на 5.12.4 "64 bit" (такая попалась), собранный файл сам не лезит в каталоги из Qt Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 24, 2020, 10:30 juvf , Я чем и кого глумлю..... есть автоматизированный способ или нет? Я автоматизированного способа не знаю. Запускаю ехе на голой винде и проверяю без всяких тулс, руками.... я уже выше писал, на дворе 2020, а релиз по старинке, руками выкатывать. блин, ты издеваешься, а? Выше уже сказали, что невозможно узнать какие плагины нужны пока само приложение их не заиспользовало.. Хоть хакайте, хоть не хакайте... Можен оно заиспользует только при клике на кнопочку. И че, будешь прокликивать все кнопочки и парсить вывод? ЗЫ: Не глуми голову ни себе ни людям! Но мнения расходятся. Кто-то говорит плагнины не покажет, кто-то говорит покажет.... Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 24, 2020, 10:57 как мне эта информация поможет? запуск из креатора или руками из каталога ? сборка release или debug ? Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 24, 2020, 11:01 release из креатора. при запуске дебага другие, дебажные библиотеки, Qt5Cored.dll и т.п.
Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 24, 2020, 11:13 я собирал таким скриптом:
Код: set QTDIR=C:\Qt\Qt5.12.4\5.12.4\mingw73_64 не знаю почему exe лезит к плагинам вне своей директории Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: ssoft от Март 24, 2020, 11:24 Но мнения расходятся. Кто-то говорит плагнины не покажет, кто-то говорит покажет.... Есть библиотеки, которые подгружаются при старте приложения. Это обязательные библиотеки, без которых приложение не запустится. Есть библиотеки, которые подгружаются и выгружаются в процессе работы приложения по мере необходимост. К ним относятся и pluggins. Это опциональные библиотеки, без которых приложение запуститься. Любой инструмент покажет только библиотеки загруженные в текущий момент. Какого рода плагины нужны знает только разработчик ПО исходя их используемых функций - работа с картинками, с БД, со звуком и т.п. Плагины Qt входят в состав дистрибутива и по умолчанию поиск их осуществляется относительно директории установки Qt. Если не поставить нужные плагины, то приложение может запуститься, а корректно работать может и не смочь). В чем проблема поставить полный дистрибутив Qt со всеми плагинами? Много места занимают или что? Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 24, 2020, 11:31 Плагины Qt входят в состав дистрибутива и по умолчанию поиск их осуществляется относительно директории установки Qt. Что такое "директории установки Qt" , если на целевой машине нет никакого Qt ? Поиск плагинов идет там, где прописано в qt.conf Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: kuzulis от Март 24, 2020, 12:06 Цитировать Поиск плагинов идет там, где прописано в qt.conf И да и нет. ЕМНИП, пути установки захардкожены в Qt (в qmake?). Например при установке инсталлятором они пропатчиваются, также как и при использовании windeployqt (если я не туплю). Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: qate от Март 24, 2020, 12:20 Цитировать Поиск плагинов идет там, где прописано в qt.conf И да и нет. ЕМНИП, пути установки захардкожены в Qt (в qmake?). Например при установке инсталлятором они пропатчиваются, также как и при использовании windeployqt (если я не туплю). не совсем понял место и время, где и когда пути попадают в exe ? я не вижу никаких строк в собранном мною, приведенном выше скриптом, exe файле и насколько я знаю в венде нет rpath Название: Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? Отправлено: juvf от Март 24, 2020, 12:24 Какого рода плагины нужны знает только разработчик ПО исходя их используемых функций - работа с картинками, с БД, со звуком и т.п. Не всегда так. Бывают большие проекты.... например я писал небольшую программу, но она использовала внешние модули, которые писала другая группа разработчиков. В итоге мне нужно было из 4-х увесистых проектов собирать своё. Сторонние проекты тяжёлые, но мне нужно от них было буквально пару классов... которые по полиморфизму тянули дерево виртуальных и/или абстрактных классов.... В итоге ко мне в ехе попала совсем не большая часть от их кода. Так вот, что там они использовали? БД или звук... ico или gif, я не знаю. Мне проще было собрать приложение, поместить в песошницу и докинуть нужные либы. Другой пример.... разработка устройства.... 3-5 лет.... написал тестовую утилиту... как говориться "для себя". В заголовке pro файла комент "Project created by QtCreator 2017-12-12". больше 2-х лет назад. Разработка изделия проживает свой жизненный цикл.... я свою часть разработал, утилитой проверил... изделие получило сертификат. Теперь для обслуживающему персоналу нужно дать инструменты для обслуживания. Пару рющек в свою утилиту.... добавил about() и нужно выдать релиз. Какие функции я использовал более 2-х лет назад? Спросил коллег - как нынче в Qt релизы выкатывать? Ответ: "windeployqt, но будет много мусора!" Собрал с помощью windeployqt библы.... windeployqt докинул мне много лишнего, например opengl32sw.dll. Что такое openGl и зачем он мне нужен? Его я ТОЧНО не использовал ни 2 года назад, ни 12 лет назад. Коллеги не паряться, выкатывают релизы с помощью windeployqt, у них релизы по 2Гб весят. Я решил заморочиться и узнать - есть ли более кошерный способ, автоматический, без лишних либ? Оказалось нет. Цитировать В чем проблема поставить полный дистрибутив Qt со всеми плагинами? Много места занимают или что? Что вы имеете в виду "поставить"? Инсталлировать в целевую винду полный дистрибутив Qt? Или сложить все либы и плагины лядом с ехе на целевой винде? |