App Layering

创建或克隆应用程序层

应用程序层是包含一个或多个应用程序的虚拟磁盘。通常,一个应用程序层包含一个应用程序。如果在一个层中包含多个应用程序,请将其限制为通常同时更新的应用程序。

从头开始创建应用程序层

本节将引导您完成应用程序层创建过程,包括:

  • 要求和注意事项
  • 启动新的应用程序层
  • 部署打包机
  • 安装应用程序
  • 您可能会看到的层完整性消息
  • 验证层并关闭计算机
  • 如有必要,加快 Microsoft Ngen.exe 操作
  • 完成层

要求和注意事项

应用程序层包含一个或多个应用程序及相关设置。请务必将 MS Office 安装在应用程序层中,而不要安装在操作系统层中。

  • 防病毒应用程序: 始终按照此处提供的说明将防病毒应用程序放入应用程序层中。请策略性地更新病毒定义文件。此外,请注意文件标记功能,例如 Symantec 的 Virtual Image Exception Tool。考虑基于主机的扫描引擎,并记住用户登录时的延迟。请务必扫描已发布的层化映像,而不是层本身。扫描仅在用户访问 Citrix Virtual Apps 和 Citrix Virtual Desktops 时进行。
  • MS Office: 使用此方法安装 Office。对于 Office 2010 及更高版本的 VDI 部署,请将 KMS 视为一项要求。对于 Office 2007 及更早版本,请将批量许可视为一项要求。使用其他许可结构不那么方便,因为它们要求在每台桌面上激活每个许可证。要保留用户设置和数据,请启用 Office 365 用户层存储 .OST 和流文件。搜索索引不存储。
  • 层叠特定应用程序的方法: 几乎任何应用程序都可以进行层叠,但如果您从我们在应用程序层叠方法论坛中收集的提示开始,有些应用程序会更容易层叠。在开始之前,请查阅论坛以获取有关您正在层叠的特定应用程序的提示和过程。
  • 需要添加本地用户或管理员的应用程序。 在应用程序层上安装应用程序时添加或更改的本地用户或管理员不会保留。操作系统层会保留您添加的任何本地用户或组,但应用程序层不会。请在安装应用程序之前将本地用户或管理员添加到操作系统层,或者考虑将应用程序安装在操作系统层上。

启动新的应用程序层

要创建可安装应用程序的打包机,请执行以下操作:

  1. 登录管理控制台,然后选择“层 > 应用程序层”。
  2. 在“操作”栏中单击“创建层”。
  3. 输入“层名称”和“版本”,两者均为必填值。您还可以输入其他值。
  4. 在“OS 层”选项卡上,选择要与此应用程序层关联的 OS 层。
  5. (可选)“必备层”选项卡允许您指定在此层上安装应用程序时必须存在的其他应用程序层。仅当所需应用程序无法包含在同一层中时才使用此选项。有关此高级功能的更多信息,请参阅以下部分中的“必备层”。 注意: 为现有应用程序层添加新版本时,您必须指定所需的必备层。它们不会从一个版本延续到另一个版本。
  6. 在“连接器”选项卡中,选择一个连接器配置,其中包含您计划构建层和存储位置的平台的凭据。如果未列出您需要的配置,请单击“新建”以添加一个。
  7. 在“打包磁盘”选项卡上,键入打包磁盘的文件名,然后选择磁盘格式。此磁盘用于打包机,即安装应用程序的虚拟机。
  8. 在“图标分配”选项卡上,选择要分配给层的图标。此图标表示“层模块”中的层。
    • 要使用现有映像,请在映像对话框中选择一个映像。
    • 要导入新映像,请单击“浏览”并选择 PNG 或 JPG 格式的映像。
    • 如果您使用的连接器已选择“卸载合成”,并且您选择了应用程序层叠附带的图标之一,则打包机在层完成时会尝试根据层的内容分配图标。
  9. 在“确认并完成”选项卡上,查看应用程序层的详细信息,然后单击“创建层”。您可以在创建层之前键入可选注释。您的注释将显示在“信息”视图的“审核历史记录”中。创建打包磁盘后,“任务”栏会显示指向您的虚拟机管理程序中打包磁盘的链接,您可以在其中部署打包机。
  10. 选择“任务”页面,然后单击“打包磁盘”任务。单击信息图标以显示完整的任务说明,包括指向此层的打包机发布位置的链接。

接下来,您可以部署层的打包机。

部署打包机

选择您的虚拟机管理程序:

  • XenServer®、Hyper-V、Nutanix 或 vSphere
  • Azure
  • 其他虚拟机管理程序(网络文件共享)
  • Google Cloud Platform (GCP)

XenServer、Hyper-V、Nutanix、vSphere

  1. 登录到您的虚拟机管理程序客户端(XenServer、Hyper-V Manager、Nutanix Prism 或 vSphere)。
  2. 登录到 App Layering 管理控制台,然后选择“任务”页面,以便查看当前任务。
  3. 选择“创建应用程序层”任务,然后单击信息图标以查看完整的任务说明。
  4. 使用任务说明中提供的 URL 导航到虚拟机管理程序客户端中的打包机。
  5. 打包机已开机。

您现在可以在打包机上安装此层的应用程序。

Azure

设备将打开 Azure 自定义部署模板,您可以在其中创建打包机。

  1. 登录 Azure 门户 (https://portal.azure.com)。注意:必须在尝试下一步之前登录。
  2. 转到 App Layering 管理控制台,然后选择“任务”页面。选择“创建应用程序层”任务,然后单击信息图标以查看详细信息。
  3. 使用任务详细信息中的链接导航到 Azure 中的打包机。“自定义部署”面板随即打开。
  4. 设置 Azure 参数。
    • 打包机名称 - 必须符合 Azure 虚拟机名称要求。
    • 大小 – 虚拟机大小。
    • 虚拟网络和子网 - 用于部署打包机。 重要提示: 确保“资源组位置”的值与您在连接器配置中配置的“存储帐户位置”匹配。如果这些位置不相同,打包机将无法部署。如果您的部署确实失败,您可以再次将链接粘贴到浏览器中并重新开始。
  5. 打包机开机后,您可以安装要包含在层中的应用程序。

其他虚拟机管理程序(通过设备的网络文件共享)

  1. 在网络文件共享上的以下目录中找到打包磁盘: \Unidesk\Packaging Disks

  2. 将打包磁盘复制到虚拟机管理程序上的单独位置。这为您的虚拟机管理程序在使用磁盘创建新虚拟机时生成的文件留出了空间。

    重要提示: 在磁盘准备好完成之前,请将其复制到 Finalize 文件夹。Finalize 文件夹中的磁盘无法附加到您接下来要创建的新虚拟机。

  3. 使用打包磁盘作为启动磁盘创建虚拟机。

  4. 打开打包机电源。

打包机开机后,您可以安装要包含在层中的应用程序。

安装应用程序

在打包机上安装应用程序时,请将应用程序保留为您希望用户登录时看到的状态。应用程序的状态是用户每次访问应用程序时所体验到的。

  1. 使用用于创建操作系统的用户帐户远程登录到打包机。
  2. 安装应用程序,以及应用程序所需的任何驱动程序、启动级应用程序或文件。
  3. 如果需要系统重新启动,请手动重新启动。打包机不会自动重新启动。如果您安装的应用程序影响启动级组件,请在完成层时重新启动打包机。
  4. 确保打包机处于您希望用户使用的状态:
    • 如果应用程序需要任何安装后设置或注册,请立即完成这些步骤。
    • 删除您希望包含在打包机上的任何设置、配置、文件、映射驱动器或应用程序。

验证层并关闭计算机

在打包机上安装应用程序后,请验证层是否已准备好完成。当所有安装后处理都完成后,层即可完成。

要验证所有未完成的进程是否已完成,您可以在打包机的桌面上运行“关机以完成”工具。

要使用“关机以完成”工具:

  1. 如果您未登录打包机,请以创建该计算机的用户身份远程登录。
  2. 双击“关机以完成”图标。命令行窗口将显示详细说明层验证过程的消息。
  3. 如果在层可以完成之前有未完成的操作,系统会提示您完成该过程。如果必须完成 Microsoft Ngen.exe 操作,您可能能够加快 Ngen.exe 操作,具体细节将在本文后面详细介绍。
  4. 一旦所有待处理的操作完成,再次双击“关机以完成”图标。这将关闭打包机,并且层已准备好完成。

完成过程中您可能会看到的层完整性消息

以下层完整性消息会告诉您在层准备好完成之前必须完成哪些排队操作:

  • RunOnce 脚本未完成 - 检查并重新启动打包机。
  • 安装后重新启动挂起 - 检查并重新启动打包机。
  • Microsoft Ngen.exe 操作正在后台进行。
  • MSI 安装操作正在进行中 - 检查打包机。
  • 重新启动挂起以更新启动磁盘上的驱动程序 - 检查并重新启动打包机。
  • 需要 Microsoft Ngen.exe 操作。
  • 软件中心客户端已配置为运行,但 SMSCFG.INI 仍然存在。要了解有关在层中部署 SCCM 的更多信息,请参阅文章“应用程序层叠方法:如何在层中部署 Microsoft SCCM”。

有关层完整性消息的含义以及如何调试它们的详细信息,请参阅“调试 Citrix App Layering 中的层完整性问题”。

您无法通过关闭计算机来绕过层完整性消息,因为 App Layering 软件会停止并将您返回到打包机,直到所有进程都已完成。

如果 Microsoft Ngen.exe 操作正在进行中,您可能能够加快其速度,如下一节所述。

如有必要,加快 Microsoft Ngen.exe 操作

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

Ngen.exe 是 Microsoft 本机映像生成器,它是 .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.exe 任务将移动到命令提示符的前台,并列出正在编译的程序集。如果您看到编译消息,这是正常的。

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

    注意:

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

  4. 确保所有 Ngen.exe 进程都已运行完成。
  5. 完成后,使用桌面上提供的“关机以完成”快捷方式关闭虚拟机。

完成层

安装软件并验证并关闭打包机后,即可完成层。

Hyper-V:

如果在连接器配置中选择了“卸载合成”,则完成操作将作为合成过程的一部分自动进行。

XenServer、Azure、Hyper-V、Nutanix AHV、VMware vSphere

现在,层已验证并关闭,已准备好完成。

Hyper-V:

如果您使用的连接器已选择“卸载合成”,则此完成过程是自动化的,您无需执行这些手动步骤。

  1. 返回管理控制台。
  2. 选择“层 > 应用程序层”,以及您准备的层。
  3. 在“版本信息”选项卡上选择您的层版本,然后在“操作”栏中单击“完成”。
  4. 单击“完成”以完成层的创建。
  5. 监视任务栏以验证操作是否成功完成。

验证层后,将删除打包机以最大程度地减少所使用的存储空间。

其他虚拟机管理程序(网络文件共享)

现在,层已验证并关闭,已准备好完成。

  1. 将打包磁盘从包含打包机文件的文件夹复制到网络文件共享上的 Finalize 文件夹: \Unidesk\Finalize

  2. 返回管理控制台。

  3. 选择“层 > 应用程序层”。

  4. 在“版本信息”选项卡上选择您的层版本,然后在“操作”栏中单击“完成”。

  5. 监视任务栏以验证操作是否成功完成以及层是否可部署。

克隆应用程序层

您可以通过克隆层的特定版本来创建与现有层相同的应用程序层。在克隆过程中,系统会提示您输入特定于层的信息。您可以通过向应用程序层添加版本来更新它。由于只克隆一个层版本,因此新层最初只有一个版本,即使它所克隆的层有多个版本。

要克隆层:

  1. 选择要复制的应用程序层,然后在“操作”栏中单击“克隆层”。
  2. 选择要克隆的源层版本。您可以从下拉菜单中选择所需的版本。
  3. 输入层的名称和描述(如果额外信息有帮助)。描述是可选的。
  4. 输入版本和版本的描述(如果额外信息有帮助)。
  5. 在“图标分配”选项卡上,选择新层的图标。
  6. 在“确认并克隆”选项卡上,验证设置并单击“克隆层”按钮。

将创建一个新层,其层属性与源层相同,但图标除外。层的优先级高于源层,因为每个新的应用程序层都比上次创建的应用程序层具有更高的优先级。新层的大小可能小于原始层,但这仅表示在克隆过程中删除了空白空间。该层的功能与源层相同。

您可以像使用任何其他层一样使用新层,并且它与原始层以任何方式关联。

高级应用程序层选项

创建和更新应用程序层时,请记住以下高级功能。

  • 自定义层脚本
  • 层缓存
  • 必备层

自定义层脚本

您可以在应用程序层中包含一个脚本,该脚本在系统启动时运行一次。要配置脚本,请编辑应用程序层的属性。

注意:

您可以在创建层修订版时或甚至在完成层修订版后编辑其属性。

脚本在包含应用程序层的任何层化映像首次启动时运行。如果应用程序层是弹性层叠的,则自定义层脚本在挂载应用程序层磁盘时运行。自定义层脚本通常用于需要首次启动时激活许可证的应用程序,例如 MS Office。

自定义层脚本

用于更快创建应用程序层的层缓存

您可以使用层缓存来加快层创建时间。

缓存工作原理

首次创建应用程序层时,如果缓存大小设置为足够大的值,则包含启动磁盘和空打包磁盘的模板将保存在缓存中。启动磁盘包括应用程序层设置中指定的 OS 层、平台层和必备层(如果有)。

每当您创建使用相同 OS 层、必备层和平台层组合的应用程序层时,App Layering 软件都会重用该模板,从而显著缩短创建时间。

如果您随后创建使用不同 OS 层、必备层和平台层组合的应用程序层,App Layering 软件将创建模板并将其添加到缓存中。

推荐的缓存大小

推荐的缓存大小取决于您的应用程序层需要多少 OS、平台和必备层组合。组合的数量决定了缓存中保存的模板数量。

要估算每个模板所需的空间:

  1. 选择每个 OS 层、平台层和必备层的“i”图标,然后查找“最大层大小”。
  2. 添加最大磁盘大小。总和就是该模板所需的缓存大小。

要估算缓存所需的空间,请将您为每个模板确定的尺寸相加。

必备层

不常推荐使用必备层,它允许您在创建层或向其添加版本时,在打包磁盘上包含一个或多个现有应用程序层。

仅当需要时才使用必备层,因为它们可能会在层中添加部署当前应用程序不需要的内容。这种行为将来可能会导致冲突。

何时使用必备层

必备层可能出于以下几个原因而需要:

  • 当在当前层上安装应用程序需要存在另一个应用程序时。例如,当您安装需要 Java 的应用程序,并且 Java 位于单独的层中时。
  • 当软件安装向现有应用程序添加设置时。例如,当您安装 Office 加载项时,必须首先安装 Microsoft Office。
  • 当两个应用程序更改相同的注册表项,并且第二个应用程序必须添加到某个项而不是替换它时。例如,两个应用程序都更改 Windows 中的登录项,例如 Citrix Agent 和 Imprivata。

注意

其中一些问题也可以通过将两个应用程序放在同一层中而不是使用必备层来解决。

必备层特性

必备层具有以下特性:

  • 必备层不包含在用于创建它们的应用程序层中。
  • 您创建的应用程序层及其每个必备层都必须使用相同的 OS 层。
  • 向应用程序层添加版本时,默认情况下包含必备层。每次向层添加版本时,都必须选择一个或多个必备层。
创建或克隆应用程序层