Создание конфигурационных пакетов
На устройство пользователя может быть установлено несколько приложений одного вендора. Конфигурационные пакеты используются для доставки данных в приложение. Например, чтобы обновить лицензию в приложении, изменить настройки приложения, добавить в приложение контент. Конфигурационный пакет создаётся разработчиком того же вендора. Конфигурационный пакет заменяет файлы, если имена совпадают. Если один вендор использует и поставляет несколько приложений и несколько конфигурационных пакетов, то разработчик вендора должен обеспечить уникальность имен для папок, в которые будут писать данные разные конфигурационные пакеты. Например:
Вендор 1 Приложение 1 Конф.файл 1
/папка_вендора_1/папка_приложения_1/
/папка_вендора/папка_конф.файла_1/
Вендор 1 Приложение 2 Конф.файл 2
/папка_вендора_1/папка_приложения_2/
/папка_вендора/папка_конф.файла_2/
В противном случае, если имена папок для файлов конфигураций не отличаются, конф.файл_1
может внести
незапланированные изменения в Приложение 2
.
Пакеты могут размещать данные в /usr/share/common/{доменное_имя}/
и в поддиректориях, например,
в /usr/share/common/{доменное_имя}/{название_приложения}
, где значения {доменное_имя}
и {название_приложения}
должны соответствовать тем, которые указаны
в .desktop-файле.
- Требования к конфигурационным пакетам
- Использование конфигурационных пакетов
- Алгоритм создания конфигурационного пакета
Требования к конфигурационным пакетам
В .spec-файле пакета необходимо указать путь к конфигурационному файлу, который размещается
в каталоге /usr/share/common/{доменное_имя}/
или в соответствующей поддиректории.
Если конфигурационные файлы установлены в директорию /usr/share/common/{доменное_имя}/
,
они будут доступны всем приложениям данного вендора.
В случае установки в поддиректорию /usr/share/common/{доменное_имя}/{название_приложения}
,
доступ к файлам будет ограничен только для приложения этого вендора, соответствующего указанному
названию.
Данная папка монтируется в контейнер к другим приложениям того же вендора, которые смогут использовать файлы из неё.
Следует распаковывать данные с правами на чтение для всех пользователей. Данные будут в безопасности за счёт того, что все приложения работают в контейнерах.
В .desktop-файле должны быть прописаны следующие параметры:
OrganizationName={доменное_имя}
ApplicationName={название_приложения}
NoDisplay=true
А так же Exec=sailfish-qml
, который используется для qml-only приложений.
Параметр Exec
нужен для прохождения пакетом валидации, при этом запуск не выполняется,
поэтому отсутствие libsailfishapp
не мешает созданию конфигурационных пакетов.
Примечание. Библиотека libsailfishapp
устарела и будет удалена в будущих релизах.
Вместо libsailfishapp
следует использовать libauroraapp.
Профиль безопасности конфигурационного пакета может быть любым.
Но при использовании профилей Regular
или Antivirus
необходимо положить в пакет иконки по пути /usr/share/icons/hicolor/IconSize/apps/{название_приложения}.png
.
Каждый новый конфигурационный пакет должен увеличивать версию приложения, иначе он не будет установлен.
Использование конфигурационных пакетов
Конфигурационные пакеты позволяют монтировать любые неисполняемые файлы в контейнер с основным приложением.
При установке данных конфигурационного пакета в /usr/share/common/{доменное_имя}/
файлы могут использоваться всеми приложениями того же вендора.
При установке данных конфигурационного пакета в /usr/share/common/{доменное_имя}/{название_приложения}
файлы могут использоваться только данным приложением.
Пути к конфигурационным файлам из пакетов не должны быть прописаны в .spec-файлах основного пакета, иначе возникнет конфликт, и RPM не сможет установить конфигурационный пакет.
Пути к файлам, полученным из конфигурационного пакета, можно узнать с помощью метода
Aurora::Application::organizationPathTo(const QString &filename)
, где filename
— имя файла из конфигурационного пакета.
Вызов указанного метода выполняется из основного приложения.
Полный список методов доступен в разделе Данные пользователя.
Алгоритм создания конфигурационного пакета
- Описать в основном приложении правила использования данных из
/usr/share/common/{доменное_имя}/
: открыть в нем файл, читать или писать в него. - В Аврора IDE создать Qt приложение, использующее пакет, и указать при создании ту же организацию, что и в основном пакете.
- Удалить из приложения создаваемую по умолчанию папку с исходными кодами и удалить
%{_bindir}
из .spec-файла. - Описать в .desktop-файле
Exec=sailfish-qml
иNoDisplay=true
. - Создать конфигурационный файл с данными, нужными основному приложению, и указать в .spec-файле один из двух путей для установки пакета.
- Добавить в .spec-файл зависимость
Requires: libauroraapp-launcher
. - Подписать конфигурационный пакет ключами профиля безопасности.