更新层
更新操作系统层、平台层或应用程序层中的软件的步骤基本相同。您需要向层中添加一个版本,在封装机上安装升级或补丁,进行验证,然后完成层。更新后,您将部署新的层版本,具体部署方式因层类型而异。
平台层是优先级最高的层,对于映像部署至关重要,尤其是在涉及网络等设备时。每当您更新基础架构软件时,都必须向平台层添加一个新版本。
您可以使用新的操作系统层作为基础,向平台层添加一个版本。封装机启动后,请关闭该机器以进行最终确定。平台层会从新的操作系统层版本中收集关键组件,并在平台中更新它们,使其与操作系统版本匹配。
向层中添加版本
例如,要向操作系统层中添加版本:
- 在 Citrix App Layering™ 管理控制台中,选择层 > 操作系统层。
- 选择一个操作系统层,然后单击版本信息选项卡上的添加版本。
- 在“版本详细信息”中:
- 对于基础版本,选择要用作新层版本基础的版本。默认值为最新版本。
- 为新版本输入一个名称。这可以是操作系统版本或其他标识信息。
- 为创建层的虚拟机管理程序选择一个连接器配置。
- 为“封装磁盘”输入一个文件名,如果您使用的是设备的“文件共享”而不是连接器配置,请选择要使用的磁盘格式。此磁盘用于安装应用程序的封装机(虚拟机)。
- 验证您的设置,然后单击添加版本。这将运行一个任务来创建操作系统版本。任务完成后,它会显示需要操作状态。当您选择该任务并单击查看详细信息时,将显示以下文本:
“封装磁盘已发布。虚拟机‘<…>’可在数据中心‘<…>’的文件夹‘<…>’中找到。启动此虚拟机以安装您的应用程序。安装完成后,在单击操作栏上的完成之前,请关闭虚拟机。”
接下来,您可以为该操作系统层版本部署一个封装机。
将封装机部署到您的虚拟机管理程序
封装机是一个虚拟机,您可以在其中安装要包含在层中的更新或应用程序。封装机是一个临时虚拟机,一旦操作系统层最终确定,它就会被删除。
任务说明包含导航到虚拟机管理程序中为此层创建封装机的位置的说明。
- 要在虚拟机管理程序中创建封装机,请从步骤 2 中显示的扩展封装磁盘任务开始。
- 登录到您的虚拟机管理程序客户端。
- 返回管理控制台,使用扩展封装磁盘任务中的说明导航到封装机。
安装操作系统更新
- 远程登录到封装机。请务必使用您创建操作系统时使用的用户帐户登录。
- 安装您希望包含在新操作系统层版本中的任何更新或应用程序,例如 Windows 更新或防病毒应用程序。
- 如果应用程序安装需要系统重新启动,请手动重新启动。封装机不会自动重新启动。
- 确保封装机处于您希望用户使用的状态:
- 如果您安装的应用程序需要任何安装后设置或应用程序注册,请立即完成这些步骤。
- 删除您不希望包含在封装机上的任何设置、配置、文件、映射驱动器或应用程序。
接下来,您将关闭封装机并验证层是否已准备好进行最终确定。
注意:
当您将 Windows 10 从一个主要版本升级到另一个版本(例如,从 1703 升级到 1709)时,以前的 Windows 安装会保留在
C:\Windows.old文件夹中。在 App Layering 中,您不得删除此文件夹。我们的软件需要在升级完全完成后,将我们的驱动程序和其他文件从Windows.old复制到Windows。当您完成操作系统层时,我们将清理Windows.old。
验证层并关闭封装机
下一步是验证层是否已准备好进行最终确定。要准备好进行最终确定,任何所需的安装后处理(例如,重新启动或 Microsoft ngen 进程)都必须完成。
要验证所有未完成的进程是否已完成,您可以运行“封装机”桌面上显示的“关闭以完成”工具(图标如下)。
要使用“关闭以完成”工具:
- 如果您未登录到封装机,请以创建该机器的用户身份远程登录。
- 双击“关闭以完成”图标。将显示一个命令行窗口,其中包含详细说明层验证过程的消息。
- 如果在层可以最终确定之前必须完成未完成的操作,系统将提示您完成该操作。例如,如果 Microsoft
ngen操作必须完成,您可以尝试加快ngen操作,如下所述。 - 一旦所有待处理操作完成,再次双击“关闭以完成”图标。这将关闭封装机。
层已准备好进行最终确定。
如果您选择的连接器配置设置为卸载合成,则层会自动最终确定。否则,下一步是手动最终确定层,如以下过程所述。
层完整性消息
以下层完整性消息会告诉您在层准备好最终确定之前必须完成哪些排队操作:
A RunOnce script is outstanding - please check and reboot the Packaging Machine.A post-installation reboot is pending - please check and reboot the packaging machine.A Microsoft ngen operation is in progress in the background.An MSI install operation is in progress - please check the packaging machine.A reboot is pending to update drivers on the boot disk - please check and reboot the packaging machine.A Microsoft ngen operation is needed.Software Center Client is configured to run, but the SMSCFG.INI is still present. To learn more about deploying SCCM in a virtual environment, see the Microsoft TechNet article, [在 XenDesktop VDI 环境中实施 SCCM](https://social.technet.microsoft.com/wiki/contents/articles/23923.implementing-sccm-in-a-xendesktop-vdi-environment.aspx)。
有关层完整性消息的含义以及如何调试它们的详细信息,请参阅 调试 Citrix App Layering 4.x 及更高版本中的层完整性问题。
您无法通过关闭机器来绕过层完整性消息。App Layering 软件会停止并让您返回封装机,直到进程完成。
如果 Microsoft ngen 操作正在进行中,您可能能够加快其速度,如下一节所述。
如有必要,加快 Microsoft Ngen.exe 操作
安装所有软件更新后,您必须允许 Ngen.exe 将 .NET 字节码重新编译为本机映像,并构建用于管理它们的注册表项。
Ngen.exe 是 Microsoft 本机映像生成器,它是 .NET 系统的一部分。Windows 根据正在安装的软件以及 Windows 在配置中检测到的内容来确定何时运行 Ngen.exe。
重要提示: 当
Ngen.exe运行时,您必须让它完成。中断的Ngen.exe操作可能会导致.NET程序集无法正常工作或.NET系统中出现其他问题。
通常,Ngen.exe 是一个后台操作,当前台有活动时会暂停。如果您想加快 Ngen.exe 操作,可以将其任务置于前台,以尽快完成。
要将任务置于前台:
- 以管理员身份打开命令提示符。
-
转到当前使用的
Microsoft.NET\Framework目录:cd C:\Windows\Microsoft.NET\FrameworkNN\vX.X.XXXXX <!--NeedCopy--> -
如果使用 .NET Framework 3 或更高版本,请输入以下
Ngen.exe命令以运行所有排队项目。此命令在构建程序集之前处理排队的组件安装。ngen eqi 3 <!--NeedCopy-->Ngen.exe任务将移至命令提示符的前台,并列出正在编译的程序集。如果看到编译消息,这是正常的。确保所有
Ngen.exe进程都已运行完成。您可以使用任务管理器查看MSCORSVW.EXE实例是否正在运行。如果正在运行,请让它完成,或者运行ngen eqi 3。注意: 请勿重新启动以停止任务。让任务完成!
-
如果使用 .NET Framework 2 或更早版本,请输入以下
Ngen.exe命令以运行排队项目。ngen update /force <!--NeedCopy-->这将把
ngen任务置于命令提示符的前台,并列出正在编译的程序集。注意: 如果看到编译失败消息,这是正常的。 查看任务管理器,看是否有
MSWORD.EXE实例正在运行。如果正在运行,您必须让它完成,或者重新运行ngen update /force。请勿重新启动以停止任务。让它完成。通过以管理员身份打开命令提示符并运行以下命令来检查
Ngen.exe操作的状态:ngen queue status注意: 请勿重新启动以停止任务。让任务完成!
- 所有操作完成后,使用桌面上可用的“关闭以完成”快捷方式关闭虚拟机。
手动最终确定层
创建封装机并安装任何应用程序或更新后,您可以最终确定层。
注意:当您最终确定操作系统层的新版本时,系统会删除封装机,以避免产生更多成本。
当层准备好最终确定时:
- 返回管理控制台。
- 在“层”模块中,选择该层。
- 在操作栏中选择完成。
- 监视任务栏以验证操作是否成功完成以及层是否可部署。