应用程序分层

创建或克隆应用程序层

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

从头开始创建应用程序层

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

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

要求和注意事项

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

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

启动新的应用程序层

要创建可以安装应用程序的包装机:

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

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

部署包装机

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

  • XenServer、Hyper-V、Nutanix 或 vSphere
  • 天蓝色
  • 其他虚拟机管理程序(网络文件共享)
  • 谷歌云平台(GCP)

XenServer、Hyper-V、Nutanix、vSphere

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

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

天蓝色

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

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

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

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

  2. 将打包磁盘复制到虚拟机管理程序上的其他位置。 当您使用磁盘创建新的虚拟机时,这将为您的虚拟机管理程序生成的文件提供空间。

    重要提示: 在磁盘准备好最终确定之前,请勿将其复制到“最终确定”文件夹。 Finalize 文件夹中的磁盘无法连接到您接下来要创建的新虚拟机。

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

  4. 打开包装机电源。

一旦你的包装机通电,你就可以安装你想要包含在层中的应用程序。

安装应用程序

在包装机上安装应用程序时,请保留应用程序,以便用户登录时能够看到它。 应用程序的状态是用户每次访问应用程序时所体验到的。

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

验证层并关闭机器

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

要验证所有未完成的流程是否已完成,您可以在包装机的桌面上运行 Shutdown For Finalize 工具。

要使用“关闭并完成”工具:

  1. 如果您没有登录包装机,请以创建该机器的用户身份进行远程登录。
  2. 双击 Shutdown For Finalize 图标。 命令行窗口显示详细说明图层验证过程的消息。
  3. 如果在图层完成之前有未完成的操作需要完成,系统将提示您完成该过程。 如果必须完成 Microsoft Ngen.exe 操作,您可能能够加快 Ngen.exe 操作,如本文后面所述。
  4. 一旦任何待处理的操作完成,再次双击 Shutdown For Finalize 图标。 这将关闭包装机,并且该层已准备好完成。

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

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

  • RunOnce 脚本非常出色 - 检查并重新启动包装机。
  • 安装后重新启动正在等待 - 检查并重新启动包装机。
  • Microsoft Ngen.exe 操作正在后台进行。
  • MSI 安装操作正在进行中 - 检查包装机。
  • 正在等待重新启动以更新启动盘上的驱动程序 - 检查并重新启动包装机。
  • 需要 Microsoft Ngen.exe 操作。
  • 软件中心客户端已配置为运行,但 SMSCFG.INI 仍然存在。 要了解有关在层中部署 SCCM 的更多信息,请参阅文章 App Layering Recipe: How to deploy Microsoft SCCM in a layer

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

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

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

如有必要,加快微软 Ngen.exe 的运营

安装完所有软件更新后,必须允许 Ngen.exe 实质上将 .NET 字节码重新编译成原生映像,并构造注册表项来管理它们。

Ngen.exe 是微软原生图像生成器,它是 .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

  3. 输入以下 Ngen.exe 命令来运行所有排队的项目。 此命令在构建程序集之前处理排队的组件安装。

    ngen eqi 3

    Ngen.exe 任务在命令提示符下移至前台并列出正在编译的程序集。 如果你看到编译消息也没关系。

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

    警告:

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

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

完成图层

一旦软件安装完毕,包装机也经过验证并关闭,您就可以完成该层了。

Hyper-V:

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

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

现在,该层已通过验证并关闭,可以完成了。

Hyper-V:

如果您使用选择了 Offload Compositing 的连接器,则此定稿过程将自动完成,您无需执行这些手动步骤。

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

验证该层后,包装机将被移除,以最大限度地减少所使用的存储空间。

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

现在,该层已通过验证并关闭,可以完成了。

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

  2. 返回管理控制台。

  3. 选择 Layers > App Layers

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

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

克隆应用程序层

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

要克隆层,请执行以下操作:

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

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

您可以像使用任何其他图层一样使用新图层,并且它与原始图层没有任何关联,即 而不是

高级应用层选项

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

  • 自定义图层脚本
  • 图层缓存
  • 先决条件层

自定义图层脚本

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

笔记:

您还可以在创建修订时或修订完成后编辑图层修订的属性。

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

自定义图层脚本

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

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

缓存的工作原理

首次创建应用层时,如果缓存大小设置得足够大,缓存中会保存一个由启动盘和空打包盘组成的模板。 启动盘包括应用层设置中指定的操作系统层、平台层和先决条件层(如果有)。

每当您创建使用相同操作系统层、先决条件层和平台层组合的应用程序层时,应用程序分层软件都会重复使用模板,从而显著减少创建时间。

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

建议的缓存大小

建议的缓存大小取决于您的应用层需要多少个操作系统、平台和先决条件层组合。 组合的数量决定了缓存中保存的模板数量。

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

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

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

先决条件层

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

仅当需要</em>时才使用先决条件层 *,因为它们可以将部署当前应用程序所不需要的内容添加到层中。 这种行为可能会在未来引发冲突。</p>

何时使用先决条件层

由于多种原因,可能需要先决条件层:

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

笔记

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

先决条件层特征

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

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