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


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

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

См. также AddPackageDependency2.

Синтаксис

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

Параметры

packageDependencyId

Тип: PCWSTR

Идентификатор зависимости пакета, которую необходимо устранить и добавить в граф пакета вызывающего процесса. Этот параметр должен соответствовать зависимости пакета, определенной с помощью функции TryCreatePackageDepend ency для вызывающего пользователя или системы (через параметр 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 для параметра .

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 11 (появилась в версии 10.0.22000.0)
заголовка appmodel.h

См. также