KasperskyOS Community Edition 1.3

Интерфейс IPackageManifest

API определен в заголовочном файле sysroot-*-kos/include/component/package_manager/i_package_manifest.h из состава KasperskyOS SDK.

API позволяет получать значения ключей манифеста KPA-пакета. Подробнее о доступных ключах манифеста KPA-пакета см. "Манифест KPA-пакета"

Сведения о функциях API приведены в таблице ниже.

Получение идентификатора программы

Чтобы получить идентификатор программы, установленной из KPA-пакета, нужно вызвать функцию GetPackageID().

Получение сведений о компонентах KPA-пакета

Чтобы получить сведения о компонентах KPA-пакета, нужно вызвать функцию GetApplicationsInfo(). Через выходной параметр applications функция возвращает сведения о компонентах KPA-пакета в виде вектора структур ApplicationInfo.

struct ApplicationInfo { // Имя компонента KPA-пакета. std::string name; // Путь к директории относительно пути /<имя пакета>/res, // в которую установлен компонент KPA-пакета. std::string path; // Неиспользуемый параметр. std::string iconPath; // Неиспользуемый параметр. std::string containerPath; // Неиспользуемый параметр. std::string etcPath; // Хеш-сумма файла компонента KPA-пакета. std::string digest; // Объект формата JSON. ManifestType extensions; // Тип компонента KPA-пакета. std::string type; };

Элемент структуры extensions описывает объект формата JSON. ManifestType является псевдонимом типа nlohmann:json.

Получение конфигураций запуска программы

Чтобы получить сведения о конфигурациях запуска программы, установленной из KPA-пакета, нужно вызвать функцию GetRunConfigurationsInfo(). Через выходной параметр runConfigurations функция возвращает сведения о конфигурациях запуска программы в виде вектора структур RunConfigurationInfo.

struct RunConfigurationInfo { // Уникальный в рамках данного KPA-пакета идентификатор конфигурации запуска. std::string id; // Имя конфигурации запуска. std::string name; // Класс безопасности программы. std::string eiid; // Путь к файлу компонента KPA-пакета. std::string path; // Список аргументов в виде массива строк. std::vector<std::string> args{}; // Список переменных окружения. std::vector<std::string> envs{}; // Указывает, является эта конфигурация запуска первичной при старте программы: // true – является первичной, false – не является. bool primary{false}; // Указывает, является эта конфигурация запускаемой автоматически: // true – является запускаемой автоматически, false – не является. bool autorun{false}; };

Получение сведений о программе

Чтобы получить сведения о программе, установленной из KPA-пакета, нужно вызвать функцию GetPackageInfo(). Через выходной параметр packageInfo функция возвращает сведения о конфигурациях запуска в виде структуры PackageInfo.

struct PackageInfo { // Уникальный идентификатор программы. std::string id; // Название программы. std::string name; // Версия программы. std::string version; // Неиспользуемый параметр. std::string title; // Неиспользуемый параметр. std::string summary; // Описание программы. std::string description; // Номер сборки программы. std::string buildNumber; // Логическое значение, указывающее на то, является ли программа системной: // true – является, false – не является. bool systemApplication; // Объект произвольного формата. ManifestType extensions; };

Получение сведений об изолированном хранилище программы

Чтобы получить сведения об изолированном хранилище программы, нужно вызвать функцию GetPrivateStorageInfo(). Через выходной параметр packageInfo функция возвращает сведения о конфигурациях запуска в виде структуры PrivateStorage.

struct PrivateStorage { // Размер хранилища данных программы в МБ. size_t size; // Тип файловой системы хранилища данных программы. std::string fsType; };

Получение сведений об объектах произвольного формата

Чтобы получить сведения об объектах произвольного формата, которые добавлены разработчиком KPA-пакета (ключ extensions из манифеста KPA-пакета), нужно вызвать функцию Get().

Функции i_package_manifest.h

Функция

Сведения о функции

GetPackageID()

Назначение

Получает уникальный идентификатор программы, установленной из KPA-пакета.

Параметры

  • [out] id – уникальный идентификатор программы.

Возвращаемые значения

В случае успеха возвращает kos::rtl::Ok, иначе возвращает код ошибки.

GetApplicationsInfo()

Назначение

Получает сведения о компонентах KPA-пакета.

Параметры

  • [out] applications – вектор структур ApplicationInfo, содержащих сведения о компонентах KPA-пакета.

Возвращаемые значения

В случае успеха возвращает kos::rtl::Ok, иначе возвращает код ошибки.

GetRunConfigurationsInfo()

Назначение

Получает сведения о конфигурациях запуска программы, установленной из KPA-пакета.

Параметры

  • [out] runConfigurations – вектор структур RunConfigurationInfo, содержащих сведения о конфигурациях запуска.

Возвращаемые значения

В случае успеха возвращает kos::rtl::Ok, иначе возвращает код ошибки.

GetPackageInfo()

Назначение

Получает сведения о программе, установленной из KPA-пакета.

Параметры

  • [out] packageInfo – структура PackageInfo, содержащая сведения о программе.

Возвращаемые значения

В случае успеха возвращает kos::rtl::Ok, иначе возвращает код ошибки.

GetPrivateStorageInfo()

Назначение

Получает сведения об изолированно хранилище программы.

Параметры

  • [out] packageInfo – структура PrivateStorage, содержащая сведения об изолированном хранилище программы.

Возвращаемые значения

В случае успеха возвращает kos::rtl::Ok, иначе возвращает код ошибки.

Get()

Назначение

Получает сведения об объектах произвольного формата, который добавлены в манифест разработчиком KPA-пакета.

Параметры

Нет.

Возвращаемые значения

Возвращает указатель на объект типа pkgmgr::IPackageManifest::ManifestType.

Пример использования:

client.cpp

#include <component/package_manager/kos_ipc/package_manager_proxy.h> namespace pkgmgr = package_manager; int main(int argc, const char *argv[]) { // ... // Получить указатель на экземпляр интерфейса IPackageManifest // для KPA-пакета с уникальным идентификатором uid1. pkgmgr::IPackageManifestPtr manifest; if (pkgc->GetManifest(uid1, manifest) != kos::rtl::Ok) return EXIT_FAILURE; // Получить уникальный идентификатор программы. std::string packageID; if (manifest->GetPackageID(packageID) != kos::rtl::Ok) return EXIT_FAILURE; std::cout << packageID << '\n'; // Получить сведения о компонентах KPA-пакета. std::vector<package_manager::IPackageManifest::ApplicationInfo> infos; manifest->GetApplicationsInfo(infos); for (auto &info: infos) { std::cout << info.name << " " << info.path << "\n"; } // Получить сведения об объектах произвольного формата. pkgmgr::IPackageManifest::ManifestType jsonManifest = manifest->Get(); std::cout << jsonManifest["package"]["description"] << '\n'; // Получить сведения о конфигурациях запуска программы, установленной из KPA-пакета. std::vector<package_manager::IPackageManifest::RunConfigurationInfo> runConfigurationInfos; manifest->GetRunConfigurationsInfo(runConfigurationInfos); for (auto &runConfigurationInfo : runConfigurationInfos) { std::cout << "RunConfiguration.id = " << runConfigurationInfo.id << ", autorun = " << runConfigurationInfo.autorun << "\n"; } // ... }