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
  • 针对 C# 设置 Visual Studio
  • 通过以下方式在 Visual Studio 中配置“Azure 开发”工作负载:
    • 打开 Visual Studio 安装程序
    • 单击“修改”
    • 确保已选择“Azure 开发”
    • 单击底部的“修改”以启动更新。

Visual Studio 扩展

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

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

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

屏幕截图 2023-10-11 180059

  • 确保系统已联网。

注意

此扩展仅与 Visual Studio 2022 兼容。

使用扩展

在 Visual Studio 2022 中安装好扩展后,

  1. 右键单击并选择“以管理员身份运行”,在提升模式下启动 Visual Studio。
  2. 使用空白应用,打包了(桌面版中的 WinUI 3),即随附 Windows 应用 SDK 的 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:为什么暂存在本地应用附加中失败,显示错误?
解答 1:暂存失败的主要原因是计算机上缺少供 MSIX 使用的必要依赖项。 若要解决此问题,请仔细检查应用附加日志,其中提供了有关继续操作所需的特定依赖项的详细信息。

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

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

问题 4:我在 Visual Studio 中登录过多个帐户,应该选择哪一个帐户进行 AVD 应用附加?
解答 4:进行 AVD 应用附加时,请确保仅 AVD 管理员用户登录到 Visual Studio。 请先删除任何其他帐户,然后再启动扩展菜单。 此外,如果凭据已过期,请重新登录 Visual Studio。

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

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

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

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

问题 8:执行过程中的进程超时。
解答 8:在中 appattach.config,找到 <ProcessTimeOut> 标记并增加超时值。 默认值为 600 秒(10 分钟),可以根据需求进行调整。

另请参阅