Функция MddAddPackageDependency (msixdynamicdependency.h)
Добавляет ссылку времени выполнения для зависимости пакета платформы, созданной ранее с помощью метода MddTryCreatePackageDependency , с указанными параметрами. После успешного возврата этого метода приложение сможет активировать типы и использовать содержимое из пакета платформы.
Синтаксис
HRESULT MddAddPackageDependency(
PCWSTR packageDependencyId,
INT32 rank,
MddAddPackageDependencyOptions options,
MDD_PACKAGEDEPENDENCY_CONTEXT *packageDependencyContext,
PWSTR *packageFullName
) noexcept;
Параметры
packageDependencyId
Тип: PCWSTR
Идентификатор зависимости пакета, которую необходимо разрешить и добавить в граф пакета вызывающего процесса. Этот параметр должен соответствовать зависимости пакета, определенной с помощью функции TryCreatePackageDependency для вызывающего пользователя или системы (с помощью параметра ScopeIsSystem ), в противном случае возвращается ошибка.
rank
Тип: INT32
Ранг, используемый для добавления разрешенного пакета в граф пакета вызывающей стороны. Дополнительные сведения см. в примечаниях.
options
Тип: MddAddPackageDependencyOptions
Параметры, применяемые при добавлении зависимости пакета.
packageDependencyContext
Тип: PACKAGEDEPENDENCY_CONTEXT*
Дескриптор добавленной зависимости пакета. Этот дескриптор действителен до тех пор, пока он не будет передан в RemovePackageDependency.
packageFullName
Тип: PCWSTR*
Полное имя пакета, в который была разрешена зависимость. Используйте функцию HeapAlloc , чтобы выделить память для этого параметра, и heapFree , чтобы освободить память.
Возвращаемое значение
Тип: HRESULT
Если функция завершается успешно, она возвращает ERROR_SUCCESS. В противном случае функция возвращает код ошибки. Возможные коды ошибок включают следующие.
Код возврата | Описание |
---|---|
E_INVALIDARG | Параметр packageDependencyId или packageDependencyContext имеет значение NULL для входных данных. |
Комментарии
При вызове этого метода зависимость пакета платформы разрешается в определенный пакет в системе. Он также информирует ОС о том, что пакет платформы активно используется и обрабатывает все обновления версий параллельно (по сути, откладывает удаление или иным образом обслуживание старой версии до тех пор, пока приложение не закончит использовать ее). Разрешение пакетов зависит от пользователя и может возвращать разные значения для разных пользователей в системе.
Каждый успешный вызов MddAddPackageDependency добавляет разрешенный пакет в граф пакета вызывающего процесса, даже если он уже присутствует. API не применяет обнаружение дубликатов или фильтрацию (то есть несколько ссылок из пакета не являются вредными). После завершения разрешения зависимость пакета остается разрешенной для этого пользователя до тех пор, пока последняя ссылка во всех процессах этого пользователя не будет удалена через MddRemovePackageDependency или процесс не будет завершен. Успешные вызовы этого метода изменяют значение идентификатора создания, возвращаемое MddGetGenerationId.
После успешного возврата этого метода приложение сможет активировать типы и использовать содержимое пакета платформы до вызова MddRemovePackageDependency .
Если в графе пакетов присутствует несколько пакетов с тем же рангом, что и при вызове MddAddPackageDependency, разрешенный пакет (по умолчанию) добавляется после других объектов того же ранга. Чтобы добавить пакет перед другими пользователями того же ранга, укажите PrependIfRankCollision в параметре options .
Дополнительные сведения см. в статье Использование API динамических зависимостей для ссылки на пакеты MSIX во время выполнения.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10, версия 1809 (с Windows App SDK 1.0 или более поздней версии) |
Верхняя часть | msixdynamicdependency.h |
См. также раздел
Использование API динамических зависимостей для ссылки на пакеты MSIX во время выполнения