App-V
将 App-V 与 XenApp 和 XenDesktop 结合使用
利用 Microsoft Application Virtualization (App-V),您可以将应用程序作为服务进行部署、更新及提供支持。这些应用程序无需安装在用户设备上即可供访问。借助 App-V 和 Microsoft User State Virtualization (USV),用户无论身处何处,是否连接 Internet,均可对应用程序和数据进行访问。
下表列出了支持的版本。
App-V | XenDesktop 和 XenApp 版本 | |
---|---|---|
Delivery Controller | 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 设备上的虚拟环境。您可以在 VDA 上安装 App-V 客户端,用于存储用户特定的虚拟应用程序设置,例如各个用户的配置文件中的注册表和文件更改。
无需对操作系统设置进行任何预先配置或更改,即可无缝使用应用程序。可以从服务器操作系统和桌面操作系统交付组启动 App-V 应用程序:
- 通过 Citrix Receiver
- 从“开始”菜单
- 通过 App-V 客户端和 Citrix Receiver
- 同时由多个用户在多台设备上启动
- 通过 Citrix StoreFront
应用程序启动时,会实现修改的 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 轮询对管理服务器和发布服务器进行负载平衡。由于 Studio 需要通过远程 PowerShell 与管理服务器进行通信,因此不支持对 Netscaler、F5(或类似)虚拟 IP 后的管理服务器进行负载平衡。有关详细信息,请参阅此 Citrix 博客文章。
隔离组
使用 App-V 单管理方法时,创建隔离组将允许您指定必须在沙盒中运行的互相依赖的应用程序组。该功能与 App-V 连接组相似,但并不完全一致。Citrix 使用“自动”和“显式”作为软件包部署选项,而非 App-V 管理服务器使用的强制和可选软件包术语。
- 用户启动 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 | 部署 App-V |
X | X | 打包和放置 |
X | 在 Studio 中配置 App-V 服务器地址 | |
X | X | 在 VDA 计算机上安装软件 |
X | 向应用程序库添加 App-V 包 | |
X | 添加 App-V 隔离组(可选) | |
X | X | 向交付组添加 App-V 应用程序 |
部署 Microsoft App-V
有关 App-V 部署说明,请参阅 https://docs.microsoft.com/en-us/microsoft-desktop-optimization-pack/?redirectedfrom=MSDN。
(可选)更改 App-V 发布服务器设置。Citrix 建议在控制器上使用 SDK cmdlet。有关详细信息,请参阅 SDK 文档。
- 要查看发布服务器设置,请输入 Get-CtxAppvServerSetting -AppVPublishingServer <pubServer>。
- 要确保 App-V 应用程序正常启动,请输入 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 服务器地址
重要:
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 服务器地址,请在“操作”窗格中选择添加 Microsoft 服务器。
- 要更改 App-V 服务器地址,请在“操作”窗格中选择编辑 Microsoft 服务器。
- 输入 Microsoft App-V 管理服务器的 URL 以及 App-V 发布服务器的 URL 和端口号。
- 在关闭此对话框之前,请测试与这些服务器的连接。如果测试失败,请参阅下文“故障排除”部分。
之后,如果要删除指向 App-V 管理和发布服务器的所有链接,并阻止 Studio 从这些服务器中发现 App-V 包,请在“操作”窗格中选择删除 Microsoft 服务器。只有当目前没有在任何交付组中发布这些服务器上的软件包中的任何应用程序时,才允许执行此操作。如果已发布应用程序,您必须先从交付组中删除这些应用程序,然后才能删除 App-V 服务器。
在 VDA 计算机上安装软件
包含 VDA 的计算机必须安装两组软件才能支持 App-V:一组来自 Microsoft,另一组来自 Citrix。
Microsoft 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 将检索当前的启用状态。
提示:在安装 App-V 客户端之后,请以管理员权限运行 PowerShell Get-AppvClientConfiguration cmdlet,并确保 EnablePackageScripts 设置为 1。如果未设置为 1,则运行 Set-AppvClientConfiguration -EnablePackageScripts $true。
Citrix App-V 组件
安装 VDA 时,会默认安装并启用 Citrix App-V 组件软件。
您可以在 VDA 安装过程中控制此默认操作。在图形界面中,取消选中附加组件页面上的 Citrix Personalization for App-V - VDA 复选框。在命令行接口中,将 /exclude “Citrix Personalization for 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 管理解决方案)管理的软件包,则清理例程可能会删除仍然需要的软件包。在这种情况下,请将虚拟 App-V 管理服务器注册添加到 VDA 中,以防止尝试清理。
故障排除
标有“(双)”的问题只有在使用双管理方法时才会发生。
(双)在 Studio 导航窗格中选择配置 > App-V 发布时出现 PowerShell 连接错误。
- Studio 管理员是否同时是 App-V 服务器管理员? Studio 管理员必须属于 App-V 管理服务器上的“管理员”组才能与之通信。
(双)在 Studio 中指定 App-V 服务器地址时,测试连接操作返回错误。
- 是否已启动 App-V 服务器? 请发送 Ping 命令或检查 IIS 管理器;每个 App-V 服务器均应处于“已启动”或“正在运行”状态。
- 是否已在 App-V 服务器上启用 PowerShell 远程处理? 如果未启用,请参阅 https://docs.microsoft.com/en-us/previous-versions/technet-magazine/ff700227(v=msdn.10)?redirectedfrom=MSDN。
- Studio 管理员是否同时是 App-V 服务器管理员? Studio 管理员必须属于 App-V 管理服务器上的“管理员”组才能与之通信。
- 是否已在 App-V 服务器上启用文件共享? 在 Windows 资源管理器或“运行”命令中输入 \\<App-V 服务器 FQDN>。
- App-V 服务器是否具有与 App-V 管理员相同的文件共享权限? 在 App-V 服务器上,在“存储的用户名和密码”中添加 \\<App-V 服务器 FQDN> 条目,并指定在 App-V 服务器上具有管理员权限的用户的凭据。有关指导,请参阅 https://support.microsoft.com/kb/306541。
-
App-V 服务器是否位于 Active Directory 中?
如果 Studio 计算机与 App-V 服务器分别位于不存在信任关系的不同 Active Directory 域中,请从 Studio 计算机上的 PowerShell 控制台运行 winrm s winrm/Config/client ‘@(TrustedHosts=”<App-V server FQDN>”)’。
如果 TrustedHosts 由 GPO 管理,将显示以下错误消息:“The config setting TrustedHosts cannot be changed because use is controlled by policies. 策略需要设置为“未配置”才能更改配置设置”。在这种情况下,请在 GPO 的 TrustedHosts 策略中添加 App-V 服务器名称条目(管理模板 > Windows 组件 > Windows 远程管理(WinRM) > WinRM 客户端)。
(双) 在将 App-V 应用程序添加到交付组时,发现失败。
- Studio 管理员是否同时是 App-V 管理服务器管理员? Studio 管理员必须属于 App-V 管理服务器上的“管理员”组才能与之通信。
- App-V 管理服务器是否正在运行? 请发送 Ping 命令或检查 IIS 管理器;每个 App-V 服务器均应处于“已启动”或“正在运行”状态。
- 两个 App-V 服务器是否均已启用 PowerShell 远程处理? 如果未启用,请参阅 https://docs.microsoft.com/en-us/previous-versions/technet-magazine/ff700227(v=msdn.10)?redirectedfrom=MSDN。
- 软件包是否具有适当的安全权限以供 Studio 管理员访问?
App-V 应用程序不启动。
- (双)发布服务器是否正在运行?
- (双)App-V 包是否具有适当的安全权限以供用户访问?
- (双)在 VDA 上,确保 Temp 指向正确的位置,并且 Temp 目录具有足够的可用空间。
- (双)在 App-V 发布服务器上,运行
Get-AppvPublishingServer \*
以显示发布服务器的列表。 - (双)在 App-V 发布服务器上,确保 UserRefreshonLogon 设置为“False”。
- (双)在 App-V 发布服务器上,以管理员身份运行 Set-AppvPublishingServer 并将 UserRefreshonLogon 设置为 False。
- VDA 上是否安装了受支持版本的 App-V 客户端? VDA 是否已启用“enable package scripts”(启用软件包脚本)设置?
- 在包含 App-V 客户端和 VDA 的计算机的“注册表编辑器” (regedit) 中,转到 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Citrix\AppV。确保 AppVServers 注册表项的值为以下格式:AppVManagementServer+metadata;PublishingServer(例如
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 客户端未进行签名,而此 ExecutionPolicy 允许 PowerShell 运行未签名的本地脚本和 cmdlet。请使用以下两种方法之一设置 ExecutionPolicy:(1) 以管理员身份输入 cmdlet:Set-ExecutionPolicy RemoteSigned,或者 (2) 在“组策略”设置中,转到计算机配置 > 策略 > 管理模板 > Windows 组件 > Windows PowerShell > 启用脚本执行。
如果这些步骤无法解决问题,则应启用并检查日志。
日志
与 App-V 配置相关的所有日志均位于 C:\CtxAppvLogs 中。应用程序启动日志位于 %LOCALAPPDATA%\Citrix\CtxAppvLogs 中。LOCALAPPDATA 会解析为已登录用户的本地文件夹。检查应用程序启动失败的用户的本地文件夹。
要启用 App-V 所使用的 Studio 和 VDA 日志,您必须具有管理员权限。此外,您还需要使用文本编辑器(例如记事本)。
要启用 Studio 日志,请执行以下操作:
- 创建文件夹 C:\CtxAppvLogs。
- 转至 C:\Program Files\Citrix\StudioAppVIntegration\SnapIn\Citrix.Appv.Admin.V1。在文本编辑器中打开 CtxAppvCommon.dll.config,然后取消注释以下行:<add key =”LogFileName” value=”C:\CtxAppvLogs\log.txt”/>
- 重新启动 Broker Service 以启动日志记录。
要启用 VDA 日志,请执行以下操作:
- 创建文件夹 C:\CtxAppvLogs。
- 转至 C:\Program Files\Citrix\Virtual Desktop Agent。在文本编辑器中打开 CtxAppvCommon.dll.config,然后取消注释以下行:<add key =”LogFileName” value=”C:\CtxAppvLogs\log.txt”/>
- 取消注释以下行并将值字段设置为 1:<add key =”EnableLauncherLogs” value=”1”/>
- 重新启动计算机以启动日志记录。