App Layering

创建或克隆应用程序层

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

从头开始创建应用程序层

本部分将引导您完成应用程序层的创建,包括:

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

要求和注意事项

应用程序层包含一个或多个应用程序和相关设置。始终在应用程序层中安装 MS Office,从不在操作系统层中安装。

  • 防病毒应用程序: 始终按照 此处提供的说明将防病毒应用程序放在应用程序层中。对您的病毒定义文件更新保持战略性。另外,请注意文件标记功能,例如赛门铁克的虚拟映像例外工具。考虑基于主机的扫描引擎,并记住用户登录时的延迟。请务必扫描已发布的分层映像,而不是层。只有在 Citrix Virtual Apps 和 Citrix Virtual Desktops 上的用户访问时才能进行扫描。
  • MS Office: 使用此配方安装 Office。对于 Office 2010 及更高版本的 VDI 部署,请考虑 KMS 是一项要求。对于 Office 2007 及更早版本,请考虑批量许可是一项要求。使用其他许可结构并不方便,因为它们需要在每个桌面上激活每个许可证。若要保留用户设置和数据,请启用 Office 365 User layer stores.OST 和流文件。不存储搜索索引。
  • 分层某些应用程序的配方:几乎任何应用程序都可以分层,但是如果您从我们在 App Layering 配方论坛中整理的技巧开始,则可以更轻松地进行分层。在开始之前,请参阅论坛,了解有关您要分层的特定应用程序的提示和步骤。
  • 需要添加本地用户或管理员的应用程序。在应用程序层上安装应用程序时添加或更改的本地用户或管理员不会持续存在。操作系统层会保留您添加的所有本地用户或组,但您的应用程序层不会保留。要么在安装应用程序之前将本地用户或管理员添加到操作系统层,要么考虑在操作系统层上安装应用程序。

启动新的应用程序层

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

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

接下来,您可以为层部署打包计算机。

部署打包计算机

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

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

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 文件夹中。“完成”文件夹中的磁盘无法附加到下一步要创建的新虚拟机。

  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 的更多信息,请参阅文章 App Layering 配方:如何在层中部署 Microsoft SCCM

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

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

如果 Microsoft Ngen.exe 操作正在进行中,则可以加快该操作,如下一节所述。

如有必要,加快 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.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。

自定义层脚本

层缓存可加快应用程序层创建速度

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

缓存的工作原理

首次创建应用程序层时,如果将缓存大小设置为足够大的值,则由启动磁盘和空打包磁盘组成的模板将保存在缓存中。引导盘包括在应用程序层设置中指定的操作系统层、平台层和必备条件层(如果有)。

无论何时创建使用相同操作系统层、先决条件层和平台层组合的应用程序层,App Layering 软件都会重复使用该模板,从而大大减少了创建时间。

如果您随后创建使用不同操作系统层、先决条件层和平台层组合的应用程序层,则 App Layering 软件将创建一个模板并将其添加到缓存中。

建议的缓存大小

建议的缓存大小取决于应用程序层所需的操作系统、平台和必备条件层组合数。组合的数量决定了缓存中保存的模板数量。

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

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

要估计缓存所需的空间,请添加您为每个模板确定的大小。

必备层

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

只有在需要先决条件层时才使用它们,因为它们可以向层中添加部署当前应用程序不需要的内容。此行为可能会导致未来的冲突。

何时使用先决条件层

可能由于以下几个原因需要先决条件层:

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

注意

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

先决条件层特征

先决条件层具有以下特征:

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