Russian Qt Forum
Ноябрь 23, 2024, 21:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Распространение на Windows. Прошу практических советов...  (Прочитано 4483 раз)
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 файл... в архиве конечно... )
Спасибо"
« Последнее редактирование: Январь 20, 2013, 14:32 от 0x0001 » Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1 : Январь 20, 2013, 14:38 »

Инсталятор - uNSIS, уникод версия инсталятора от Nullsoft, по поводу "проверить dll" - кроме как написание лончера, котроый не зависит от Qt библиотек, и который перед запуском приложения проверяет все dll'ки по их hash коду решения не вижу (но это не значит, что его нет Улыбающийся ).
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
0x0001
Гость
« Ответ #2 : Январь 20, 2013, 15:59 »

Инсталятор - uNSIS, уникод версия инсталятора от Nullsoft, по поводу "проверить dll" - кроме как написание лончера, котроый не зависит от Qt библиотек, и который перед запуском приложения проверяет все dll'ки по их hash коду решения не вижу (но это не значит, что его нет Улыбающийся ).
Спасибо, по поводу "проверки целостности dll" и прочих плагинов, у меня идея написать на "чистом" win API что-то вроде shell, который уже затем запускает основное приложение Qt и выгружается... ну или выдает конкретную осмысленную информацию пользователю "что не так" и выходит что важно БЕЗ критических, Категорически раздражающих Уважаемого, всегда Правого Клиента, ошибок windows... Подмигивающий)
НО прежде, конечно хотелось узнать , возможно такой инсталлятор есть уже готовый, с такой проверкой ..
« Последнее редактирование: Январь 20, 2013, 16:04 от 0x0001 » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Январь 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, это может сэкономить до нескольких мегабайт. Также используй UPX для своей программы и для Qt библиотек, но помни, что этим ты платишь за скорость запуска, если она тебе важна. Наиболее сильно на скорость запуска влияет UPX-нутый QtGui.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #4 : Январь 21, 2013, 18:50 »

INNO Setup, dll лежат рядом с экзешником (плагины в подпапках). Установщик под пользовательским аккаунтом будет требовать админских прав и это правильно.

Строго говоря - возможно, Win7 перехватывает запись в системные каталоги неавторизованными процессами и перенаправляет их во временные каталоги, куда есть запись. Не помню как называется эта хрень.
И даже в реестр. Виртуализация называется (папка VirtualStore).
Записан
0x0001
Гость
« Ответ #5 : Январь 22, 2013, 10:40 »

Alex Custov,  Kurles
Большое Спасибо за Информацию! Буду пробовать, отпишусь "по деталям" если что, возможно пригодится кому-то...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.082 секунд. Запросов: 23.