Visual Studio 中的应用附加

本文介绍如何使用 Visual Studio 2022 创建应用附加就绪包并将其发布到 Azure 虚拟桌面。

什么是应用附加?

MSIX 应用附加是一种将 MSIX 应用程序传送到物理计算机和虚拟机的方法。 但是,MSIX 应用附加不同于常规 MSIX,因为它特别适用于受支持的产品,例如 Azure 虚拟桌面。

为何附加应用?

企业首选应用附加功能:

  1. 更轻松地管理 Windows 映像
  2. 更好的应用可管理性,包括更低的维护成本和更好的安全性

流式传输应用的数据会随用户一起漫游。 这有助于他们立即运行应用,并随时随地继续体验。

使用本地应用附加 可以在设备上运行 MSIX 应用程序,而无需将它们安装到设备上。 支持本地应用附加的 API 在 Windows 11 企业版和 Windows 10 企业版上完全受支持,这些 API 已烘焙到 OS 中以装载和卸载应用程序。 还可以使用 PowerShell cmdlet 或脚本自动执行该过程。

前置步骤

  • 下载并安装 Visual Studio 2022
  • 设置 Visual Studio for C#
  • 通过以下方法在 Visual Studio 中配置“Azure 开发”工作负荷:
    • 打开 Visual Studio 安装程序
    • 单击“修改
    • 确保已选择 Azure 开发
    • 单击底部的 “修改 ”以启动更新。

Visual Studio 扩展

  • 正常运行的 Azure 虚拟桌面部署。 若要了解如何部署 Azure 虚拟桌面(经典),请参阅 在 Azure 虚拟桌面中创建租户。 若要了解如何使用 Azure 资源管理器集成部署 Azure 虚拟桌面,请参阅 使用 Azure 门户创建主机池

  • 通过 转到此处 或搜索“应用附加工具包”,从 Visual Studio Marketplace 获取扩展。

  • 双击上述下载的文件,将扩展安装到 Visual Studio。

2023-10-11 180059屏幕截图

  • 确保系统已连接到 Internet。

注释

此扩展仅与 Visual Studio 2022 兼容。

使用扩展

在 Visual Studio 2022 中安装扩展后,

  1. 右键单击并选择“以管理员身份运行”,以提升模式启动 Visual Studio。
  2. 使用 Windows 应用 SDK 附带的空白应用、已打包(WinUI 3 in Desktop) Visual Studio 项目模板创建一个基于 WinUI 3 的 C# 或 C++ 桌面应用程序。

屏幕截图 2023-05-30 165600

注释

目前,仅 WinUI3 应用支持 MSIX 映像创建过程。

  1. 在解决方案资源管理器中,右键单击项目,然后选择“包”和“发布”->“创建应用附加包

2023-05-30 165836屏幕截图

  1. 现在,可以通过选择 MSIX 包和 VHDx 文件的输出位置并选择所选平台来配置包。
  2. 若要在最终用户计算机上安装 MSIX 包,必须使用计算机上受信任的证书对其进行签名。 可以从本地证书存储中选择证书、选择证书文件或创建新证书。 了解如何在此处 对应用包进行签名

2023-10-11 181102屏幕截图

扩展的功能

该扩展将使开发人员能够创建应用附加就绪包、在本地测试应用附加或直接从 Visual Studio 发布到 AVD 主机池。

您应该选择适当的选项并继续进行。

用户的图像

仅创建磁盘映像

这将创建一个已准备好应用附加的磁盘映像,但不会将其发布到任何地方。 它可用于在其他地方手动传输或发布。 可以转到指定的输出文件夹路径来访问图像。

本地应用程序附加

这将创建应用附加就绪包并将其发布到本地,以便进行测试和故障排除。

它将简化连接 AVD 主机进行测试的过程。 用户可以安装该应用,并在测试完成后弹出磁盘。

Azure (AVD) 应用挂载

这将创建应用附加就绪包并将其发布到 AVD 主机池。

  1. 若要将应用附加包发布到 Azure 虚拟桌面,请选择 Azure 选项。

注释

此扩展仅允许发布到现有 Azure 资源。

  1. 选择以下值:
  • 订阅ID – 选择要用于部署的 Azure 订阅。
  • 资源组 – 使用下拉列表,选择现有的资源组名称。
  • 存储帐户 - 选择具有已部署文件共享的存储帐户名称。
  • 文件共享 – 在存储包的 Azure 虚拟桌面部署中选择文件共享。
  • 应用程序组 – 选择要将应用发布到的应用程序组。
  • 工作区 – 选择要向其分配应用程序组的工作区的名称。
  • 主机池 – 选择应用程序组的主机池名称。

2023-10-11 182632屏幕截图

  1. 单击“发布”将包发布到上述 Azure 虚拟桌面部署。

常见问题解答 (FAQ)

问 1:为什么本地应用附加过程中部署失败并显示错误?
A1:部署失败的主要原因在于计算机上缺少 MSIX 所需的依赖项。 若要解决此问题,请仔细检查应用附加日志,该日志提供有关继续作所需的特定依赖项的详细信息。

Q2:Azure 虚拟桌面:应用附加验证成功,但应用不会启动
A2:此处的主要问题是 Azure 虚拟机中缺少 MSIX 依赖项。 若要解决此问题,请从应用附加日志中识别所需的依赖项,并确保这些依赖项安装在指定的 VM 中。

问3:错误:在文件共享位置<找不到>虚拟磁盘?
A3:当文件共享与所有 VM 断开连接时,通常会发生此错误。 若要解决此问题,请登录到分配的 VM,并确保相关的文件共享已连接到 VM。 之后,应该能够成功装载和卸载 VHDx 文件。

问4:我已通过多个帐户登录到 Visual Studio,应为 AVD 应用附加选取哪一个帐户?
A4:对于 AVD 应用附加,请确保仅 AVD 管理员用户登录 Visual Studio。 在启动扩展菜单之前删除任何其他帐户。 此外,如果凭据已过期,请重新登录到 Visual Studio。

问 5:扩展是否修改了我的解决方案?
答:是的,扩展会在解决方案的根级别创建 AppAttachPackages 文件夹和 appattach.config 文件。 AppAttachPackages 文件夹包含 MSIX 和 VHDx 项目,而 appattach.config 文件保存应用程序元数据对于应用附加过程至关重要。 可以安全地忽略这些项目。

问 6:是否可以使用扩展将应用程序项目重新发布到 AVD?
A6:否,目前不支持此功能。 但是,可以增加版本并尝试重新发布。 请记住,这将导致远程桌面应用程序中出现两个不同的应用。 此外,还可以通过 Azure 门户在“主机池 - MSIX 包”部分中将以前的版本标记为非活动状态。

问 7:如何卸载本地附加的应用程序?
A7:右键单击搜索栏中的应用并选择卸载。 此外,弹出新添加到您的电脑的驱动器。 若要进行全面删除,请以管理模式启动 PowerShell 并执行以下命令:

$msixPackageFullName = <msixPackageFullName> 
Remove-AppxPackage $msixPackageFullName -PreserveRoamableApplicationData 

问8:在执行过程中,我的进程超时了。
A8:在 appattach.config 中,找到 <ProcessTimeOut> 标签并增加超时值。 默认值为 600 秒(10 分钟),可以根据要求对其进行调整。

另请参阅