MSIX 支持四种包类型:Main、Framework、Resource 和 Optional。 MSIX 还支持捆绑包,这些包是一个或多个 MSIX 包的分发容器。
包类型定义部署、依赖项、执行和维护行为的组合。 某些行为固有于该类型,而清单声明可以覆盖其他默认值。
| 类型 | 主要用途 | 清单或身份指示器 |
|---|---|---|
| 主页 | 应用程序的主包 | 没有适用于另一种包类型的声明 |
| 框架 | 共享库、组件或运行时内容 | <Framework>true</Framework> |
| 资源 | 特定于语言、规模或限定符的资源 | <ResourcePackage>true</ResourcePackage> |
| 可选 | 与一个主软件包关联的附加内容 | <uap3:MainPackageDependency> |
| 套装 | 多个 MSIX 包的分发容器 | 捆绑清单和一个 ResourceId 值为 ~ |
主要软件包
Main 包表示应用程序的主包。 它可以声明应用程序、功能、依赖项、扩展和进程外服务器。
清单文件不包含显式 Main-package 标记。 当包本身未声明为另一个包类型时,包是一个 Main 包。
框架包
框架包提供共享库、组件、资源或其他运行时内容。 其他包或进程在加载框架包内容之前将框架包添加到其包图。
框架包支持并行版本,以便应用程序可以独立迁移到较新版本。 包通过将 Framework 清单元素设置为 true 来声明此类型。
有关使用打包和未打包进程中的框架包的信息,请参阅 使用动态依赖项 API。
资源包
资源包将语言、显示缩放或其他限定符特定的资源与主包或可选包分开。 Windows仅安装应用于设备或用户的资源包。
默认情况下,资源包不允许执行。 包可以使用 uap6:AllowExecution 覆盖此默认值。 包通过将 ResourcePackage 设置为 true 来声明资源类型。
可选软件包
可选包包含特定主包的其他内容。 例如,应用程序可以将可下载的地图、高分辨率资产或可选工具放在单独的包中。
与框架包不同,可选包与一个 Main 包系列相关联。 它通过 uap3:MainPackageDependency 声明该关系。
有关编写和相关集合要求,请参阅 可选包和相关集合编写。
捆绑软件包
MSIX 捆绑包 (.msixbundle) 包含一个或多个 MSIX 包。 捆绑包提供一个分发项目,同时允许Windows仅安装应用于目标设备的体系结构和资源包。
捆绑包中的所有包都属于同一包系列。 捆绑包是容器,而不是第五个可部署包类型。
识别代码中的包类型
Windows.ApplicationModel.Package 类公开标识包类型的属性:
static string GetPackageType(Windows.ApplicationModel.Package package)
{
if (package.IsBundle)
{
return "Bundle";
}
if (package.IsFramework)
{
return "Framework";
}
if (package.IsResourcePackage)
{
return "Resource";
}
if (package.IsOptional)
{
return "Optional";
}
return "Main";
}
使用 PowerShell 标识包类型
默认情况下, Get-AppxPackage 返回 Main 和 Framework 包。 使用 -PackageTypeFilter 包括其他类型:
Get-AppxPackage -PackageTypeFilter Main,Framework,Resource,Optional,Bundle |
Select-Object Name, PackageFullName, IsFramework, IsResourcePackage, IsBundle
输出对象不提供 IsOptional 属性。 使用筛选器以包含可选包,并在需要区分它们时检查其清单或包关系。