# Выпуск CQtDeployer v1.5.0

Выпуск утилиты развертывания приложений C ++ / Qt и QML CQtDeployer v1.5.0

Это первое крупное обновление в 2021 году. CQtDeployer 1.5 содержит множество полезных улучшений. Самыми большими улучшениями являются добавление возможности упаковывать пакеты deb и возможность использовать собственный шаблон упаковки для среды установки qt.

## Полный список всех изменений

## CQtDeployer 1.5.0

### Новые возможности

- Добавлена ​​новая тема установщика qif "quasarDark".
- Добавлена ​​поддержка работы с кастомным шаблоном для опции qif.
- Добавлена ​​поддержка пакетов debian.
- Добавлены поддержка иконок целей. Теперь опция icon работает с целями, но не с пакетами.
- Добавлена ​​поддержка управления файлами пользовательского перевода.
- Добавлена ​​поддержка развертывания неисполняемых файлов. (опция extraData)
- Добавлены переменные окружения для развернутых приложений.
- Добавлена ​​поддержка создания пакетов deb.
- Добавлена ​​поддержка создания архивов zip.
- Добавлена ​​поддержка создания установщика qif с использованием настраиваемого шаблона.
- Добавлена команда для инициализации шаблонов qif и deb по умолчанию (getDefaulttemplate) 
- Добавлена ​​поддержка импорта пользовательских скриптов запуска.
- Добавлена ​​поддержка хэшей md5 пакетов.
- Добавлена ​​поддержка Qt6.1.

### Исправления

- Исправлена ​​стабильность для опции deploySystem в Windows.
- Исправлен подробный журнал.
- Исправлен общий журнал вывода.
- Исправлены опечатки в логе.
- Исправлено кросс-развертывание под платформу ARM
- Исправлено развертывание Qt6 qml
- Исправлены команды PowerShell в Windows.
- исправления ошибок и улучшения.


### Новые переменные окружения

- CQT_RUN_FILE - Эта переменная содержит путь к сценарию выполнения используемого приложения.
- CQT_PKG_ROOT - эта переменная содержит путь к корню текущего пакета.

### Новые параметры

- zip - создать ZIP-архив для развертываемой программы
- deb - Создать пакет deb для развертываемой программы 
- homepage - Устанавливает URL-адрес домашней страницы для пакета
- noQt - игнорирует ошибку инициализации qmake. Используйте только в том случае, если ваше приложение не использует фреймворк qt
- allowEmptyPackages - позволяет настраивать пустые пакеты.
- getDefaultTemplate - Извлекает шаблоны deb или qif по умолчанию.
- tr - Добавляет qm файлы в папку переводов.
- extraData - добавляет дополнительные файлы или каталоги как цель. Выбранный каталог будет скопирован в папку extraDataOut с сохранением собственной структуры.
- extraDataOut - Устанавливает путь к каталогу с дополнительными файлами данных.
- prefix - Устанавливает префикс для пакета относительно целевого каталога
- homePage - Устанавливает URL-адрес домашней страницы для пакета
- binPrefix - устанавливает префикс для опции bin.
- noHashSum - отключает хэши кампутных пакетов

### Устаревшие и удаленные параметры

- deploySystem-with-libc - вместо этого параметра используйте параметр deploySystem.
- allQmlDependes - вместо этого параметра используйте параметр qmlDir.


## Подробный разбор наиболее интересных изменений.

### Пакеты Debian
Эта функция очень удобна, если вы хотите создать серверное приложение.
Например, мне нужно создать простой сервер для простой игры.
Мои шаги:
* собрать мое приложение в режиме релиза.
* запустите cqtdeployer с опцией deb.

```bash
cqtdeployer -bin mySimpleServer deb -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
```
SimpleServer зависит только от qt, поэтому мне было достаточно указать только путь к qmake для моего приложения.

Это все!!!. И я получаю рабочий пакет deb.
По умолчанию CQtDeployer создает независимые пакеты debian.


### Почтовые архивы
Эта функция позволяет сжать пакеты вашего дистрибутива в zip-архив.

Пример:

```bash
cqtdeployer -bin mySimpleServer zip -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
```

# Пользовательский Шаблон для QIF 
Начиная с Версии CQtDeployer 1.5 вы можете использовать свой собственный шаблон установщика. Для этого вы должны передать в параметр qif путь к вашему шаблону.

```
cqtdeployer ... -qif /path/to/my/custom/qif/template
```

### Шаблон 
Шаблон qif долже содержать 2 папки:
* packages 
* config

### Внимание 
Название пакетов в папке packages должны совподать с названием пакетов при развертывание.
Например: 
``` json
"targetPackage": [
    [
        "myCustomInstaller",
        "tar1"
    ]
],
```

``` bash
.
├── config
│   ├── config.xml
│   └── style.qss
└── packages
    └── myCustomInstaller
        └── meta
            ├── installscript.qs
            └── package.xml

4 directories, 4 files

```

Если имена папок не совподут с именами пакетов то CQtDeployer будет использовать стандартный пакет для QIF.

Если у вас только один пакет, вы можете использовать опцию **name** для установки имени приложения.

```
cqtdeployer ... -qif /path/to/my/custom/qif/template -name myCustomInstaller
```

#### Не забудьте переименовать папку вашего пакета в имя пакета из опции имени.


``` bash
.
├── config
│   ├── config.xml
│   └── style.qss
└── packages
    └── myCustomInstaller  << "This is folder of the your package"
        └── meta
            ├── installscript.qs
            └── package.xml

4 directories, 4 files

```