Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: 0x0001 от Январь 20, 2013, 14:19



Название: Распространение на Windows. Прошу практических советов...
Отправлено: 0x0001 от Январь 20, 2013, 14:19
установил Qt5, "перекладывая" проекты с 4.8.2 на 5, решил таки прийти к динамической линкове, ибо иначе невозможно, все те извращения которые совершал в 4.8.2 уже не проходят(на 4.8.2 Собирал даже Declarative плагины с QML файлами в ресурсах exe, со 100% отсутствием зависимостей на голый "XP ", причем SP1 и без MVS)... да и Времени жалко...
В общем Вопрос практический, Как кто развертывает приложение, какими инсталляторами пользуетесь, как "профиксить" пути к Qtшным dll? как запускается исполняемый файл?
Ведь dll-ки надо еще найти и подгрузить и выдать Ошибку если some плагин,dll и пр. не найден! причем НЕ Win message типа "dll not found" или еще хуже;))) , а с рекомендациями Пользователю, что и как искать куда звонить, на какой сайт выходить и пр. для помощи.
(Напомню задачу - от голого XP SP1 первого выпуска до Win7 - 64 с опцией "контроль учетных записей" в max security и USER правами... напомню такие права в Win7 позволяют лишь доступ к User Data / User App Data директориям на full доступ, т.е. никакое копирование в системные папки и пр невозможно, кроме папок текущего User)
Объем "инсталлятора" должне быть не более 15..17Mb (собственно такой объем обеспечивала моя static линковка в 1 exe файл... в архиве конечно... )
Спасибо"


Название: Re: Распространение на Windows. Прошу практических советов...
Отправлено: Kurles от Январь 20, 2013, 14:38
Инсталятор - uNSIS (http://code.google.com/p/unsis/), уникод версия инсталятора от Nullsoft, по поводу "проверить dll" - кроме как написание лончера, котроый не зависит от Qt библиотек, и который перед запуском приложения проверяет все dll'ки по их hash коду решения не вижу (но это не значит, что его нет :) ).


Название: Re: Распространение на Windows. Прошу практических советов...
Отправлено: 0x0001 от Январь 20, 2013, 15:59
Инсталятор - uNSIS (http://code.google.com/p/unsis/), уникод версия инсталятора от Nullsoft, по поводу "проверить dll" - кроме как написание лончера, котроый не зависит от Qt библиотек, и который перед запуском приложения проверяет все dll'ки по их hash коду решения не вижу (но это не значит, что его нет :) ).
Спасибо, по поводу "проверки целостности dll" и прочих плагинов, у меня идея написать на "чистом" win API что-то вроде shell, который уже затем запускает основное приложение Qt и выгружается... ну или выдает конкретную осмысленную информацию пользователю "что не так" и выходит что важно БЕЗ критических, Категорически раздражающих Уважаемого, всегда Правого Клиента, ошибок windows... ;))
НО прежде, конечно хотелось узнать , возможно такой инсталлятор есть уже готовый, с такой проверкой ..


Название: Re: Распространение на Windows. Прошу практических советов...
Отправлено: Alex Custov от Январь 21, 2013, 16:51
какими инсталляторами пользуетесь

Стандартно - INNO Setup. Поначалу может не понравится то, что это просто скрипт, а не визуальный редактор.

как "профиксить" пути к Qtшным dll?

Это не нужно для конечного приложения

как запускается исполняемый файл?

в каком смысле? Обычно.

Ведь dll-ки надо еще найти и подгрузить и выдать Ошибку если some плагин,dll и пр. не найден!

Плагины грузятся внутри Qt, их наличие ты должен контролировать сам во время сборки инсталлятора.

(Напомню задачу - от голого XP SP1 первого выпуска до Win7 - 64 с опцией "контроль учетных записей" в max security и USER правами...

Если программа - не говнокод, то она нативно будет работать везде от Win XP 32-bit до Win 7 64-bit. Единственное, что если делать всё правильно, то придётся куда-то ставить вторую систему 64-битную, чтобы компилировать на ней нативные 64-битные бинарники и делать 64-bit инсталлятор. Иначе прога тоже будет работать, но в режиме эмуляции с WOW64

напомню такие права в Win7 позволяют лишь доступ к User Data / User App Data директориям на full доступ, т.е. никакое копирование в системные папки и пр невозможно, кроме папок текущего User)

Строго говоря - возможно, Win7 перехватывает запись в системные каталоги неавторизованными процессами и перенаправляет их во временные каталоги, куда есть запись. Не помню как называется эта хрень.

Объем "инсталлятора" должне быть не более 15..17Mb (собственно такой объем обеспечивала моя static линковка в 1 exe файл... в архиве конечно... )

INNO Setup и опции Compression=lzma и SolidCompression=yes. Если программа не использует много классов из Qt GUI, то я рекомендую сделать свою сборку Qt с использованием qconfig (http://barrel-of-herring.blogspot.com/2012/09/qt-482483-windows.html), это может сэкономить до нескольких мегабайт. Также используй UPX для своей программы и для Qt библиотек, но помни, что этим ты платишь за скорость запуска, если она тебе важна. Наиболее сильно на скорость запуска влияет UPX-нутый QtGui.


Название: Re: Распространение на Windows. Прошу практических советов...
Отправлено: LisandreL от Январь 21, 2013, 18:50
INNO Setup, dll лежат рядом с экзешником (плагины в подпапках). Установщик под пользовательским аккаунтом будет требовать админских прав и это правильно.

Строго говоря - возможно, Win7 перехватывает запись в системные каталоги неавторизованными процессами и перенаправляет их во временные каталоги, куда есть запись. Не помню как называется эта хрень.
И даже в реестр. Виртуализация называется (папка VirtualStore).


Название: Re: Распространение на Windows. Прошу практических советов...
Отправлено: 0x0001 от Январь 22, 2013, 10:40
Alex Custov,  Kurles
Большое Спасибо за Информацию! Буду пробовать, отпишусь "по деталям" если что, возможно пригодится кому-то...