App Layering

准备操作系统映像以便在 Citrix Hypervisor、Hyper-V 或 vSphere 中进行分层

在开始之前,请确保、满足要求。在准备映像时,如果您认为操作花费太长时间,可以根据需要加快 Microsoft Ngen.exe 操作

如果使用 Windows 10,则只要您没有运行 Citrix Provisioning、计算机创建或 VMware View,就可以加快桌面启动时间。在这种情况下,可以删除 Windows 10 内置应用程序。我们建议删除 新版本 的操作系统层上的应用程序,而不是在操作系统映像本身中。

注意:

Citrix Hypervisor 不支持基于 UEFI 的计算机。

在虚拟机上安装操作系统

首先从 ISO 新安装的操作系统(最好是从 Hypervisor)开始,这一点至关重要。

在此过程中,请务必按照特定于您正在安装的 Windows 版本的步骤和说明进行操作。

  1. 登录到您的虚拟机管理程序客户端。
  2. 使用适合您的操作系统类型的正确 CPU、RAM、硬盘和网络设置创建虚拟机。指导:

    • Citrix Hypervisor 虚拟机: 确保只选择一个网络。
    • vSphere 虚拟机:
      • 网络: (必需)选择 VMXNET 3 网络适配器

      重要:

      您只能拥有一台网络设备,而且必须从未使用过 E1000 NIC。默认的 E1000 适配器(甚至是 E1000 适配器中剩余的 ghost NIC)可能会导致虚拟机上的自定义超时错误。

      • 精简配置: 选择 精简资源调配
    • 所有虚拟机管理程序:
      • 硬盘: 确保设备可以访问您创建的硬盘。
  3. 连接 ISO 并安装操作系统。此计算机 能加入域。必须在平台层中完成域加入,任何域组成员资格更改都必须通过组策略来完成。
  4. 为计划打包层的平台安装虚拟机管理程序工具。如果您支持多个 Hypervisor,请将计划用于在平台层中发布映像的虚拟机管理程序的工具放在平台层中。

    • 对于 Hyper-V:使用 Microsoft Windows Integration Services Setup 磁盘安装 Hyper-V Integration Services。

如果使用服务器操作系统, 请安装 “远程桌面会话主机” 功能

使用 Windows Server 时,需要安装 远程桌面会话主机 功能。当 远程桌面会话主机 角色安装在操作系统层时,它将作为 Windows 的一部分进行更新。如果愿意,您可以使用 VDA 在平台层安装角色。

如果在操作系统层中安装 RDS,则需要使用本地 GPO 来定义 RDS 许可证服务器。否则,随着时间的推移,您将失去登录包装机的能力。

要安装会话主机功能:

  1. 服务器管理器中,选择添加角色和功能
  2. 对于安装类型,请选择基于角色基于功能的安装。
  3. 对于 服务 角色,选择远程桌面服务 > 远程桌面会话主机(已安装)。这将安装 C++ 库和 RDS 角色。
  4. 完成添加服务器角色的过程。

确保安装了正确版本的 .NET Framework(Windows 10 和 Windows Server 2016)

.NET 框架是微软提供的软件框架,许多第三方应用程序都需要它才能运行。.NET 框架的任何安装都必须包含在操作系统层中。这包括 .NET 3.5 和 .NET 4.0 或更高版本。

注意:

Citrix Virtual Apps and Desktops (CVAD) 2303 需要 .NET 4.8 才能添加 VDA。

请务必在您的操作系统层上安装 .NET Framework 和所有更新。

安装 Windows 更新

请确保安装所有 Windows 更新。

  1. 安装所有重要更新。
  2. 重新启动虚拟机后再次检查更新。某些更新仅在安装了其他更新后才可用。
  3. 安装所有必需的服务包:
    • 如果将 Windows 2008 与 Citrix Provisioning 结合使用,请安装 Windows Server 2008 R2 Service Pack 1 (SP1)。

      注意:

      如果安装了 KB3125574,请在安装此服务包之前将其卸载。

  4. 使用本地组策略编辑器 gpedit.msc 清除 Windows 自动更新并禁用 Windows 系统还原 。系统会为您处理还原点。层版本允许您指定发生更新的时间。
  5. Windows 10: 通过输入以下命令清除休眠状态:

    powercfg.exe /hibernate off
    <!--NeedCopy-->
    
  6. 启用内置管理员,然后选择 密码永不过期
  7. 如果使用密钥管理服务 (KMS) 许可,请以管理员身份运行命令窗口,然后输入以下命令:

    slmgr /skms <kmsserverhost>
    slmgr /rearm
    reboot
    slmgr /ipk XXXX-YOUR-KMS-KEY-XXXX
    slmgr /ato
    <!--NeedCopy-->
    
  8. 如果使用服务器操作系统,请在 PowerShell 中运行以下命令:

    Set-ExecutionPolicy Unrestricted
    Enable-PSRemoting
    <!--NeedCopy-->
    

加快 Microsoft Ngen.exe 操作的速度(如有必要)

安装完所有软件更新后,您必须允许 Ngen.exe 基本上将 .NET 字节码重新编译为本机映像并构建注册表项来管理它们。

Ngen.exe 是 Microsoft Native Image Generator,它是 .NET 系统的一部分。根据安装的软件以及 Windows 在配置中检测到的内容,Windows 确定何时运行 Ngen.exe

重要:

运行 Ngen.exe 时,你必须让它完成。中断的 Ngen.exe 操作可能会导致 .NET 组件无法正常运行或 .NET 系统中出现其他问题。

通常情况下, Ngen.exe 是在有前台活动时暂停的后台操作。如果要加快 Ngen.exe 操作,可以将任务带入前台以尽快完成任务。

要将任务置于前台,请执行以下操作:

  1. 以管理员身份打开命令提示符。
  2. 转到当前正在使用的版本的 Microsoft.NET\Framework 目录:

    cd C:\Windows\Microsoft.NET\FrameworkNN\vX.X.XXXXX
    <!--NeedCopy-->
    
  3. 输入以下 Ngen.exe 命令以运行所有已排队的项目。此命令在构建程序集之前处理排队的组件安装。

    ngen eqi 3
    <!--NeedCopy-->
    

    注意:

    ngen 命令的这种变体已经过测试,是在 App Layering 中在这种情况下起作用的变体。

    Ngen.exe 任务会在命令提示符下移动到前台,并列出正在编译的程序集。如果您看到编译消息,这是可以的。

    您可以使用任务管理器查看 MSCORSVW.EXE 的实例是否正在运行。如果是,请允许它完成或运行 ngen eqi 3

    警告:

    不要重新启动以停止任务。允许任务完成!

  4. 确保所有 Ngen.exe 进程都已运行至完成。

在映像上运行 App Layering 操作系统计算机工具

要准备要在层中运行的操作系统映像,请在映像上运行操作系统机器工具文件。此可执行文件运行 GPO 安装脚本 (gposetup.cmd) 和用于设置密钥管理服务 (KMS) 版本的脚本。该脚本名为 SetKMSVersion.hta

  1. 将以下 zip 文件下载到操作系统映像: app_layering_Citrix_App_layering_os_machine_tools_20.x.zip
  2. 将文件解压到:

    c:\windows\setup\scripts
    <!--NeedCopy-->
    

    注意:

    必须将文件解压到该目录中。不要更改目录。

如果使用 KMS,请配置许可证激活

提取密钥管理服务 (KMS) 脚本后,SetKMSVersion 实用程序会要求您选择是否使用 KMS 许可。

注意:

将映像发布到同时使用 KMS 和基于 Active Directory 的激活 (ADBA) 的环境中会导致激活问题。

  1. 在出现的对话框中,选择是否使用密钥管理服务 (KMS) 许可。

    设置 KMS 版本映像

要为 KMS 配置脚本,请执行以下操作。

  1. 导航到:

    c:\windows\setup\scripts

  2. 以管理员身份运行 SetKMSVersion.hta 以在 c:\windows\setup\scripts\kmsdir folder 中创建脚本。

当操作系统启动时,将运行相应的 KMS 激活脚本。

安装 App Layering 服务

  1. c:\windows\setup\scripts 文件夹中,运行 setup_x86.exe(32 位)setup_x64.exe(64 位)

您已准备好将映像导入新的操作系统层。