Функция 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 |