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";
}
// ...
}
В начало