Проект установщика Qt: как сгенерировать package.xml и config.xml

Я стараюсь сделать свой проект Qt Installer более удобным.

Мне нужно централизовать информацию о моем приложении и компонентах (config.xml и package.xml) в одном файле. Я не хочу прыгать по разным файлам с одинаковым именем и искать изменяемые элементы между тегами xml.

Моя первая мысль - сделать это прямо в *.pro файле проекта установщика. Я помещаю секции переменных в заголовок файла проекта установщика. Но где мне нужно разместить код для генерации xml?

Как лучше (нативный/удобный/кроссплатформенный) это сделать?


person Kroll    schedule 11.01.2017    source источник


Ответы (1)


Ответ здесь прост: вы не можете генерировать файлы XML для установщика Qt: вы пишете их вручную, как описано в документация.

В этом разделе описываются следующие задачи, которые необходимо выполнить для создания установщика:

  1. Создайте каталог пакетов, который будет содержать все файлы конфигурации и устанавливаемые пакеты.
  2. Создайте файл конфигурации, содержащий информацию о том, как создавать двоичные файлы установщика и онлайн-репозитории.
  3. Создайте файл с информацией о пакете, содержащий информацию об устанавливаемых компонентах.
  4. Создайте содержимое установщика и скопируйте его в каталог пакета.
  5. Используйте инструмент binarycreator для создания установщика.

Однако, если вы внимательно посмотрите на примеры, вы все равно сможете сгенерировать установщик в *.про файл. Давайте случайным образом выберем пример: Информация о системе :

TEMPLATE = aux

INSTALLER = installer

INPUT = $$PWD/config/config.xml $$PWD/packages
example.input = INPUT
example.output = $$INSTALLER
example.commands = ../../bin/binarycreator -c $$PWD/config/config.xml -p $$PWD/packages ${QMAKE_FILE_OUT}
example.CONFIG += target_predeps no_link combine

QMAKE_EXTRA_COMPILERS += example

OTHER_FILES = README

Если вы хотите применить это к своему проекту, я думаю, вам придется изменить строку ../../bin/binarycreator и сделать ее системной, изменив PATH. Можно было бы вызвать внешний скрипт и проанализировать XML-файлы, а также сделать необходимые замены, но вы переместите сложность в другое место.

Вместо поддержки старых добрых файлов XML вы создадите что-то среднее между XSLT и XML. Может быть, вы могли бы просто написать XSLT (или XSL, или XQUERY) и сгенерировать XML, но я не знаю никого, кто бы его использовал. В последний раз я использовал его, когда изучал информатику давным-давно :)

person MBach    schedule 14.01.2017