Поделиться через


Функция AddPackageDependency (appmodel.h)

Добавляет ссылку времени выполнения для зависимости пакета платформы, созданной ранее с помощью метода TryCreatePackageDependency , с указанными параметрами. После успешного возврата этого метода приложение сможет активировать типы и использовать содержимое из пакета платформы.

Синтаксис

HRESULT AddPackageDependency(
  PCWSTR                      packageDependencyId,
  INT32                       rank,
  AddPackageDependencyOptions options,
  PACKAGEDEPENDENCY_CONTEXT   *packageDependencyContext,
  PWSTR                       *packageFullName
);

Параметры

packageDependencyId

Тип: PCWSTR

Идентификатор зависимости пакета, которую необходимо разрешить и добавить в граф пакета вызывающего процесса. Этот параметр должен соответствовать зависимости пакета, определенной с помощью функции TryCreatePackageDependency для вызывающего пользователя или системы (с помощью параметра CreatePackageDependencyOptions_ScopeIsSystem ), иначе возвращается ошибка.

rank

Тип: INT32

Ранг, используемый для добавления разрешенного пакета в граф пакета вызывающей стороны. Дополнительные сведения см. в примечаниях.

options

Тип: AddPackageDependencyOptions

Параметры, применяемые при добавлении зависимости пакета.

packageDependencyContext

Тип: PACKAGEDEPENDENCY_CONTEXT*

Дескриптор добавленной зависимости пакета. Этот дескриптор действителен до тех пор, пока он не будет передан в RemovePackageDependency.

packageFullName

Тип: PCWSTR*

При возврате этого метода содержит адрес указателя на строку Юникода, завершающуюся null, которая указывает полное имя пакета, в который была разрешена зависимость. Вызывающий объект отвечает за освобождение этого ресурса, если он больше не нужен, вызывая HeapFree.

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

Тип: HRESULT

Если функция завершается успешно, она возвращает ERROR_SUCCESS. В противном случае функция возвращает код ошибки. Возможные коды ошибок включают следующие.

Код возврата Описание
E_INVALIDARG Параметр packageDependencyId или packageDependencyContext имеет значение NULL для входных данных.

Комментарии

При вызове этого метода зависимость пакета платформы разрешается в определенный пакет в системе. Он также информирует ОС о том, что пакет платформы активно используется и обрабатывает все обновления версий параллельно (по сути, откладывает удаление или иным образом обслуживание старой версии до тех пор, пока приложение не закончит использовать ее). Разрешение пакетов зависит от пользователя и может возвращать разные значения для разных пользователей в системе.

Каждый успешный вызов AddPackageDependency добавляет разрешенный пакет в граф пакета вызывающего процесса, даже если он уже присутствует. API не применяет обнаружение дубликатов или фильтрацию (то есть несколько ссылок из пакета не являются вредными). После завершения разрешения зависимость пакета остается разрешенной для этого пользователя, пока последняя ссылка во всех процессах для этого пользователя не будет удалена через RemovePackageDependency или процесс не будет завершен.

После успешного возврата этого метода приложение сможет активировать типы и использовать содержимое пакета платформы до вызова RemovePackageDependency .

Если в графе пакетов присутствует несколько пакетов с тем же рангом, что и при вызове AddPackageDependency, разрешенный пакет (по умолчанию) добавляется после других объектов того же ранга. Чтобы добавить пакет перед другими пользователями того же ранга, укажите AddPackageDependencyOptions_PrependIfRankCollision для параметра options .

Дополнительные сведения см. в статье Использование API динамических зависимостей для ссылки на пакеты MSIX во время выполнения.

Требования

Требование Значение
Минимальная версия клиента Windows 11 (представлено в версии 10.0.22000.0)
Верхняя часть appmodel.h

См. также раздел

RemovePackageDependency

TryCreatePackageDependency

Использование API динамических зависимостей для ссылки на пакеты MSIX во время выполнения