Создание инсталляционных пакетов с Qt Installer Framework
шаг
Шаги, чтобы сделать установочный пакет:
- Скачать с официального сайтаQt Installer FrameworkПакет установки и установка (если он уже установлен, пропустите этот шаг)
- Используйте windeployqt.exe, чтобы собрать необходимые зависимости
- Создайте установочный пакет, используя binarycreator.exe
Конкретный процесс работы:
Установите Qt Installer Framework
Сбор зависимостей
- Создайте проект, используя режим выпуска
- Удалите ненужные файлы в каталоге выпуска
- Запустите команду windeployqt.exe
Изучение Qt Creator | Урок #2 — Создание приложения на C++
[путь windeployqt.exe] —release —qml —qmldir [исходный путь qml] [путь к exe-файлу]
Как в моем окружении
D:QtQt5.11.05.11.0mingw53_32binwindeployqt.exe —release —qml —qmldir D:srcqmlhuorong huorong.exe
- Скопируйте другие библиотеки вручную
Я использую mingw53_32 и мне нужно скопировать следующие файлы
libgcc_s_dw2-1.dll libstdc++-6.dll libwinpthread-1.dll
Создать установочный пакет
- Скопируйте собранные выше зависимости в installerpackagescn.net.pikachu.huorongdata Под папкой
- Запустите команду binarycreator.exe
[путь двоичного файла_creator.exe] -c [путь config.xml] -p [путь пакета] [имя файла сгенерированного установщика exe] -v
Как в моем окружении
D:QtQtIFW-3.0.4binbinarycreator.exe -c installer/config/config.xml -p installer/packages huorong_install.exe -v
Эффект финальной презентации
Мышление и резюме
Если Qt предоставляет установочный пакет в один клик, зачем? Должна быть возможность написать эти операции в скрипте и интегрировать их в QtCreator.
Вложение:
Файл конфигурации
config.xml
package.xml
Программное обеспечение Tinder Security исполняемый файл 0.1.0-1 2018-07-01 true installscript.qs true
installscript.qs
Интеллектуальная рекомендация
C ++ обратная функция
Реверс используется в библиотеке, используется для переворачивания содержания между [a, b) Например: Выход.
Qt уроки #2. Как сделать Windows инсталлятор для Qt-приложения?
Экран блокировки блокировки Android6.0 Как открыть его по умолчанию?
Экраны блокировки блокировки Android6.0 не имеют значения по умолчанию, недавно клиент должен открыться по умолчанию, как открыть? Нужно изменить два места. 1.alpsframeworksbasemediajavacommedia.
Интерфейс доступа
Сначала создайте файл заголовка, напишите в нем URL Первые две части кода — это формат, потому что формат в начале URL-адреса — это начало двух предыдущих частей кода, поэтому после его написания введ.
История 20 -летнего изменения в развитии фронта
История 20 -летнего изменения в развитии фронта Оригинал: Situ ZhengmeiCSDN сегодня [Примечание редактора CSDN] В 1990 году родился первый веб -браузер, и рождение www непосредственно открыло пре.
Представьте десять небольших случаев Python, здесь для начинающих
Сегодня я поделюсь с вами десятью небольшими примерами начального уровня Python. Случай 1: Перестановка и комбинация Запрос: Перечислите все возможные комбинации из 4 чисел, которые отличаются друг от.
Источник: russianblogs.com
Серия Qt S01E02: действия QtInstallerFrameWork и GitHub
Ранее в серии Qt мы видели, как объединить кроссплатформенную мощь Qt с инфраструктурой CI/CD Github Actions для создания двоичных файлов для Windows, MacOs и Linux.
В этом эпизоде мы увидим, как создать установщик для доставки нашей программы клиентам. Это основной способ распространения в Windows, но его также можно сделать для MacOs и Linux.
Qt Installer Framework поддерживает два типа установщиков:
- Offline: простой исполняемый файл, который устанавливает двоичный файл и его зависимости.
- В сети: исполняемый файл, который вызывает веб-сервер, сравнивает версию программы с текущей и устанавливает соответствующую версию с веб-сервера. Эта версия позволяет выполнять простые обновления для пользователя.
В этом эпизоде мы создадим простой установщик только с одним пакетом и настраиваемым компонентом. Установщик выполнит три задачи:
- Принятие лицензии.
- Установка программы в указанное место.
- Открытие программы и документации.
Архитектура
Во-первых, нам нужно создать необходимые папки и файлы конфигурации, которые будут следовать этой архитектуре (для нескольких пакетов инкапсулируйте каждый пакет в подпапку внутри каталога пакетов):
ProgramInstaller │ └───packages │ │ │ └───Program │ │ │ └───data │ │ │ data.7z │ │ │ └───meta │ │ license.txt │ │ installscript.qs │ │ package.xml │ │ readmecheckboxform.ui │ └───config │ config.xml
Лицензия.txt
Лицензия программного обеспечения, которую пользователь должен принять для установки программы.
Установить.qss
Файл install.qss определяет компонент, отображаемый в процессе установки. В функции Component.prototype.createOperations мы определяем два ярлыка: один для исполняемого файла программы, второй для Qt MaintenanceTool, который появится в стартовом меню. Следующие две функции отобразят пользовательский компонент, который откроет программу и документацию, если пользователь установит флажки.
Пакет.xml
Файл package.xml — это файл конфигурации единственного пакета, содержащегося в нашем установщике.
Program package Program package 0.0.0 true installscript.qs readmecheckboxform.ui
Readmecheckboxform.ui
Этот файл представляет собой декларативный пользовательский интерфейс для нашего пользовательского компонента, который откроет программу и документацию в конце процесса установки, если пользователь установит флажки.
ReadMeCheckBoxForm 0 0 412 179 0 0 0 0 Open the User manual true false Start Program true
Данные.7z
Архив data.7z будет содержать бинарник и зависимости пакета, который будет распакован в папку установки.
Конфиг.xml
config.xml — это файл конфигурации для установщика. Если вам нужен интерактивный установщик, необходимо добавить URL-адрес, доступный для установщика, в теге ‹Url›‹/Url›. На следующем шаге мы увидим, что добавить в конечную точку этого URL.
Действия на GitHub
Теперь мы автоматизируем создание этого установщика с помощью действий GitHub и повторного использования концепций, которые мы видели в эпизоде 1 серии Qt.
Как обычно, мы создаем новый файл .github/workflows/installer.yml.
│.github │ └───workflows │ │ installer.yml │ ProgramInstaller │ └───packages │ │ │ └───Program │ │ │ └───data │ │ │ data.7z │ │ │ └───meta │ │ license.txt │ │ installscript.qs │ │ package.xml │ │ readmecheckboxform.ui │ └───config │ config.xml
name: Continous Builds on: push: branches: [master] jobs: runs-on: windows-latest steps: — uses: actions/[email protected] — uses: actions/[email protected] with: python-version: ‘3.8’ — name: install qt6 run: | pip install aqtinstall python3 -m aqt install-qt -O $>/Qt/ windows desktop 6.2.0 win64_msvc2019_64 python3 -m aqt install-tool -O $>/Qt/ windows desktop tools_ifw echo «$>/Qt/6.2.0/msvc2019_64/bin/» | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append echo «$>/Qt/Tools/QtInstallerFramework/4.1/bin/» | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append — name: build shell: cmd run: | repogen.exe -p .ProgramInstallerpackages OnlineRepository binarycreator.exe -p .ProgramInstallerpackages -c .Programconfigconfig.xml ProgramInstaller — name: Windows artefact uses: actions/[email protected] with: name: ProgramInstaller path: ./ProgramInstaller.exe — name: Windows artefact uses: actions/[email protected] with: name: OnlineRepository path: ./OnlineRepository
Первые шаги Действия аналогичны тому, что мы видели в S01E01. Дополнительным шагом является установка Qt Installer Framework с помощью aqtinstall с командой install-tool.
Развёртывание приложений Qt в Windows
Добрый день, уважаемые читатели! Совсем недавно я завершил разработку одного своего приложения на Qt, и мне захотелось создать профессиональную программу установки, чтобы всё было «как у взрослых». Как оказалось, сделать это непросто, учитывая, что на официальном сайте инструментария информации по развёртыванию почти нет. В данной статье рассмотрены некоторые этапы подготовки программ на Qt версии 5.2 или выше для распространения на компьютеры других пользователей. Итак, вот план руководства:
- Подготовка проекта Qt к развёртыванию
- Компоновка дистрибутива программы
- Подписание кода и создание установщика
1. Подготовка проекта Qt к развёртыванию
Для того, чтобы было проще следовать инструкциям, создадим простой проект Qt Widgets. Все последующие операции будут относиться к этому проекту. Ниже приведено содержимое исходных файлов приложения:
HelloWorld.pro
QT += core gui widgets TARGET = HelloWorld TEMPLATE = app SOURCES += main.cpp
main.cpp
#include #include int main(int argc, char *argv[])
Программы выглядят особенно качественно и профессионально, если они несут с собой метаданные о разработчике, версии программного продукта, авторских правах, языке и многом другом. Для примера, обратимся к свойствам файла Photoshop.exe всем известной системы Adobe Photoshop. На рисунке ниже показано окно свойств данного файла:
Добавить подобную информацию можно с помощью файла ресурсов. Файл ресурсов имеет расширение .rc и несёт в себе текстовый код, описывающий используемые в приложении ресурсы. Подобные скрипты используются в проектах Visual Studio, основанных на WinAPI, и содержат различные дескрипторы иконок, строк, идентификаторов и прочего. В проектах Qt всё это имеет мало смысла, однако включение общей информации о программе всё же необходимо. Ниже приведены исходный код файла ресурсов и содержимое файла проекта, который также потребуется изменить:
resources.rc
IDI_ICON1 ICON «icon.ico» #include #define VER_FILEVERSION 1,0,0,0 #define VER_FILEVERSION_STR «1.0.0.0 » #define VER_PRODUCTVERSION 1,0,0 #define VER_PRODUCTVERSION_STR «1.0.0 » #define VER_FILEDESCRIPTION_STR «HelloWorld» #define VER_INTERNALNAME_STR «Sensor» #define VER_LEGALCOPYRIGHT_STR «Copyright (C) 2015, MyCompany» #define VER_ORIGINALFILENAME_STR «HelloWorld.exe» #define VER_PRODUCTNAME_STR «Hello World» VS_VERSION_INFO VERSIONINFO FILEVERSION VER_FILEVERSION PRODUCTVERSION VER_PRODUCTVERSION BEGIN BLOCK «StringFileInfo» BEGIN BLOCK «040904E4» BEGIN VALUE «FileDescription», VER_FILEDESCRIPTION_STR VALUE «FileVersion», VER_FILEVERSION_STR VALUE «InternalName», VER_INTERNALNAME_STR VALUE «LegalCopyright», VER_LEGALCOPYRIGHT_STR VALUE «OriginalFilename», VER_ORIGINALFILENAME_STR VALUE «ProductName», VER_PRODUCTNAME_STR VALUE «ProductVersion», VER_PRODUCTVERSION_STR END END BLOCK «VarFileInfo» BEGIN VALUE «Translation», 0x409, 1252 END END
HelloWorld.pro
QT += core gui widgets TARGET = HelloWorld TEMPLATE = app SOURCES += main.cpp RC_FILE = resources.rc
В данном примере важно не забыть добавить файлы resources.rc и icon.ico в папку с исходными файлами проекта. На рисунке ниже показано окно свойств программы после сборки:
Иногда бывает необходимо, чтобы программа запускалась с правами администратора. В рамках Qt это можно реализовать путём использования несложных инструкций в файле проекта. Ниже приведён код, позволяющий программе запрашивать права администратора при запуске:
HelloWorld.pro
QT += core gui widgets TARGET = HelloWorld TEMPLATE = app SOURCES += main.cpp RC_FILE = resources.rc win32 < CONFIG += embed_manifest_exe QMAKE_LFLAGS_WINDOWS += /MANIFESTUAC:»level=’requireAdministrator'» >
Следует отметить, что все указанные выше инструкции будут гарантированно работать только при использовании комплекта сборки Visual Studio. Подробную информацию о файлах ресурсов можно найти на портале MSDN в разделе «About Resource Files».
2. Компоновка дистрибутива программы
Создание дистрибутива приложения с учётом всех его файлов, которые должны устанавливаться на компьютерах пользователей, вероятно, является самым сложным этапом развёртывания. Требуется тщательно проанализировать исполняемый файл программы на наличие зависимостей, позаботиться о файлах переводов, не забыть про ресурсы приложения. Решить часть этих проблем поможет утилита windeployqt.exe, которая поставляется вместе с комплектом сборки. Данный инструмент работает в командной строке и поддерживает некоторые параметры конфигурации. На рисунке ниже показано окно командной строки с запущенной утилитой:
Последним параметром обязательно должен быть указан путь к двоичным файлам собранного приложения или имена этих файлов. В таблице ниже перечислены параметры утилиты, которые можно использовать при работе с ней:
Параметр | Описание |
-?, -h, —help | Вывод справки |
-v, —version | Вывод информации о версии |
—dir каталог> | Использовать указанный каталог вместо каталога файлов |
—libdir путь> | Каталог, в который будут скопированы библиотеки |
—debug | Использовать отладочные версии файлов |
—release | Использовать файлы для выпуска |
—release-with-debug-info | Использовать файлы для выпуска с отладочной информацией |
—force | Заменить уже существующие файлы |
—dry-run | Провести работу с целью проверки |
—no-plugins | Пропустить копирование плагинов |
—no-libraries | Пропустить копирование библиотек |
—qmldir каталог> | Сканировать импорт QML, начиная с указанного каталога |
—no-quick-import | Пропустить Qt Quick |
—no-translations | Пропустить копирование файлов перевода |
—no-system-d3d-compiler | Пропустить копирование компилятора Direct3D |
—compiler-runtime | Копировать зависимости компилятора |
—no-compiler-runtime | Пропустить зависимости компилятора |
—webkit2 | Копировать файлы WebKit2 |
—no-webkit2 | Пропустить WebKit2 |
—json | Печатать вывод в формате JSON |
—angle | Копировать файлы ANGLE |
—no-angle | Пропустить ANGLE |
—list режим> | Печатать только имена копируемых файлов. Режимы: source, target, relative, mapping |
—verbose уровень> | Уровень отладки |
-имя библиотеки> | Добавить указанную библиотеку |
—no-имя библиотеки> | Не добавлять указанную библиотеку |
После запуска утилиты возле исполняемого файла программы должны появиться различные библиотеки и служебные файлы, которые позволят приложению корректно запускаться и работать на многих компьютерах. На рисунке ниже показано окно Проводника Windows со структурой дистрибутива:
Следует отметить, что перед использованием windeployqt.exe необходимо добавить путь к этому файлу в переменную среды PATH, в противном случае данный инструмент работать не будет.
3. Подписание кода и создание установщика
После компоновки дистрибутива программы попробуем запустить приложение от имени администратора. На рисунке ниже показано сообщение системной службы User Account Control (UAC) с предупреждением о запуске приложения неизвестного издателя:
Данное предупреждение отпугивает пользователей и создаёт приложению плохую репутацию. Чтобы исправить ситуацию, нужно подписать файлы программы с помощью специального сертификата. Разработчики, подписывая свои программы, как бы дают дополнительные гарантии надёжности приложений с точки зрения информационной безопасности.
Разработчики программного обеспечения с открытым исходным кодом могут получить сертификаты для своих проектов бесплатно, к примеру, на сайте Certum. Для использования сертификата понадобиться специальная программа, которая подпишет файлы приложения. Для этого можно использовать удобный инструмент DigiCert Certificate Utility. На рисунке ниже показано окно данной программы со списком сертификатов для подписания кода:
После использования данной утилиты стоить снова попробовать запустить приложение от имени администратора. Ниже показано сообщение UAC с отображением информации об издателе программы:
После проделанной работы пришло время задуматься над выбором системы создания установщика для подготовленного приложения. Существуют как платные, так и бесплатные продукты для выполнения данной задачи. В таблице ниже перечислены некоторые инструменты для создания программ установки:
Платные | Бесплатные |
InstallShield | Qt Installer Framework |
Setup Factory | NSIS |
SetupBuilder | Inno Setup |
Smart Install Maker | WiX |
Сложно дать какие-либо рекомендации по поводу выбора той или иной системы. Разработчики ПО с открытым исходным кодом, вероятно, выберут бесплатные инструменты, в то же время платные продукты часто используются коммерческими компаниями.
В заключение нужно сказать, что к подготовке приложений к выпуску следует подходить с большой ответственностью. Перед использованием программы пользователь проходит этап установки продукта на компьютер. Информация, которую он при этом получает, должна произвести благоприятное впечатление.
Источник: habr.com