本文提供有关部署依赖框架的打包应用(请参阅
什么是 MSIX?)的指南,
这些应用使用Windows 应用 SDK。 其他依赖于框架的打包选项的等效主题是
Windows 应用 SDK针对与外部位置或未打包打包
的依赖框架的应用的部署指南。
默认情况下,在 Visual Studio
中使用 WinUI 3 模板之一
创建项目时,项目配置为使用单项目 MSIX(请参阅
使用单项目 MSIX 打包应用)或 Windows 应用程序打包项目(请参阅
在 Visual Studio
中为 MSIX 打包设置桌面应用程序)将应用构建到 MSIX 包中。 然后,可以使用 Visual Studio
中的
桌面应用或 UWP 应用中的说明为应用生成 MSIX 包。 为应用生成 MSIX 包后,可以使用多个选项来管理
MSIX 部署
。
若要详细了解打包应用在使用Windows 应用 SDK时可能需要的包,请参阅
Windows 应用 SDK
的部署体系结构。 这些包包括
Framework
、
Main
和
Singleton
包;它们均由Microsoft进行签名和发布。 部署打包的应用有两个主要要求:
部署Windows 应用 SDK框架包
。
调用部署 API
。
对于已打包的应用,需要 VCLibs 框架包依赖项。 有关详细信息,请参阅
适用于桌面桥的 C++ 运行时框架包
。
C#
中的检测示例。 需要 .NET 6 或更高版本。 有关详细信息,请参阅
.NET 下载
。
部署 Windows 应用 SDK 框架包
Windows 应用 SDK框架包包含运行时使用的Windows 应用 SDK二进制文件,并随应用程序一起安装。 框架对Windows 应用 SDK的不同通道有不同的部署要求。
在开发计算机上安装 Windows 应用 SDK NuGet 包的稳定发布版本(请参阅
稳定频道发行说明
),并使用提供的 WinUI 3 项目模板之一创建项目时,生成的包清单包含一个
PackageDependency
元素,该元素指定框架包的依赖项。
但是,如果使用单独的 Windows 应用程序打包项目手动生成应用包,则必须在
Application (package).wapproj
文件中声明
PackageReference
,如下所示:
<ItemGroup>
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.1">
<IncludeAssets>build</IncludeAssets>
</PackageReference>
</ItemGroup>
该包依赖项可确保将应用部署到另一台计算机时安装框架包。
在开发计算机上安装 Windows 应用 SDK NuGet 包的预览版本(请参阅预览版频道发行说明)时,Windows 应用 SDK 框架包的预览版本在生成期间部署为 NuGet 包依赖项。
调用部署 API
另请参阅初始化Windows 应用 SDK。
部署 API 由 Windows 应用 SDK 框架包提供,可在 Microsoft.Windows.ApplicationModel.WindowsAppRuntime 命名空间中使用。 Windows 应用程序模型不支持声明对 Main 和 Singleton 包的依赖项。 因此,出于以下原因,需要部署 API:
为框架包中没有的功能(例如推送通知)部署 Singleton 包。
若要部署 Main 包,该包允许从 Microsoft 应用商店自动更新框架包。
对于未通过应用商店分发的打包应用,开发人员负责分发框架包。 建议调用部署 API,以便传递任何关键服务更新。 请注意,若要使用框架包外部的功能(例如推送通知),必须部署 Singleton 包(这可以通过部署 API 完成,或者通过使用你自己的安装方法重新分发 MSIX 包)。
在 Windows 应用 SDK 版本 1.0 中,只有完全信任或具有 packageManagement 受限功能的打包应用才有权使用部署 API 安装 Main 和 Singleton 包依赖项。 对部分信任应用包的支持将在后面的版本中推出。
应在应用进程初始化后调用部署 API,但在应用使用使用单一实例包(例如推送通知)的Windows 应用 SDK运行时功能之前。 部署 API 的主要方法是 DeploymentManager 类的静态 GetStatus 和 Initialize 方法。
GetStatus 方法返回当前加载的Windows 应用 SDK运行时的当前部署状态。 使用此方法确定在当前应用可以使用Windows 应用 SDK功能之前是否需要安装Windows 应用 SDK运行时包。
Initialize 方法验证当前加载Windows 应用 SDK运行时所需的最低版本是否包含所有必需的包。 如果缺少任何包依赖项,该方法将尝试注册缺少的包。 从 Windows 应用 SDK 1.1 开始,Initialize 方法还支持强制部署Windows 应用 SDK运行时包的选项。 这会关闭 Main 和 Singleton 运行时包的任何进程,从而中断其服务(例如,推送通知在此期间不会传递通知)。
部署 API 示例应用
有关如何使用 DeploymentManager 类的 GetStatus 和 Initialize 方法的其他指南,请浏览可用的示例应用。
探索部署 API 示例应用
地址安装错误
如果部署 API 在安装Windows 应用 SDK运行时包期间遇到错误,它将返回描述问题的错误代码。
例如,如果应用不完全信任,或者没有 packageManagement 受限功能,则会收到 ACCESS_DENIED 错误代码。 若要查看可能会遇到的其他错误代码及其可能的原因,请参阅 Windows 应用的打包、部署和查询疑难解答。
如果错误代码不提供足够的信息,则可以在详细的事件日志中找到更多诊断信息(请参阅 获取诊断信息)。
如果遇到无法诊断的错误,请使用错误代码和事件日志在 WindowsAppSDK GitHub 存储库中提出问题,以便我们可以调查问题。
Windows 应用 SDK 的部署体系结构
依赖于框架的使用外部位置打包的应用或未打包应用的 Windows App SDK 部署指南
使用单项目 MSIX 将应用打包