AddPackageDependency 函数 (appmodel.h)

使用 TryCreatePackageDependency 方法添加前面创建的框架包依赖项的运行时引用和指定选项。 此方法成功返回后,应用可以激活类型并使用框架包中的内容。

语法

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

参数

packageDependencyId

类型: PCWSTR

要解析并添加到调用进程的包图的包依赖项的 ID。 此参数必须与通过使用 TryCreatePackageDependency 函数通过) CreatePackageDependencyOptions_ScopeIsSystem 选项对调用用户或系统 (定义的 依赖项匹配,否则返回错误。

rank

类型: INT32

用于将解析的包添加到调用方包图的排名。 有关详细信息,请参阅备注。

options

类型: AddPackageDependencyOptions

添加包依赖项时要应用的选项。

packageDependencyContext

类型: PACKAGEDEPENDENCY_CONTEXT*

添加的包依赖项的句柄。 此句柄在传递到 RemovePackageDependency 之前有效。

packageFullName

类型: PCWSTR*

此方法返回时,包含指向以 null 结尾的 Unicode 字符串的指针的地址,该字符串指定已解析依赖项的包的全名。 调用 HeapFree 不再需要此资源后,调用方负责释放此资源。

返回值

类型: HRESULT

如果函数成功,则返回 ERROR_SUCCESS。 否则,函数将返回错误代码。 可能的错误代码包括以下内容。

返回代码 说明
E_INVALIDARG packageDependencyIdpackageDependencyContext 参数在输入时为 NULL。

注解

调用此方法会将框架包依赖项解析为系统上的特定包。 它还会通知 OS 框架包正在使用中,并以并行方式处理任何版本更新, (有效地延迟卸载或以其他方式维护旧版本,直到应用) 完成使用它。 包解析特定于用户,可以为系统上的不同用户返回不同的值。

每次成功的 AddPackageDependency 调用都会将解析的包添加到调用进程的包图中,即使已存在也是如此。 API (没有应用重复的检测或筛选,即来自包的多个引用) 无害。 解析完成后,包依赖项将一直为该用户解析,直到通过 RemovePackageDependency 删除该用户所有进程中的最后一个引用或进程终止。

此方法成功返回后,应用可以激活类型并使用框架包中的内容,直到调用 RemovePackageDependency

如果包图中存在与 调用 AddPackageDependency 相同的级别相同的包,则默认情况下 (已解析的包) 添加到同一级别的其他包之后。 若要在相同级别的其他包之前添加包,请为 options 参数指定AddPackageDependencyOptions_PrependIfRankCollision

有关详细信息,请参阅 在运行时使用动态依赖项 API 引用 MSIX 包

要求

要求
最低受支持的客户端 ) 10.0.22000.0 中引入Windows 11 (
标头 appmodel.h

另请参阅

RemovePackageDependency

TryCreatePackageDependency

使用动态依赖项 API 在运行时引用 MSIX 包