使用具有指定选项的 MddTryCreatePackageDependency 方法为之前创建的框架包依赖项添加运行时引用。 此方法成功返回后,应用可以激活类型并使用框架包中的内容。
语法
HRESULT MddAddPackageDependency(
PCWSTR packageDependencyId,
INT32 rank,
MddAddPackageDependencyOptions options,
MDD_PACKAGEDEPENDENCY_CONTEXT *packageDependencyContext,
PWSTR *packageFullName
) noexcept;
参数
packageDependencyId
类型:PCWSTR
要解析的包依赖项的 ID,并将其添加到调用进程的包图中。 此参数必须与调用用户或系统使用 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返回的生成 ID 值。
此方法成功返回后,应用可以激活类型并使用框架包中的内容,直到调用 mddRemovePackageDependency 。
如果包关系图中存在多个包,其级别与调用 MddAddPackageDependency相同,则解析的包将(默认情况下)添加到同一排名的其他包之后。 若要在相同排名的其他包之前添加包,请为 选项 参数指定 PrependIfRankCollision。
有关详细信息,请参阅 使用动态依赖项 API 在运行时引用 MSIX 包。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 10 版本 1809(使用 Windows 应用 SDK 1.0 或更高版本) |
标头 | msixdynamicdependency.h |