在 Azure 虚拟桌面中添加和管理应用附加应用程序

应用附加使你能够将应用程序包中的应用程序动态附加到 Azure 虚拟桌面中的用户会话。 应用程序不会本地安装在会话主机或映像上,因此可以为会话主机创建较少的自定义映像,并降低组织的运营开销和成本。 使用应用附加传送应用程序还可以更好地控制用户可在远程会话中访问的应用程序。

本文介绍如何使用 Azure 门户和 Azure PowerShell 在 Azure 虚拟桌面中使用应用附加添加和管理应用程序。 无法使用 Azure CLI 添加或管理应用附加应用程序。 在开始之前,请确保阅读 Azure 虚拟桌面 App Attach 的概述。

先决条件

若要在 Azure 虚拟桌面中使用应用附加,需要满足以下条件:

  • 包含会话主机的现有主机池应用程序组和工作区

  • 会话主机需要运行支持的 Windows 客户端操作系统,并且至少有一台主机已开机。 不支持 Windows Server。

  • 会话主机需要加入 Microsoft Entra ID 或 Active Directory 域服务 (AD DS) 域。

  • 位于与会话主机相同 Azure 区域的 SMB 文件共享。 主机池中所有会话主机的计算机帐户都必须具有读取访问权限。 此文件共享用于存储应用程序映像。 有关文件共享的要求的详细信息,请参阅文件共享

  • 若要在会话主机加入 Microsoft Entra ID 时使用 Azure 文件存储,需要将读取者和数据访问 Azure 基于角色的访问控制 (RBAC) 角色分配给“Azure 虚拟桌面”和“Azure 虚拟桌面 ARM 提供程序”服务主体。 此 RBAC 角色分配允许会话主机使用访问密钥或 Microsoft Entra 访问存储帐户。 存储帐户必须与用于会话主机的 VM 位于同一订阅中。

  • 若要了解如何将 Azure RBAC 角色分配给 Azure 虚拟桌面服务主体,请参阅将 RBAC 角色分配给 Azure 虚拟桌面服务主体。 在未来的更新中,您将不需要分配Azure 虚拟桌面 ARM 提供程序服务主体。

  • 从应用程序包或 App-V 包创建并存储在文件共享上的 MSIX 或 Appx 磁盘映像。 有关详细信息,请参阅创建映像,也可以在其中下载预生成的 MSIX 包进行测试。 如果使用 App-V,请参阅创建和管理 App-V 虚拟化应用程序

  • 若要添加 MSIX 映像,至少需要为资源组分配桌面虚拟化参与者 Azure 基于角色的访问控制 (RBAC) 角色。 若要将用户分配到应用程序组,还需要应用程序组的 Microsoft.Authorization/roleAssignments/write 权限。 包含此权限的内置 RBAC 角色是“用户访问管理员”和“所有者”。

  • 如果要在本地使用 Azure PowerShell,请参阅将 Azure PowerShell 与 Azure 虚拟桌面配合使用,确保已安装 Az.DesktopVirtualizationMicrosoft Graph PowerShell 模块。

  • 需要使用 Az.DesktopVirtualization PowerShell 模块的版本 4.2.1 或更高版本,该模块包含支持应用附加的 cmdlet。 可以从 PowerShell 库下载并安装 Az.DesktopVirtualization PowerShell 模块。

重要

  • 所有 MSIX 和 Appx 应用程序包都包含证书。 你负责确保证书在环境中受信任。 相应的信任链支持自签名证书。

注意

此问题当前会影响 Windows 11 版本 24H2 的 CimFS 映像,从而阻止装载映像。 我们正在积极制定一个修复方案,预计将在 2025 年 6 月推出。 解决方法是改用 VHDX 映像,或使用 24H2 之前的 Windows 11 版本。

添加应用程序

要在 MSIX 映像、Appx 映像或 App-V 包中作为应用附加包将应用程序添加到 Azure 虚拟桌面,请选择适合您方案的相关选项卡,并按照步骤操作。

下面介绍如何使用 Azure 门户将 MSIX 映像、Appx 映像或 App-V 包添加为应用附加包:

  1. 登录到 Azure 门户

  2. 在搜索栏中,键入“Azure 虚拟桌面”,然后选择匹配的服务条目以转到 Azure 虚拟桌面概述。

  3. 选择 “应用附加”,然后选择“ + 创建”。

  4. 在“基本信息”选项卡上,完成以下信息:

    参数 说明
    订阅 从下拉列表中选择要将 MSIX 映像、Appx 映像或 App-V 包添加到其中的订阅。
    资源组 选择现有资源组或选择“新建”并输入名称。
    主机池 从下拉列表中选择一个现有主机池。
    位置 选择应用附加包的 Azure 区域。

    完成此选项卡后,请选择“下一步”。

  5. 在“映像路径”选项卡上,填写以下信息

    参数 说明
    映像路径 如果映像存储在 Azure 文件存储中,请选择“从存储帐户中选择”,或者选择“输入 UNC”以指定 UNC 路径。 后续字段取决于所选的选项。
    从存储帐户中选择
    存储帐户 选择映像所在的存储帐户。
    文件共享 选择“选择文件”,然后浏览到映像所在的文件共享和目录。 选中要添加的映像旁边的框,例如 MyApp.cim,然后选择“选择”
    MSIX 包 从映像中选择 MSIX 或 Appx 包。
    输入 UNC
    北卡罗来纳大学 输入映像文件的 UNC 路径。
    MSIX 包 从映像中选择 MSIX 或 Appx 包。
    任一选项
    显示名称 为应用程序输入一个易记名称。
    版本 检查是否显示了预期的版本号。
    登记类型 选择要使用的注册类型
    状态 选择包的初始状态
    失败时的运行状况检查状态 如果包无法在会话主机上暂存,请选择包的状态。 针对会话主机运行状况检查状态的 AppAttachHealthCheck 报告此状态。

    完成此选项卡后,请选择“下一步”。

    提示

    填写此选项卡后,可以继续选择将应用程序分配给主机池、用户和组。 或者,如果要单独配置分配,请选择“ 查看 + 创建”,然后转到 “分配应用附加包”。

  6. 可选:在“分配”选项卡上,填写以下信息

    1. 对于“主机池”,选择要向其分配应用程序的主机池

    2. 选择“添加用户或用户组”,然后搜索并选择要向其分配应用程序的用户或组。 完成后,选择“选择”

    3. 查看添加的分配,然后选择“下一步”

  7. 可选:在“标记”选项卡上,可以输入所需的任何名称/值对,然后选择“查看 + 创建”

  8. 在“查看 + 创建”选项卡上,确保验证通过并查看在部署期间使用的信息,然后选择“创建”以添加应用程序

分配应用附加包

需要将应用附加包分配给主机池以及组和用户。 选择你的方案对应的相关选项卡并按照步骤操作。

备注

用户帐户需要是混合帐户(在 AD DS 中创建并同步到 Azure AD),但组不需要。

下面介绍如何使用 Azure 门户将应用程序包分配给主机池、用户和组:

主机池

  1. 从 Azure 虚拟桌面概述中,选择 “应用附加”,然后选择要分配的应用附加包的名称。

  2. 在“管理”部分中,选择“主机池”

  3. 选择“+ 分配”,然后从下拉列表中选择一个或多个主机池。 确保主机池中所有会话主机的计算机帐户都必须具有读取访问权限

  4. 选择 添加

组和用户

  1. 从 Azure 虚拟桌面概述中,选择 “应用附加”,然后选择要分配的应用附加包的名称。

  2. 在“管理”部分中,选择“用户”

  3. 选择“+添加”,然后从列表中选择一个或多个组和/或用户

  4. 选择“选择”

备注

通过添加包、将其设置为“活动”、并将其分配给主机池和用户,可自动在桌面会话中提供应用程序。 如果要使用 RemoteApp,则需要将应用程序添加到 RemoteApp 应用程序组。 有关详细信息,请参阅使用 RemoteApp 应用程序组发布 MSIX 或 Appx 应用程序。 无法使用应用附加将 MSIX 或 Appx 应用程序添加到桌面应用程序组。

更改注册类型和状态

可以通过更改 MSIX 和 Appx 包的注册类型状态来管理 MSIX 和 Appx 包。 选择你的方案对应的相关选项卡并按照步骤操作。

下面介绍如何使用 Azure 门户更改包的注册类型和状态:

  1. 在 Azure 虚拟桌面概述中,选择 “应用附加”。 应会在主机池中看到所有现有包的列表。

  2. 选择要更改的包的名称。

    1. 若要更改注册类型,请选择“按需”或“在登录时注册”,然后选择“保存”

    2. 若要更改状态,请选择“非活动”或“活动”,然后选择“保存”

使用 RemoteApp 应用程序组发布 MSIX 或 Appx 应用程序

可以通过使用 RemoteApp 应用程序组发布 MSIX 和 Appx 应用程序来向用户提供这些应用程序。 使用应用附加时,无需将应用程序添加到桌面应用程序组,因为只需 分配应用附加包。 必须将要发布的应用程序分配给主机池。

下面介绍如何使用 Azure 门户将应用程序从本文添加的包中添加到 RemoteApp 应用程序组:

  1. 从 Azure 虚拟桌面概述中,选择“应用程序组”,然后选择要向其添加应用程序的 RemoteApp 应用程序组。

  2. 选择“应用程序”,然后选择“+ 添加”。 确保应用程序组分配到的主机池中至少有一台会话主机已开机。

  3. 在“基本信息”选项卡上,完成以下信息:

    参数 数值/描述
    应用程序源 从下拉列表中选择“应用附加”。 如果要从“开始”菜单或通过指定文件路径添加应用程序,请参阅 使用 RemoteApp 发布应用程序
    从下拉列表中选择可用于主机池的包。 区域包来自 App Attach
    应用程序 从下拉列表中选择一个应用程序。
    申请标识符 输入应用程序的唯一标识符。
    显示名称 为用户输入一个易记应用程序名称。
    说明 输入应用程序描述。

    完成此选项卡后,请选择“下一步”。

  4. 在“图标”选项卡上,选择“默认”以使用应用程序的默认图标,或选择“文件路径”以使用自定义图标。 对于“文件路径”,请选择以下选项之一:

    • 浏览 Azure 文件存储:可使用 Azure 文件共享中的图标。 先选择“选择存储帐户”,接着选择包含图标文件的存储帐户,然后选择“选择图标文件”。 浏览到图标所在的文件共享和目录,选中要添加的图标(例如 MyApp.ico)旁边的框,然后选择“选择”。 也可以使用 .png 文件。 对于“图标索引”,请指定要使用的图标的索引号。 此数字通常为 0

    • UNC 文件路径用于使用来自文件共享的图标。 对于“图标路径”,请输入图标文件的 UNC 路径,例如 \\MyFileShare\MyApp.ico。 也可以使用 .png 文件。 对于“图标索引”,请指定要使用的图标的索引号。 此数字通常为 0

    完成此选项卡后,选择“查看 + 添加”

  5. 在“查看 + 添加”选项卡上,确保验证通过并查看用于添加应用程序的信息,然后选择“添加”以将应用程序添加到 RemoteApp 应用程序组中。

更新现有包

可以通过提供包含更新的应用程序的新 MSIX 映像、Appx 映像或 App-V 包来更新现有包。 有关详细信息,请参阅新版本的应用程序

若要就地更新现有包,请选择适合你的方案的相关选项卡并按照步骤操作。

下面介绍如何使用 Azure 门户更新现有包:

  1. 在 Azure 虚拟桌面概述中,选择 “应用附加”。 你应该会看到所有现有的软件包的列表。

  2. 选择要更新的包,然后从概述中选择“更新”

  3. 输入更新后的包的信息:

    1. “订阅”和“资源组”预填充了当前包的值

    2. 选择要更新包的主机池

    3. 选择映像路径:从存储帐户中选择输入 UNC。 后续字段取决于所选的选项。

      1. 对于从存储帐户中选择,请选择包含更新后映像的存储帐户。 选择“选择文件”,然后浏览到映像所在的文件共享和目录。 选中要添加的映像旁边的框,例如 MyApp.cim,然后选择“选择”
      2. 对于“输入 UNC”,请输入映像文件的 UNC 路径
    4. 对于 MSIX 包,请从映像中选择 MSIX 或 Appx 包。

  4. 完成这些字段后,选择“更新”

删除应用附加包

可以删除不再需要的应用附加包。 无需首先取消分配主机池或用户和组。 选择你的方案对应的相关选项卡并按照步骤操作。

提示

也可以从应用程序组中移除作为 RemoteApp 发布的 MSIX 软件包中的应用程序,方法与其他应用程序类型相同。 有关详细信息,请参阅移除应用程序

下面介绍如何使用 Azure 门户删除应用附加包:

  1. 在 Azure 虚拟桌面概述中,选择 “应用附加”。 你应该会看到所有现有的软件包的列表。

  2. 选中要移除的包名称旁边的框,然后选择“移除”。 该包也会从其分配到的任何主机池中移除。

禁用自动更新

建议禁用 MSIX 和 Appx 应用程序的自动更新。 若要禁用自动更新,需要在会话主机上设置以下注册表值:

  • 键:HKLM\Software\Policies\Microsoft\WindowsStore

    • 类型:DWORD
    • Name:AutoDownload
    • Value:2
    • 说明:禁用 Microsoft Store 自动更新
  • Key:HKCU\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager

    • 类型:DWORD
    • 名称:PreInstalledAppsEnabled
    • :0
    • 说明:禁用内容传送自动下载。
  • Key:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug

    • 类型:DWORD
    • 名称:ContentDeliveryAllowedOverride
    • Value:2
    • 说明:禁用内容传送自动下载。

可以使用组策略或 Intune 设置这些注册表值,具体取决于管理会话主机的方式。 还可以通过在每个会话主机上以管理员身份运行以下 PowerShell 命令来设置它们,但如果这样做,还应在操作系统映像中设置它们:

# Disable Microsoft Store automatic update
If (!(Test-Path "HKLM:\Software\Policies\Microsoft\WindowsStore")) {
    New-Item -Path "HKLM:\Software\Policies\Microsoft\WindowsStore" -Force
}
New-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\WindowsStore" -Name AutoDownload -PropertyType DWORD -Value 2 -Force

# Disable content delivery automatic download
If (!(Test-Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager")) {
    New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Force
}
New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name PreInstalledAppsEnabled -PropertyType DWORD -Value 0 -Force

# Disables content delivery automatic download
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug")) {
    New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug" -Force
}
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug" -Name ContentDeliveryAllowedOverride -PropertyType DWORD -Value 2 -Force

后续步骤

了解如何使用 RemoteApp 从“开始”菜单或文件路径发布应用程序。 有关详细信息,请参阅发布应用程序