App Layering

Layer

A layer is a virtual disk that contains the software for your operating system, platform tools, apps, or the user’s data and settings.

When you create a layer, the appliance saves the new layer as a virtual disk in your hypervisor environment, and attaches the disk to a packaging machine.

Once created, each layer is stored in a repository as a virtual disk.

Types of layers

You can use the following types of layers:

  • Layers you create in your hypervisor and include in the image templates you use to publish layered images.
  • Layers you enable on image templates, and therefore on the layered images you publish.

Layers to include in image templates and layered images

You can create layers for your OS, your platform tools, and the applications that you want to deliver to users.

  • OS layer: The layer where you install the Windows OS from ISO. You can reuse the same OS layer with all compatible platform and app layers. We recommend creating just one OS layer for each major Windows version, for example, one for Windows 10 and one for Windows Server 2016. You can add new versions of a layer for each follow-on release. For example, if you have a Windows 10, version 1709 layer, you add a version to it for version 1809, and one for 1903. When you update the OS layer, it is not necessary to update the app layers, but do update the platform layer. For more about creating an OS layer, see Create the OS layer.

  • Platform layers: A layer where you install and configure the software for a specific on-premises or cloud environment. When you isolate your infrastructure software in a platform layer, you can reuse the same OS layer and app layers on multiple hypervisors. You can create a platform layer for each part of your infrastructure if for example you use more than one hypervisor.

    If you use any of the following software in your infrastructure, you normally install them on a platform layer:

    • Connection broker software
    • Provisioning software
    • System Center Configuration Manager (SCCM)

    Though it might not seem intuitive, it is crucial to install the software for the first hypervisor you support on the OS layer.

    If you support more than one hypervisor, you can then create another platform layer for the additional hypervisor. The platform layer for an additional hypervisor must include the hypervisor software, along with the provisioning, connection broker, and SCCM software. When you create this additional platform layer, be sure to select the check box for the new hypervisor you are supporting. This ensures that the App Layering appliance removes the original hypervisor files and settings from the OS layer so that they do not interfere with performance.

    For more about creating an OS layer, see Create platform layer.

  • App layers: The layers where you install applications. Typically, we recommend installing one app on each layer, though you can include more. For easy maintenance, include apps that are on the same update schedule. If an application requires other apps, create the layer for the required application first. For more about creating an app layer, see Create or clone an app layer. For tips about layering a specific application, see App Layering Recipes.

Layers you can enable on layered images

Besides the layers that you include in layered images, you can enable Elastic and User layers on them through settings in the image template:

  • Elastic layers: App layers that are assigned to specific users and delivered when the users log in. An elastic app layer is not included in the base image, but is delivered on it. Elastic apps appear on the user’s desktop.

    Important:

    An app layer can be delivered to a user either as part of the layered image or as an elastic layer.

    There are a few applications that cannot be used as elastic layers, for example, Microsoft Office. To find out whether an application has this limitation, check the App Layering recipes here and the App Layering forum for notes about layering an application. If no limitations are specified for your app, you can assign it as an elastic layer. For more about enabling and assigning elastic layers on a layered image, see Deploy app layers as elastic layers.

  • User layers: Enabling user layers on a layered image allows you to persist a user’s data and settings, and any applications that they install themselves. When enabled, a user layer is created for each user the first time they log on to an image. To enable this feature, select the User layers setting in the image template that you use to publish the layered image. For more about enabling elastic layers on a layered image, see Deploy user layers, and Create or clone an image template.

    Don’t assign application layers that have browsers like Chrome or Firefox to users when those users are logging into an image that is using full user layers. Browsers update frequently, which can cause revision conflicts between the user’s writeable layer and the revision on the bootable image. You can, however, assign those layers to users if they are logging in to an image that is a session host.

Applications that require a local user or administrator

The OS layer preserves any local users or groups that you add, but app layers, platform layers, and user layers do not. For example, users and groups that you add or change while installing an application on an app layer, platform layer, or user layer do not persist. You can either:

  • Add the local user or administrator to the OS layer before installing the application.
  • Install the application on the OS layer.

Layer integrity overview

When creating an OS, app, or a platflorm layer, you begin layer creation in the App Layering management console, then install the software in the specified VM in your hypervisor. When the layer is in the state that you want it to be in when users start their desktops, you shut down the machine and finalize the layer.

When you shut down a layer to finalize it, Windows Ngen.exe operations display messages about pending tasks that must be completed before shutting down. You must let these jobs complete, but you can expedite the Ngen.exe operations, if necessary. Details about Ngen.exe messages and how to expedite operations are included in each of the related layering articles:

Layer priority

Layer priority defines layer order when creating the Windows file system and registry. Layer priority is important when:

  • Compositing layers as part of publishing layered images.
  • Searching layers for file and registry settings.
  • Delivering elastic layers and user layers to users’ desktops.

The App Layering software assigns a priority to each layer, and applies the layers in order, from the lowest priority to the highest.

In Windows, the highest priority layer takes precedence. If a file or registry entry exists in two layers, Windows uses the file or registry entry from the layer with highest priority.

How layer priority is determined

A layer’s priority is based on the layer type and, for App layers, the order in which the layers were created.

Layers within the base image

Layers that are part of the layered image are applied in order, with the Platform Layer always applied last, as the highest priority layer.

As the following table shows, the priority assigned to app layers is based on the order in which the layers are created. The newest app layers are given a higher priority than older layers.

Priority Layer type
High Platform layer
  App layer created last
Medium App layers in order by creation date
  App layer created first
Low OS layer

If the layers have a file or registry entry in common, the file or registry entry from the higher priority layers are used.

Layers enabled on the base image

When a published image boots, more layers can be applied, if the layers are enabled in the image template for your layered image:

  • Elastic layers (app layers assigned to users as elastic layers)
  • User Layers

When merging layers onto an image, User layers are always the highest priority. Elastic layers are next, and the layers in the base image last.

As shown in the following table, the priority of elastic layers is the same as the priority of the original app layers, but applied to the base image. Elastic layer priority does not depend on the order in which the layers are attached to the published image.

Priority Layer type
High User layer
  Elastic layer - App layer created last
Medium Elastic layers - App layers in creation order
  Elastic App - App layer created first
Low Layered image - All layers within base image

Layer priority conflicts

Most app layers work, but in some situations, the order in which you install applications can cause conflicts on the desktop.

If one app must be installed before another, create the layers in the order required. The App Layering software applies the layers in the same order.

If two layers conflict and you suspect that it is due to the order in which they are incorporated into the image, you have two choices:

  • Recreate the layer that you want to install last, so that it is incorporated in the correct order.
  • Request assistance from Technical Support.
Layer