Product Documentation

Create layers

Jan 11, 2018

After you prepare an operating system disk for deployment, you create an OS layer for Citrix App Layering appliance, also known as Enterprise Layer Manager (ELM). You need a platform layer when installing your operating system and apps to run in a particular environment. You create an app layer as a virtual disk containing one more more applications that you can use in layered imagine. You can enable user layers on a layered image to allow users to install applications on their desktops.

Types of layers

OS layers

An OS layer includes the software and settings for the operating system that you deploy as part of your other layers and ultimately, your layered images. After you prepare the operating system disk for deployment, create an App Layering OS layer by importing the operating system disk into a new layer.

With an OS layer, you can install your operating system one time. You can later update the operating system version when a new patch or upgrade is available. You can deploy this layer, or a version of it, in every image you publish. You can maintain one operating system image and use it to provision all your servers.

To support more than one operating system, you can create more than one OS layer. For example, you can create OS layers for Windows Server 2012 R2 and Windows Server 2008 R2. When you deploy app layers, they are only compatible with the OS layer you use to create the app layer. If you deploy two OS layers, you must also deploy a compatible app layer for each one.

Each time you deploy operating system patches and updates, you do so by adding a version to the OS layer. You can continue to publish layered images by using any version of the OS layer.

The prerequisites for creating an OS layer include:

Platform layers

The platform layer includes a platform-specific configuration, such as settings, tools, and other software. Installation of your operating system and apps or to run in a particular environment requires the platform configuration.

Types of platform layers

  • A platform layer for packaging (required at times)
  • Platform layer for publishing (always required)

Platform layer for packaging layers and versions

If the operating system image is on a different hypervisor from where you build other layers, you need a platform layer for packaging layers. The platform layer ensures availability of hypervisor-related software and settings during installation of applications on that layer. You use the platform layer when you create an app layer, layer version, or operating system version. If you choose to use a platform layer for packaging a layer, the hypervisor-related software is used during layer packaging only. There is no effect on where you can publish the layer as part of a layered image.

Platform layer for publishing layered images

A platform layer for publishing is required when you publish layered images. The platform layer for publishing is used to include the settings and software for deploying the layered image in your environment. When creating a platform layer for publishing, App Layering removes unselected (and unnecessary) tools and software related to the platforms where you are not publishing. Removing these items prevents any unnecessary platform software from slowing down the layered image when it runs in the target environment.

App Layers

An app layer is a virtual disk containing one or more applications that you can use in layered images. You can combine an app layer with other app layers and a platform layer. To do so, you must select the OS layer used to create the app layer.

To create an app layer, you use the Create App Layer wizard to deploy a packaging machine in your environment. Install the application on the packaging machine, leaving the application in the state you want it to be in for users. Then, you finalize the layer. 

User Layers (App Layering Labs)

A user layer is a virtual disk where users app data and configuration settings are saved. User layers are created when you:

  • Publish a layered image with elastic layering set to application and user layers.
  • Users log on to their desktops on the above-layered image.

When you enable user layers on the layered image, users can install applications locally on their desktops. The apps and their data are saved in the user layer.

Verifying Layers

Layer integrity messages let you know what queued tasks you must complete before a finalizing a layer. You can finalize the new layer or version when the following conditions are addressed:

  • A restart is pending to update drivers on the boot disk - check and restart the packaging machine.
  • A post-installation restart is pending - check and restart the packaging machine.
  • An MSI install operation is in progress - check the packaging machine.
  • A Microsoft NGen operation is in progress in the background.


If a Microsoft NGen operation is in progress, you can expedite it, as described in the next section.

Expediting a Microsoft NGen operation

NGen is the Microsoft Native Image Generator. It is part of the .NET system, and recompiles .NET byte code into native images and constructs the registry entries to manage them. Windows decides when to run NGen, based on the installation and what Windows detects in the configuration. When NGen is running, you must let it complete. An interrupted NGen operation can leave you with non-functioning .NET assemblies or other problems in the .NET system.

You have the choice of waiting for the NGen to complete in the background, or you can force the NGen to the foreground. You can also check the status of the NGen operation, as described below. However, every time you check the queue status, you are creating foreground activity, which can cause the background processing to pause temporarily.

Normally, NGen is a background operation and pauses if there is foreground activity. Bringing the task to the foreground can help the task to complete as quickly as possible. Forcing the NGen to the foreground allows you to view the progress and after completing the output, you can finalize the layer.

To force NGen to the foreground

Open the command prompt as an administrator.

Navigate to the Microsoft .NET framework directory for the current version:

Change directory Copy

cd c:\Windows\Microsoft.NET\Frameworks\v<versionNumber>

Type the NGen command to run the queued items:

Command Copy

ngen update /force

This command brings the NGen task to the foreground in the command prompt and lists the assemblies that are compiling.


It's okay to see failed compile messages.

Check the status of an NGen operation by running the following command:

Command Copy

ngen queue status

When you receive the following status, the NGen is complete. You can finalize the layer.

Status Copy

The .NET Runtime Optimization Service is stopped.


Look in Task Manager to see if an instance of MSCORSVW.EXE is running. If it is, you must allow it to complete, or run ngen update /force command again. Do not restart to stop the task. The task must complete.