Функция 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 |
См. также раздел
Использование API динамических зависимостей для ссылки на пакеты MSIX во время выполнения