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


Функция 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 для параметров .

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

Требования

Требование Ценность
Минимально поддерживаемый клиент Windows 10 версии 1809 (с пакетом SDK для приложений Windows 1.0 или более поздней версии)
Заголовок msixdynamicdependency.h

См. также

mddRemovePackageDependency

mddTryCreatePackageDependency

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