Печаль деплоя Qt5 (40 mb)
От: Danilych  
Дата: 31.05.13 05:53
Оценка:
Я иногда занимаюсь фрилансом, пишу всякие маленькие утилитки на .NET. Очень удобно — написал, скинул exe'шник заказчику по скайпу — он тестит (размеры получались 100-500kb).
Решил попробовать написать что-нибудь мелкое на Qt (очень привлекает возможность Quick 2.0, всякие красивости итп) — в итоге элементарная программка на 50kb потянула за собой библиотек на ≈40 метров. Так и представляю себе удивленное лицо заказчика, которому нужно выкачать 40 мегабайт для однооконной проги
Конечно, понятно, что .NET даже больше будет, но ведь он на всех компах уже есть.
Можно убрать icu (22mb), но все равно как-то многовато.
Кто-нибудь деплоил свои Qt5 приложения?
Re: Печаль деплоя Qt5 (40 mb)
От: Danilych  
Дата: 31.05.13 05:57
Оценка:
Re[2]: Печаль деплоя Qt5 (40 mb)
От: Danilych  
Дата: 31.05.13 05:59
Оценка:
Re: Печаль деплоя Qt5 (40 mb)
От: CaptainFlint http://flint-inc.ru/
Дата: 31.05.13 07:57
Оценка:
Здравствуйте, Danilych, Вы писали:

D>Я иногда занимаюсь фрилансом, пишу всякие маленькие утилитки на .NET. Очень удобно — написал, скинул exe'шник заказчику по скайпу — он тестит (размеры получались 100-500kb).

D>Решил попробовать написать что-нибудь мелкое на Qt (очень привлекает возможность Quick 2.0, всякие красивости итп) — в итоге элементарная программка на 50kb потянула за собой библиотек на ≈40 метров. Так и представляю себе удивленное лицо заказчика, которому нужно выкачать 40 мегабайт для однооконной проги
D>Конечно, понятно, что .NET даже больше будет, но ведь он на всех компах уже есть.
D>Можно убрать icu (22mb), но все равно как-то многовато.
D>Кто-нибудь деплоил свои Qt5 приложения?

Да, тоже занимался этим вопросом. Помимо исключения ICU, можно ещё:
а) скомпилять с ограниченным набором функциональности (выкинуть OpenGL2, accessibility, и т.д.);
б) скомпилять статически.
В итоге не слишком навороченное приложение у меня уложилось в единый EXE-файл размером 7 Мб. Конечно, тоже немало, но всё-таки не 40.

Единственная закавыка: с QtQuick 2 такой трюк не пройдёт, его плагин не рассчитан на статическую линковку. Баг уже заведён, но исправление постоянно откладывают: сначала наметили на 5.0.2, потом отодвинули до 5.0.3, затем до 5.1.0, а теперь и вовсе отписали, что баг очень сложный и отложили его до 5.2.0. Какой-то workaround там в обсуждении мелькал, но я его сам пока не пробовал.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[2]: Печаль деплоя Qt5 (40 mb)
От: Danilych  
Дата: 31.05.13 08:57
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

CF>Да, тоже занимался этим вопросом. Помимо исключения ICU, можно ещё:

CF>а) скомпилять с ограниченным набором функциональности (выкинуть OpenGL2, accessibility, и т.д.);
CF>б) скомпилять статически.
CF>В итоге не слишком навороченное приложение у меня уложилось в единый EXE-файл размером 7 Мб. Конечно, тоже немало, но всё-таки не 40.

CF>Единственная закавыка: с QtQuick 2 такой трюк не пройдёт, его плагин не рассчитан на статическую линковку. Баг уже заведён, но исправление постоянно откладывают: сначала наметили на 5.0.2, потом отодвинули до 5.0.3, затем до 5.1.0, а теперь и вовсе отписали, что баг очень сложный и отложили его до 5.2.0. Какой-то workaround там в обсуждении мелькал, но я его сам пока не пробовал.


В принципе, без статической компиляции можно обойтись (к тому же она запрещена условиями бесплатной лицензии), значит, Quick будет работать Для меня не страшно иметь набор из нескольких dll, лишь бы общий объем был небольшой
Re: Печаль деплоя Qt5 (40 mb)
От: SaZ  
Дата: 31.05.13 08:58
Оценка:
Здравствуйте, Danilych, Вы писали:

D>Кто-нибудь деплоил свои Qt5 приложения?


Если не нужно снимать крэшдампов — то всё прекрасно (включая рантайм qt) пакуется UPX-ом.
Re[3]: Печаль деплоя Qt5 (40 mb)
От: CaptainFlint http://flint-inc.ru/
Дата: 31.05.13 11:17
Оценка:
Здравствуйте, Danilych, Вы писали:

D>В принципе, без статической компиляции можно обойтись (к тому же она запрещена условиями бесплатной лицензии)


А, точно. У меня был GPL-проект, с ним можно, поэтому забыл об этом моменте.

D>Для меня не страшно иметь набор из нескольких dll, лишь бы общий объем был небольшой


Так тут в том-то и фича, что из DLL ты неиспользуемый код не выкинешь, а при статической компиляции он исчезает. За счёт этого размер очень сильно может уменьшиться.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[2]: Печаль деплоя Qt5 (40 mb)
От: nen777w  
Дата: 01.06.13 13:26
Оценка:
CF>Да, тоже занимался этим вопросом. Помимо исключения ICU, можно ещё:
CF>а) скомпилять с ограниченным набором функциональности (выкинуть OpenGL2, accessibility, и т.д.);
Про accessibility, если его выкинуть оно еще быстрее
Автор: nen777w
Дата: 23.05.13
работать будет.

CF>б) скомпилять статически.

А разве лицензия это позволяет?
Re[3]: Печаль деплоя Qt5 (40 mb)
От: CaptainFlint http://flint-inc.ru/
Дата: 01.06.13 15:06
Оценка:
Здравствуйте, nen777w, Вы писали:

CF>>б) скомпилять статически.

N>А разве лицензия это позволяет?

Если проект с открытым кодом, то можно и статически в рамках GPL/LGPL. Если с закрытым, то без коммерческой лицензии уже не обойтись.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[2]: Печаль деплоя Qt5 (40 mb)
От: serjjj Россия  
Дата: 13.06.13 21:28
Оценка:
Здравствуйте, SaZ, Вы писали:

SaZ>Если не нужно снимать крэшдампов — то всё прекрасно (включая рантайм qt) пакуется UPX-ом.


Как оно по сравнению с 7zip?
Re[3]: Печаль деплоя Qt5 (40 mb)
От: Danilych  
Дата: 14.06.13 15:04
Оценка: :))
Здравствуйте, serjjj, Вы писали:

S>Как оно по сравнению с 7zip?

Да так же, только расширение у файла *.7z вместо *.exe. Пустяки-с
Re[3]: Печаль деплоя Qt5 (40 mb)
От: SaZ  
Дата: 16.06.13 15:21
Оценка:
Здравствуйте, serjjj, Вы писали:

S>Как оно по сравнению с 7zip?


Главный плюс в том, что для юзера ничего не меняется. Не нужно распаковывать никаких *.7z. Просто размер бинарников становится меньше. Почитайте, что такое UPX
Re[4]: Печаль деплоя Qt5 (40 mb)
От: Аноним  
Дата: 18.06.13 21:24
Оценка:
Здравствуйте, SaZ, Вы писали:

SaZ>Главный плюс в том, что для юзера ничего не меняется. Не нужно распаковывать никаких *.7z. Просто размер бинарников становится меньше. Почитайте, что такое UPX


Спасибо за ответы. Получается, если программу устанавливает установщик, то нет смысла городить огород. Ибо психологическое воздействие оказывает только объем дистрибутива.
Re[5]: Печаль деплоя Qt5 (40 mb)
От: SaZ  
Дата: 19.06.13 08:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Спасибо за ответы. Получается, если программу устанавливает установщик, то нет смысла городить огород. Ибо психологическое воздействие оказывает только объем дистрибутива.


В моей практике были приложения с автоапдейтом лишь необходимых бинарников. И как куда более распространённый случай — так называемые portable версии, которые не нужно было никуда устанавливать.
Re[3]: Печаль деплоя Qt5 (40 mb)
От: Denys V. Украина http://ua.linkedin.com/in/dvalchuk
Дата: 03.07.13 13:15
Оценка:
Здравствуйте, Danilych, Вы писали:

D>


+ к сказанному — заменить mingw на msvc. Тогда не нужно будет тянуть ни pthread, libstdc++ и тд.
С уважением Denys Valchuk

IMHO чем больше мнений тем оптимальней выбор варианта... :)
Re: Печаль деплоя Qt5 (40 mb)
От: romankr  
Дата: 10.07.13 10:04
Оценка:
Здравствуйте, Danilych, Вы писали:

D>Я иногда занимаюсь фрилансом, пишу всякие маленькие утилитки на .NET. Очень удобно — написал, скинул exe'шник заказчику по скайпу — он тестит (размеры получались 100-500kb).

D>Решил попробовать написать что-нибудь мелкое на Qt (очень привлекает возможность Quick 2.0, всякие красивости итп) — в итоге элементарная программка на 50kb потянула за собой библиотек на ≈40 метров. Так и представляю себе удивленное лицо заказчика, которому нужно выкачать 40 мегабайт для однооконной проги
D>Конечно, понятно, что .NET даже больше будет, но ведь он на всех компах уже есть.
D>Можно убрать icu (22mb), но все равно как-то многовато.
D>Кто-нибудь деплоил свои Qt5 приложения?
Тоже когда-то задавался этим вопросом, потом выяснилось, что занимаюсь крохоборством . Кроме меня суммарный размер бибиотек больше никого не волновал.
Re: Печаль деплоя Qt5 (40 mb)
От: velkin Земля  
Дата: 16.09.13 04:10
Оценка:
Здравствуйте, Danilych, Вы писали:

D>Я иногда занимаюсь фрилансом, пишу всякие маленькие утилитки на .NET. Очень удобно — написал, скинул exe'шник заказчику по скайпу — он тестит (размеры получались 100-500kb).

D>Решил попробовать написать что-нибудь мелкое на Qt (очень привлекает возможность Quick 2.0, всякие красивости итп) — в итоге элементарная программка на 50kb потянула за собой библиотек на ≈40 метров. Так и представляю себе удивленное лицо заказчика, которому нужно выкачать 40 мегабайт для однооконной проги
D>Конечно, понятно, что .NET даже больше будет, но ведь он на всех компах уже есть.
D>Можно убрать icu (22mb), но все равно как-то многовато.
D>Кто-нибудь деплоил свои Qt5 приложения?

Скиньте первый проект с библиотеками qt, потом кидайте ваши новые проекты без библиотек, они будут малого размера. Заказчик пусть или пропишет путь к qt в системных переменных, или что на мой взгляд гораздо лучше (из-за разных версий) просто запускает новые примеры из папки с вашими библиотеками qt. Не пытайтесь компилировать статически, используйте динамические библиотеки, это в итоге сэкономит память и ваше рабочее время. Что касается .NET, то его нет, его приходится ставить. Он сначала себя качает, потом ставит, всё это надо ждать. К тому же программисты очень часто тратят много времени на бесполезные и даже вредные вещи. Эти 40 мегабайт для меня несколько секунд, да пусть даже я 10 минут буду качать, тем более это буду делать не я, а компьютер. Главное, чтобы ваша программа в итоге работала. Скажу даже более, лучше скинуть заказчику сразу все библиотеки qt, а не только те, которые в данный момент используются в программе. Опять же я могу за ночь и 40 гигабайт выкачать если надо, и это не столичный интернет. А мелочь на вроде qt'а можно выкачать даже в лесу с помощью 3g-модема. Однако к таким выводам, что динамические библиотеки лучше, а десятки мегабайт не имеют значения, пришёл после многих лет, в которых были опыты со статической компиляцией qt'а ещё 4.x.x версии, работы не только под windows, но и под linux и т.д и т.п. На самом деле даже паковать ничего не надо, просто бросаем всё в одну папку.
Re: Печаль деплоя Qt5 (40 mb)
От: fdn721  
Дата: 16.09.13 04:24
Оценка:
Собери Qt сам только с тем, что тебе нужно.


Итого 11,5 МБ. Пожмёшь архиватором — будет 6.
Re[2]: Печаль деплоя Qt5 (40 mb)
От: Danilych  
Дата: 16.09.13 15:20
Оценка:
velkin и fnd721, благодарю за советы
Уже не раз встречаю эту фразу — "пересобери Qt". Это нормальная практика вообще — каждый раз пересобирать его под свои нужды? Или вы держите кучу версий на винте?
Re[3]: Печаль деплоя Qt5 (40 mb)
От: fdn721  
Дата: 17.09.13 04:19
Оценка:
Здравствуйте, Danilych, Вы писали:

D>velkin и fnd721, благодарю за советы

D>Уже не раз встречаю эту фразу — "пересобери Qt". Это нормальная практика вообще — каждый раз пересобирать его под свои нужды? Или вы держите кучу версий на винте?

Зачем каждый раз? Вышла новая версия, собрал то что нужно. Не пользуюсь я WebKit, Phonone, QtQuick, QtScript, значит и собирать их не надо. И всё что они требуют, типа icu, angle тоже не нужно.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.