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
Функция  | 
Сведения о функции  | 
|---|---|
  | 
Назначение Получает уникальный идентификатор программы, установленной из KPA-пакета. Параметры 
 Возвращаемые значения В случае успеха возвращает   | 
  | 
Назначение Получает сведения о компонентах KPA-пакета. Параметры 
 Возвращаемые значения В случае успеха возвращает   | 
  | 
Назначение Получает сведения о конфигурациях запуска программы, установленной из KPA-пакета. Параметры 
 Возвращаемые значения В случае успеха возвращает   | 
  | 
Назначение Получает сведения о программе, установленной из KPA-пакета. Параметры 
 Возвращаемые значения В случае успеха возвращает   | 
  | 
Назначение Получает сведения об изолированно хранилище программы. Параметры 
 Возвращаемые значения В случае успеха возвращает   | 
  | 
Назначение Получает сведения об объектах произвольного формата, который добавлены в манифест разработчиком KPA-пакета. Параметры Нет. Возвращаемые значения Возвращает указатель на объект типа   | 
Пример использования:
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";
}
// ...
}
В начало