应用程序虚拟化
将应用程序虚拟化 与 XenApp 和 XenDesktop® 结合使用
Microsoft Application Virtualization (App-V) 允许您将应用程序作为服务进行部署、更新和支持。用户无需在其自己的设备上安装应用程序即可访问它们。App-V 和 Microsoft User State Virtualization (USV) 无论位置和互联网连接如何,均可提供对应用程序和数据的访问。
以下表格中列出了受支持的版本。
| 应用程序虚拟化 | XenDesktop and XenApp® versions | |
|---|---|---|
| 交付控制器™ | VDA | |
| 5.0 和 5.0 SP1 | XenDesktop 7 及之后的所有版本,XenApp 7.5 及之后的所有版本 | 7.0 到当前版本 |
| 5.0 SP2 | XenDesktop 7 及之后的所有版本,XenApp 7.5 及之后的所有版本 | 7.1 到当前版本 |
| 5.0 SP3 和 5.1 | XenDesktop 7.6 到当前所有版本,XenApp 7.6 到当前所有版本 | 7.6.300 到当前版本 |
| 针对 Windows Server 2016 平台上的 App-V 应用程序虚拟化技术 | XenDesktop 7.12 版本及之后的所有版本,XenApp 7.12 版本及之后的所有版本 | 7.12 到当前版本 |
App-V 客户端不支持脱机访问应用程序。App-V 集成支持包括使用 SMB 共享来访问应用程序。不支持 HTTP 协议。
如果您不熟悉 App-V,请参阅 Microsoft 文档。以下是本文中提到的 App-V 组件的概述:
- 管理服务器。提供一个集中式控制台来管理 App-V 基础结构,并将虚拟应用程序交付给 App-V 桌面客户端和远程桌面服务客户端。App-V 管理服务器负责身份验证、请求,并提供管理员所需的安全、计量、监视和数据收集功能。该服务器使用 Active Directory 和支持工具来管理用户和应用程序。
- 发布服务器。为 App-V 客户端提供特定用户的应用程序,并托管用于流式传输的虚拟应用程序包。它从管理服务器获取软件包。
- 客户端。检索虚拟应用程序,在客户端上发布应用程序,并在 Windows 设备上运行时自动设置和管理虚拟环境。您将 App-V 客户端安装在 VDA 上,它会在每个用户的配置文件中存储用户特定的虚拟应用程序设置,例如注册表和文件更改。
应用程序无需任何预配置或更改操作系统设置即可无缝可用。您可以从服务器操作系统和桌面操作系统交付组启动 App-V 应用程序:
- 通过 思杰接收器™
- 从“开始”菜单
- 通过 应用程序虚拟化 客户端和 思杰 Receiver
- 由多个用户在多个设备上同时使用
- 通过 思杰 店面™
修改后的 App-V 应用程序属性在应用程序启动时生效。例如,对于显示名称已修改或图标已自定义的应用程序,用户启动应用程序时会显示这些修改。
管理的方法
您可以使用通过 App-V sequencer 创建的 App-V 程序包,这些程序包可以位于 App-V 服务器或网络共享上。
-
App-V 服务器: 从 App-V 服务器上的程序包使用应用程序,需要 Studio 与 App-V 服务器之间持续通信,以进行发现、配置和下载到 VDA。这会产生硬件、基础架构和管理开销。Studio 和 App-V 服务器必须保持同步,尤其是用户权限方面。
这称为双管理员管理方法,因为 App-V 程序包和应用程序访问需要 Studio 和 App-V 服务器控制台。此方法最适用于紧密耦合的 App-V 和 Citrix 部署。
-
网络共享: 放置在网络共享上的程序包消除了 Studio 对 App-V 服务器和数据库基础架构的依赖,从而降低了开销。(您仍然需要在每个 VDA 上安装 Microsoft App-V 客户端。)
这称为单管理员管理方法,因为 App-V 程序包和应用程序的使用仅需要 Studio 控制台。您可以浏览到网络共享,并将该位置的一个或多个 App-V 程序包添加到站点级应用程序库。
应用程序库是 Citrix 的一个术语,指用于存储 App-V 程序包信息的缓存存储库。应用程序库还存储有关其他 Citrix 应用程序交付技术的信息。
您可以同时使用一种或两种管理方法。换句话说,当您将应用程序添加到交付组时,这些应用程序可以来自位于 App-V 服务器和/或网络共享上的 App-V 程序包。
在 Studio 导航窗格中选择“配置 > App-V 发布”时,显示屏会显示 App-V 程序包名称和源。源列指示程序包是位于 App-V 服务器上还是缓存在应用程序库中。选择程序包时,详细信息窗格会列出程序包中的应用程序。
App-V 服务器的负载平衡
如果您使用双管理员管理方法,则支持使用 DNS 循环 (DNS Round-Robin) 对管理和发布服务器进行负载平衡。不支持通过 Netscaler、F5(或类似)虚拟 IP 对管理服务器进行负载平衡,因为 Studio 需要通过远程 PowerShell 与管理服务器通信。有关详细信息,请参阅此 Citrix 博客文章。
隔离群组
当您使用 App-V 单管理员方法时,创建隔离组允许您指定必须在沙盒中运行的相互依赖的应用程序组。此功能与 App-V 连接组类似,但并不完全相同。App-V 管理服务器使用强制和可选程序包术语,而 Citrix 则对程序包部署选项使用自动和显式。
- 当用户启动 App-V 应用程序(主应用程序)时,隔离组会搜索标记为自动包含的其他应用程序包。这些包会自动下载并包含在隔离组中。您无需将它们添加到包含主应用程序的交付组中。
- 隔离组中标记为显式包含的应用程序包,只有在您已将该应用程序显式添加到包含主应用程序的同一交付组时,才会被下载。
这允许您创建隔离组,其中包含可全局供所有用户使用的自动包含应用程序的混合。此外,该组还可以包含一组插件和其他应用程序(可能具有特定的许可限制),您可以将其限制为特定用户集(通过交付组识别),而无需创建更多隔离组。
例如,应用程序“app-a”需要 JRE 1.7 才能运行。您可以创建一个隔离组,其中包含 app-a(具有显式部署类型)和 JRE 1.7(具有自动部署类型)。然后,将这些 App-V 包添加到一个或多个交付组中。当用户启动 app-a 时,JRE 1.7 会随之自动部署。
您可以将应用程序添加到多个 App-V 隔离组。但是,当用户启动该应用程序时,始终使用添加该应用程序的第一个隔离组。您无法对包含该应用程序的其他隔离组进行排序或优先级设置。
设置
下表总结了在 XenApp 和 XenDesktop 中使用 App-V 的设置任务序列。
| 单一管理员 | 双管理员 | 任务 |
|---|---|---|
| X | X | Deploy App-V |
| X | X | 打包和部署位置 |
| X | 在 Studio 中配置 App-V 服务器地址 | |
| X | X | 在 VDA 计算机上安装软件 |
| X | 将 App-V 程序包添加到应用程序库 | |
| X | 添加 App-V 隔离组(可选) | |
| X | X | 将 App-V 应用程序添加到交付组 |
部署 微软 App-V
有关 App-V 部署说明,请参阅 https://docs.microsoft.com/zh-cn/microsoft-desktop-optimization-pack/?redirectedfrom=MSDN。
您可以选择更改 App-V 发布服务器设置。Citrix 建议在 Controller 上使用 SDK cmdlet。有关详细信息,请参阅 SDK 文档。
- To view publishing server settings, enter Get-CtxAppvServerSetting -AppVPublishingServer <pubServer>.
- To ensure that App-V applications launch properly, enter Set-CtxAppvServerSetting –UserRefreshonLogon 0.
如果您以前使用 GPO 策略设置来管理发布服务器设置,则 GPO 设置将覆盖任何 App-V 集成设置,包括 cmdlet 设置。这可能导致 App-V 应用程序启动失败。Citrix 建议您删除所有 GPO 策略设置,然后使用 SDK 配置这些设置。
应用程序打包与部署
对于任一管理方法,请使用 App-V sequencer 创建应用程序包。有关详细信息,请参阅 Microsoft 文档。
- 对于单一管理员管理,请在 UNC 或 SMB 共享网络位置提供软件包。确保将应用程序添加到交付组的 Studio 管理员至少具有对该位置的读取访问权限。
- 对于双管理员管理,请从 UNC 路径在 App-V 管理服务器上发布软件包。(不支持从 HTTP URL 发布。)
无论软件包位于 App-V 服务器上还是网络共享上,请确保软件包具有适当的安全权限,以允许 Studio 管理员访问它们。网络共享必须与“经过身份验证的用户”共享,以确保 VDA 和 Studio 默认都具有读取访问权限。
在 Studio 中配置 App-V 服务器地址
重要:
如果 App-V 服务器使用非默认属性值,Citrix 建议在 Controller 上使用 PowerShell cmdlet 指定 App-V 服务器地址。有关详细信息,请参阅 SDK 文档。如果在 Studio 中更改 App-V 服务器地址,您指定的某些服务器连接属性可能会重置为默认值。这些属性用于 VDA 连接到 App-V 发布服务器。如果发生这种情况,请重新配置服务器上任何重置属性的非默认值。>
此过程仅适用于双管理员管理方法这一种管理方式。
在站点创建期间或之后,为双管理员管理方法指定 App-V 管理和发布服务器地址。您可以在创建站点期间或之后执行此操作。
在站点创建期间:
- 在向导的 App-V 页面上,输入 Microsoft App-V 管理服务器的 URL,以及 App-V 发布服务器的 URL 和端口号。在继续向导之前测试连接。如果测试失败,请参阅下面的“故障排除”部分。
创建站点后:
- 在 Studio 导航窗格中选择 配置 > App-V 发布。
- 如果您之前未指定 App-V 服务器地址,请在“操作”窗格中选择 Add Microsoft Server。
- 要更改 App-V 服务器地址,请在“操作”窗格中选择 Edit Microsoft Server。
- 输入 Microsoft App-V 管理服务器的 URL,以及 App-V 发布服务器的 URL 和端口号。
- 在关闭对话框之前测试与这些服务器的连接。如果测试失败,请参阅下面的“故障排除”部分。
稍后,如果您想删除与 App-V 管理和发布服务器的所有链接,并阻止 Studio 从这些服务器发现 App-V 软件包,请在“操作”窗格中选择 Remove Microsoft Server。仅当这些服务器上的软件包中没有应用程序当前发布到任何交付组时,才允许执行此操作。如果存在,则必须先从交付组中删除这些应用程序,然后才能删除 App-V 服务器。
在 VDA 计算机上安装软件
包含 VDA 的计算机必须安装两套软件才能支持 App-V:一套来自 Microsoft,另一套来自 Citrix。
微软 App-V 客户端
此软件检索虚拟应用程序,在客户端上发布应用程序,并在 Windows 设备上运行时自动设置和管理虚拟环境。App-V 客户端存储用户特定的虚拟应用程序设置,例如每个用户配置文件中的注册表和文件更改。
App-V 客户端可从 Microsoft 获取。在每个包含 VDA 的计算机上,或在用于计算机目录创建 VM 的主映像上安装客户端。注意:Windows 10(1607 或更高版本)和 Windows Server 2016 已包含 App-V 客户端。仅在这些操作系统上,通过运行 PowerShell Enable-AppV cmdlet(无参数)来启用 App-V 客户端。Get-AppVStatus cmdlet 检索当前的启用状态。
Tip: After you install the App-V client, with Administrator permissions, run the PowerShell Get-AppvClientConfiguration cmdlet, and ensure that EnablePackageScripts is set to 1. If it is not set to 1, run Set-AppvClientConfiguration -EnablePackageScripts $true.
Citrix App-V components
安装 VDA 时,Citrix App-V 组件软件默认安装并启用。
您可以在 VDA 安装期间控制此默认操作。在图形界面中,清除“附加组件”页面上的“Citrix App-V 个性化 - VDA”复选框。在命令行界面中,包含 /exclude “Citrix App-V 个性化 - VDA” 选项。
如果在 VDA 安装期间明确禁用了 Citrix App-V 组件的安装,但后来又想使用 App-V 应用程序:在 Windows 计算机的“程序和功能”列表中,右键单击“Citrix Virtual Delivery Agent”条目,然后选择“更改”。此时将启动一个向导。在该向导中,启用安装并启用 App-V 发布组件的选项。
在应用程序库中添加或删除 App-V 包
这些过程仅适用于单一管理员管理方法。
您必须至少具有包含 App-V 包的网络共享的读取权限。
将 App-V 包添加到应用程序库
- 在 Studio 导航窗格中选择“配置 > App-V 发布”。
- 在“操作”窗格中选择“添加包”。
- 浏览到包含 App-V 包的共享,然后选择一个或多个包。
- 单击“添加”。
从应用程序库中删除 App-V 包
从应用程序库中删除 App-V 包会将其从 Studio App-V 发布节点显示中删除。但是,它不会从交付组中删除其应用程序,并且这些应用程序仍然可以启动。该包仍保留在其物理网络位置。(此效果不同于从交付组中删除 App-V 应用程序。)
- 在 Studio 导航窗格中选择“配置 > App-V 发布”。
- 选择一个或多个要删除的包。
- 在“操作”窗格中,选择“删除包”。
添加、编辑或删除 App-V 隔离组
添加 App-V 隔离组
- 在 Studio 导航窗格中,选择“App-V 发布”。
- 在“操作”窗格中,选择“添加隔离组”。
- 在“添加隔离组设置”对话框中,键入隔离组的名称和描述。
- 从“可用包”列表中,选择要添加到隔离组的应用程序,然后单击右箭头。选定的应用程序现在应显示在“隔离组中的包”列表中。在每个应用程序旁边的“部署”下拉列表中,选择“显式”或“自动”。您还可以使用向上和向下箭头更改列表中应用程序的顺序。
- 完成后,单击“确定”。
编辑 App-V 隔离组
- 从 Studio 导航窗格中,选择“App-V 发布”。
- 在中间窗格中,选择“隔离组”选项卡,然后选择要编辑的隔离组。
- 在“操作”窗格中,选择“编辑隔离组”。
- 在“编辑隔离组设置”对话框中,更改隔离组名称或描述、添加或删除应用程序、更改其部署类型或更改应用程序顺序。
- 完成后,单击“确定”。
删除 App-V 隔离组
移除隔离组并不会移除应用程序包。它仅移除分组关系。
- 在 Studio 导航窗格中选择 App-V 发布。
- 在中间窗格中选择隔离组选项卡,然后选择要删除的隔离组。
- 在“操作”窗格中选择删除隔离组。
- 确认删除。
将 App-V 应用程序添加到交付组
以下过程重点介绍如何将 App-V 应用程序添加到交付组。有关创建交付组的完整详细信息,请参阅创建交付组。
步骤 1: 选择是要创建新的交付组,还是将 App-V 应用程序添加到现有交付组:
要创建包含 App-V 应用程序的交付组:
- 在 Studio 导航窗格中选择交付组。
- 在“操作”窗格中选择创建交付组。
- 在向导的后续页面上,指定计算机目录和用户。
要将 App-V 应用程序添加到现有交付组:
- 在 Studio 导航窗格中选择应用程序。
- 在“操作”窗格中选择添加应用程序。
- 选择一个或多个将添加 App-V 应用程序的交付组。
步骤 2: 在向导的应用程序页面上,单击添加下拉菜单以显示应用程序源。选择 App-V。
步骤 3: 在添加 App-V 应用程序页面上,选择 App-V 源:App-V 服务器或应用程序库。结果显示包括应用程序名称及其程序包名称和程序包版本。选中要添加的应用程序旁边的复选框。然后单击确定。
步骤 4: 完成向导。
值得注意:
- 如果在将 App-V 应用程序添加到交付组时更改其属性,则这些更改将在应用程序启动时生效。例如,如果在将应用程序添加到组时修改其显示名称或图标,则当用户启动该应用程序时,更改将显示。
- 如果您稍后编辑包含 App-V 应用程序的交付组,并且将该组的交付类型从桌面和应用程序更改为仅应用程序,则 App-V 应用程序的性能不会发生变化。
- 当您从交付组中删除以前发布的(单一管理员)App-V 程序包时,Citrix App-V 客户端组件会尝试清理、取消发布并删除任何不再由单一管理员管理方法使用的程序包。
- 如果您使用的是混合部署——程序包通过单一管理员管理方法和 App-V 发布服务器交付,由双管理员或通过其他机制(例如组策略)管理——则无法确定哪些(现在可能冗余的)程序包来自哪个源。在这种情况下,不会尝试清理。
- 如果您未使用发布服务器,但 VDA 上有由其他机制(例如 SCCM、自定义脚本或第三方 App-V 管理解决方案)管理的程序包,则清理例程可能会删除仍然需要的程序包。在这种情况下,请向 VDA 添加一个虚拟 App-V 管理服务器注册,以防止尝试清理。
故障排除
仅在使用双管理员方法时可能出现的问题标记为 (DUAL)。
(DUAL) 在 Studio 导航窗格中选择配置 > App-V 发布时,出现 PowerShell 连接错误。
- Studio 管理员也是 App-V 服务器管理员吗?Studio 管理员必须属于 App-V 管理服务器上的“administrators”组,以便他们可以与其通信。
(DUAL) 在 Studio 中指定 App-V 服务器地址时,“测试连接”操作返回错误。
- App-V 服务器是否已开机?发送 Ping 命令或检查 IIS 管理器;每个 App-V 服务器都应处于“已启动”和“正在运行”状态。
- App-V 服务器上是否启用了 PowerShell 远程处理?如果未启用,请参阅 https://docs.microsoft.com/zh-cn/previous-versions/technet-magazine/ff700227(v=msdn.10)?redirectedfrom=MSDN。
- Studio 管理员是否也是 App-V 服务器管理员?Studio 管理员必须属于 App-V 管理服务器上的“administrators”组,以便能够与其通信。
- App-V 服务器上是否启用了文件共享?在 Windows 资源管理器中或使用“运行”命令输入 \\<App-V server FQDN>。
- App-V 服务器是否具有与 App-V 管理员相同的文件共享权限?在 App-V 服务器上,在“存储的用户名和密码”中添加 \\<App-V Server FQDN> 的条目,并指定在 App-V 服务器上具有管理员权限的用户的凭据。有关指导,请参阅 https://support.microsoft.com/kb/306541。
-
App-V 服务器是否在活动目录中?
If the Studio machine and the App-V server are in different Active Directory domains that do not have a trust relationship, from the PowerShell console on the Studio machine, run winrm s winrm/Config/client ‘@(TrustedHosts=”<App-V server FQDN>”)’.
如果 TrustedHosts 由 GPO 管理,将显示以下错误消息:“配置设置 TrustedHosts 无法更改,因为其使用受策略控制。需要将策略设置为‘未配置’才能更改配置设置。”在这种情况下,请将 App-V 服务器名称的条目添加到 GPO 中的 TrustedHosts 策略(管理模板 > Windows 组件 > Windows 远程管理 (WinRM) > WinRM 客户端)。
(DUAL) 将 App-V 应用程序添加到交付组时发现失败。
- Studio 管理员是否也是 App-V 管理服务器管理员?Studio 管理员必须属于 App-V 管理服务器上的“administrators”组,以便能够与其通信。
- App-V 管理服务器是否正在运行?发送 Ping 命令或检查 IIS 管理器;每个 App-V 服务器都应处于“已启动”和“正在运行”状态。
- 两个 App-V 服务器上是否都启用了 PowerShell 远程处理?如果未启用,请参阅 https://docs.microsoft.com/zh-cn/previous-versions/technet-magazine/ff700227(v=msdn.10)?redirectedfrom=MSDN。
- 包是否具有 Studio 管理员访问所需的相应安全权限?
App-V 应用程序无法启动。
- (DUAL) 发布服务器是否正在运行?
- (DUAL) App-V 包是否具有适当的安全权限,以便用户可以访问它们?
- (DUAL) 在 VDA 上,确保 Temp 指向正确的位置,并且 Temp 目录中有足够的可用空间。
- (DUAL) 在 App-V 发布服务器上,运行
Get-AppvPublishingServer \*以显示发布服务器列表。 - (DUAL) On the App-V publishing server, ensure that UserRefreshonLogon is set to False.
- (DUAL) On the App-V publishing server, as an administrator, run Set-AppvPublishingServer and set UserRefreshonLogon to False.
- VDA 上是否安装了受支持的 App-V 客户端版本?VDA 是否启用了“启用包脚本”设置?
- On the machine containing the App-V client and VDA, from the Registry editor (regedit), go to HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Citrix\AppV. Ensure that the AppVServers key has the following value format: AppVManagementServer+metadata;PublishingServer (for example:
http://xmas-demo-appv.blrstrm.com+0+0+0+1+1+1+0+1;http://xmas-demo-appv.blrstrm.com:8082). - 在包含 App-V 客户端和 VDA 的计算机或主映像上,请检查 PowerShell 执行策略 (ExecutionPolicy) 是否设置为 RemoteSigned。Microsoft 提供的 App-V 客户端未签名,此执行策略允许 PowerShell 运行未签名的本地脚本和 cmdlet。使用以下两种方法之一设置执行策略:(1) 以管理员身份输入 cmdlet:Set-ExecutionPolicy RemoteSigned,或 (2) 从组策略设置中,转到 计算机配置 > 策略 > 管理模板 > Windows 组件 > Windows PowerShell > 启用脚本执行。
如果这些步骤无法解决问题,请启用并检查日志。
日志
App-V 配置相关日志位于 C:\CtxAppvLogs。应用程序启动日志位于:%LOCALAPPDATA%\Citrix\CtxAppvLogs。LOCALAPPDATA 解析为登录用户的本地文件夹。检查应用程序启动失败的用户的本地文件夹。
要启用用于 App-V 的 Studio 和 VDA 日志,您必须具有管理员权限。您还需要一个文本编辑器,例如记事本。
要启用 Studio 日志:
- Create the folder C:\CtxAppvLogs.
- Go to C:\Program Files\Citrix\StudioAppVIntegration\SnapIn\Citrix.Appv.Admin.V1. Open CtxAppvCommon.dll.config in a text editor and uncomment the line: <add key =”LogFileName” value=”C:\CtxAppvLogs\log.txt”/>
- 重新启动 Broker 服务以开始记录日志。
要启用 VDA 日志,请执行以下操作:
- Create the folder C:\CtxAppvLogs.
- Go to C:\Program Files\Citrix\ Virtual Desktop Agent. Open CtxAppvCommon.dll.config in a text editor and uncomment the following line: <add key =”LogFileName” value=”C:\CtxAppvLogs\log.txt”/>
- Uncomment the line and set the value field to 1: <add key =”EnableLauncherLogs” value=”1”/>
- 重新启动计算机以开始记录日志。