通过


依赖框架的打包应用的Windows App SDK部署指南

本文提供有关部署依赖框架的打包应用程序(请参阅 什么是 MSIX?)的指导。 其他依赖于框架的打包选项的对应主题是Windows App SDK 部署指南,适用于使用外部位置打包或未打包的依赖框架应用

Overview

默认情况下,在 Visual Studio 中使用 WinUI 3 模板 创建项目时,项目被配置为将应用构建成 MSIX 包,可以使用单项目 MSIX(请参阅 使用单项目 MSIX 打包应用)或 Windows 应用程序打包项目(请参阅 在 Visual Studio 中设置桌面应用程序以用于 MSIX 打包)。 然后,您可以按照 在 Visual Studio 中打包桌面应用或 UWP 应用 中的说明,为您的应用生成 MSIX 包。 为应用生成 MSIX 包后,可以使用多个选项 来管理 MSIX 部署

若要详细了解打包应用在使用Windows App SDK时可能需要的包,请参阅 Windows App SDK0 的部署体系结构。 其中包括 FrameworkMainSingleton 包;这一切都由Microsoft签名和发布。 部署打包的应用有两个主要要求:

  1. 部署Windows App SDK框架包
  2. 调用部署 API

Prerequisites

部署Windows App SDK框架包

Windows App SDK框架包包含运行时使用的Windows App SDK二进制文件,并随应用程序一起安装。 框架对Windows App SDK的不同通道有不同的部署要求。

稳定版本

在开发计算机上安装 Windows App SDK NuGet 包的稳定版本时,使用提供的 WinUI 项目模板之一创建项目时,生成的包清单包含一个 PackageDependency 元素,该元素指定了框架包的依赖项。

但是,如果使用单独的Windows应用程序打包项目手动生成应用包,则必须在 文件中声明 Application (package).wapproj,如下所示:

<ItemGroup>
   <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.260209005">
       <IncludeAssets>build</IncludeAssets>
   </PackageReference>
</ItemGroup>

该包依赖项可确保将应用部署到另一台计算机时安装框架包。

预览版

在开发计算机上安装 Windows App SDK NuGet 包的预览版本时,会在生成期间将 Windows App SDK 框架包的预览版本部署为 NuGet 包依赖项。

调用部署 API

另请参阅 Initialize Windows App SDK

部署 API 由 Windows App SDK 框架包提供,可在 Microsoft.Windows 中使用。ApplicationModel.WindowsAppRuntime 命名空间。 Windows应用程序模型不支持声明对 Main 和 Singleton 包的依赖项。 因此,出于以下原因,需要部署 API:

  1. 为框架包中没有的功能(例如推送通知)部署 Singleton 包。
  2. 若要部署 Main 包,该包允许从 Microsoft 应用商店自动更新框架包。

对于 通过应用商店分发的打包应用,开发人员负责分发框架包。 建议调用部署 API,以便传递任何关键服务更新。 请注意,若要使用框架包外部的功能(例如推送通知),必须部署 Singleton 包(这可以通过部署 API 完成,或者通过使用你自己的安装方法重新分发 MSIX 包)。

Important

只有完全信任或具有 packageManagement 受限功能的打包应用才有权使用部署 API 安装 Main 和 Singleton 包依赖项。

应在应用进程初始化后调用部署 API,但在应用使用使用 Singleton 程序包(例如推送通知)的 Windows App SDK 运行时功能之前。 部署 API 的主要方法是 DeploymentManager 类的静态 GetStatusInitialize 方法。

  • GetStatus 方法返回当前加载的Windows App SDK运行时的当前部署状态。 使用此方法确定在当前应用可以使用Windows App SDK功能之前,是否需要安装Windows App SDK运行时包。
  • Initialize 方法验证当前加载的 Windows App SDK 运行时所需的最低版本是否包含所有必需的包。 如果缺少任何包依赖项,该方法将尝试注册缺少的包。 从 Windows App SDK 1.1 开始,Initialize 方法还支持强制部署Windows App SDK运行时包的选项。 这会关闭 MainSingleton 运行时包的任何进程,从而中断其服务(例如,推送通知在此期间不会传递通知)。 应仅调用 Initialize 一次。 无需为通过 Start Without DebuggingStart Debugging 命令在 Visual Studio 中部署的应用调用 Initialize

Important

Visual Studio属性<WindowsAppSdkDeploymentManagerInitialize>的默认值为 true。 因此,如果要显式调用 DeploymentManager.Initialize,请在Visual Studio项目文件中设置 <WindowsAppSdkDeploymentManagerInitialize>false</WindowsAppSdkDeploymentManagerInitialize>

部署 API 示例应用

有关如何使用 DeploymentManager 类的 GetStatusInitialize 方法的其他指南,请浏览可用的示例应用。

地址安装错误

如果在安装Windows App SDK运行时包期间部署 API 遇到错误,它将返回描述问题的错误代码。

例如,如果应用不完全信任,或者没有 packageManagement 受限功能,则会收到 ACCESS_DENIED 错误代码。 若要查看可能会遇到的其他错误代码及其可能的原因,请参阅Windows 应用程序的打包、部署和查询故障排除

如果错误代码不提供足够的信息,则可以在详细的事件日志中找到更多诊断信息(请参阅 获取诊断信息)。

如果遇到无法诊断的错误,请在 WindowsAppSDK GitHub 存储库中提交问题错误代码和事件日志,以便我们可以调查该问题。