# Citrix App Layering 的最佳实践

### 常规

  * 将作系统、平台工具和应用程序安装在单独的层中。
  * 部署用户（个性化）层以将用户设置保存在池虚拟机（仅限 Windows 7 和 10）中。
  * 保持 Packaging Cache （打包缓存） 选项处于启用状态以获得更好的性能。
  * 切勿在图层中浏览 Internet



### 安装 / 升级

  * App Layering 是一个新的作系统构建过程，必须仔细研究。查看有关 App Layering 的 Citrix 文档。
  * 只能部署独立的 ELM 设备
  * 4 个 vCPU（设备）（默认）
  * Citrix App Layering 中没有内置 HA。
  * 备份设备和存储库
  * 设备和文件共享之间的 10 Gpbs 连接
  * Hyper-V：网络适配器的第 1 代
  * 扩展 ELM 工作磁盘（默认大小 300GB）
  * 请经常升级设备，因为 Citrix 经常发布包含修复程序的更新
  * 升级设备对用户没有影响
  * 在开始升级之前，必须处理所有分层任务



### OS 层

  * **每个作系统有一个作系统层** （Windows Server 2016、Windows 10 64 位等）
  * 查看 Citrix 文档，了解支持的作系统
  * 作系统层始终是**优先级最低的层** 。无论版本、日期和时间如何，它始终位于层堆栈的底部。
  * 从虚拟机管理程序中受支持的 Windows作系统的新**映像开始** 。根据 latest 创建新的基础映像。从 Microsoft 网站下载的 ISO，其中包含最新的 Windows 更新（例如：Windows Server 2016 ISO 下载)
  * 适用于 Hyper-V 的传统 NIC 和适用于 VMware 的 VMXNET3
  * Hyper-V 不支持**第 2 代** 虚拟机类型。只有第 1 代。
  * 配置 DHCP 以获取模板中的 IP 地址。
  * 清理所有安装程序或临时目录。
  * OS 层必须尽可能干净。仅安装所需的应用程序！并且仅安装在 C：\ 驱动器上。
  * 如果需要，请安装 RDSH 和 Remote Assistance。如果是 2012 （R2），还要安装 Desktop Experience。
  * 激活 Windows
  * 重命名计算机并将其保留在 **WORKGROUP** 中
  * 安装待处理的 Windows 更新，然后停止并禁用 Windows 更新服务，然后重新启动！
  * 在作系统层安装 Microsoft .NET Framework 和 Visual C++ 库
  * 在 OS 层安装 Microsoft .NET Core
  * 删除所有 Microsoft Store 应用程序并禁用相关服务
  * 禁用 Windows Defender 和 Windows 防火墙
        
        Set-NetFirewallProfile -Profile Domain, Public, Private -Enabled False
        Set-Service MpsSvc -StartUpType Disabled
        Stop-Service MpsSvc -force

  * 禁用 IPV6（仅限 PVS）
        
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\
        Name:             DisabledComponents
        Type:             REG_DWORD
        Min Value:        0x00
        Max Value:        0xFF (IPv6 disabled)

  * 禁用 IE ESC
  * 警队高性能电源计划
        
        Powercfg /list
        Powercfg /s {UID}

  * 配置页面文件
        
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
        Key: "PagingFiles" (reg_multi_sz)
        Value: "C:\pagefile.sys 4096 4096"

  * 将 OS 列表的显示时间设置为 5s
        
        Bcdedit /timeout 5

  * 调整程序的性能
        
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl
        Key: "Win32PriortySeparation" (dword)
        Value: "26"

  * 删除法律声明
        
        (Remove. Causing delay in launching published applications)
        HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System;
        Legalnoticecaption
        Legalnoticetext

  * 使用适当的模板运行 Citrix Optimizer [标题 id=“attachment_262842” align=“alignnone” width=“1018”] 使用 2016 模板运行 Citrix Optimizer[/caption]
  * 禁用 OS Rearm（仅限 MCS） 
        
        Set-ProvServiceConfigurationData -Name ImageManagementPrep_Excluded_Steps -Value OsRearm

  * 主虚拟机管理程序的**虚拟机管理程序工具** 应安装到作系统层（例如：VMware Tools 或 Hyper-V 集成服务）。如果您计划在其他虚拟机管理程序上部署该映像，则需要在平台层上添加工具。
  * 请勿在 OS 层**中安装应用程序** （防病毒、监控代理等）。
  * 在此层**中创建新的本地用户和本地组** 。域用户和组可以通过 GPO 添加。
  * 始终使用相同的本地帐户连接到 OS 层
  * 查看此链接了解更多最佳实践。
  * 运行 Preparation Script 而不是 Shutdown For Finalize（可选）



### 平台层

  * 平台层在所有层中具有最高优先级。此图层将最后应用。
  * 在平台层安装 Citrix 虚拟桌面代理 （VDA）、Receiver/Workspace 应用程序、实时优化包 （RTOP）、WEM 和 PVS 目标设备软件
  * 不要在此层安装 Windows 更新
  * **将计算机加入** 域
  * **使用域帐户登录以在层中缓存数据** 。这将缩短登录时间。
  * 在创建分层图像时，Platform 层具有**最高优先级** 。这意味着它是最后应用的，因此其设置将覆盖所有其他图层。
  * Single Sign-on 应用程序必须安装在此层中（例如：Imprivata）
  * 视频驱动程序（nVidia、AMD）可以安装在此层
  * 请勿禁用 iPV6（适用于 PVS）。在 OS 层中执行此作。
  * 对**本地用户和组** 所做的更改不会保存在此图层中。请改用 GPO。
  * 您可以**添加其他磁盘** ，但必须先在 ELM 控制台中完成磁盘，然后才能删除它们
  * 如果要在其他虚拟机管理程序上部署此映像，请在此层中安装虚拟机管理程序工具。
  * 查看此链接以获取更多最佳实践
  * 要使用 **PVS 的写入缓存磁盘** ，您必须将同一磁盘附加到平台层。将其安装在 layer 中。然后在完成之前关闭层并删除磁盘（请参阅CTX232126）。
  * 运行 Citrix Optimizer 以应用 Citrix 优化。在上一篇文章中，Windows 优化已应用于 OS 层。



### 应用程序层

  * 您可以在应用程序层中安装应用程序、复制文件、修改注册表
  * 您可以在应用程序层中安装 Antivirus
  * 遵循 App Layering 食谱
  * 将所有 **Office 应用程序放在同一应用程序层中**
  * 您可以调整应用程序层优先级以处理冲突
  * **在应用程序中禁用自动更新** 功能
  * 不要在应用程序层中安装 .NET 和 C++ 库等要求
  * 不要安装 Windows 更新（仅在 OS 层中）
  * 如果应用程序需要**，请将计算机加入** 域  。从域中删除计算机，并在完成层之前重新启动。
  * 用户设置将被捕获，但不会应用于其他用户
  * 对**本地用户和组** 所做的更改不会保存在此图层中。请改用 GPO。
  * 您可以**添加其他磁盘** ，但必须先在 ELM 控制台中完成磁盘，然后才能删除它们
  * 安装应用程序后删除二进制文件
  * 清除安装日志
  * 应用程序层是唯一可以从控制台克隆的层
  * 查看此链接以获取更多最佳实践



### 创建/发布模板

### 弹性部署

  * 不要在映像中弹付相同的应用程序层
  * Elastic 是一种部署已使用同一作系统层分层的应用程序的方法。不要弹性地将应用程序层部署在不同的作系统层上。
  * 不建议弹性部署 Microsoft Office 和 Office 365。
  * 您可以通过在 AD 组中添加计算机对象或将层直接发布到计算机对象，将 Elastic Application 层分配给用户和**计算机**
  * 分配给用户的 Elastic Application Layer 将在**登录后** 进行映射，并且可以增加此步骤的持续时间。
  * 弹性部署不是应用程序虚拟化。应用程序不是**隔离的** 。映射后，同一台计算机上连接的所有用户都可以看到这些图层。
  * 如果以弹性方式交付的层在登录期间未正确加载，请启用**兼容模式** 。



### 用户个性化层

  * **仅为池桌面部署用户层** 。该功能与静态桌面不兼容。
  * 配置注销后**自动重启** 。
  * 在实施 User Layers 时，请考虑使用 **User Profile Management （UPM）** 软件来管理用户配置文件。
  * 不允许用户安装 Microsoft Office、Offfice 365、Visual Studio、VPN 客户端或需要启动级驱动程序的应用程序。
  * 为用户层添加**特定的存储位置** ，而不是允许将用户数据保存在设备的主文件共享上。
  * 将 NTFS 权限应用于存储个人虚拟磁盘的 Users 文件夹。
  * **备份用户层** 存储库



### Windows 10 和 PVS

  * 旧版网络适配器 （Hyper-V） 或 VMXnet3 （VMware）
  * 使用管理员身份安装 VDA，否则将无法安装要求。
  * 然后是平台层中的 PVS 目标设备客户端。
  * 从平台层中的 PVS 模板附加写入缓存磁盘。在层中安装磁盘，然后在完成之前将磁盘与 Platform 层虚拟机分离。
  * 运行 JGPIERS Windows 10 优化脚本：JGSpiers-W10-1803-Optimisations。
  * 禁用 IPV6。
  * 在 PVS 连接器配置中配置服务帐户凭据