NTLite Migration#

Since many developers already create ISOs using NTLite, we’ve outlined a guide below for converting your NTLite configuration to the Playbook format.

Note

This is an advanced guide, and requires a decent level of technical skill. If you run into issues, contact @styris-ame on Telegram.

Capturing Component Changes#

Before following the steps below, it is implied that you already have an NTLite installation and an extracted Windows image directory ready for use in NTLite.

Important

Ensure that you have a properly licensed version of NTLite. Ameliorated does support the use of illegitimate copies.

../_images/NTLite-ServicingStack-NoShadow.png
  1. Start NTLite and load your image as you would normally, then load your preset. With the preset loaded, navigate to Components → Compatibility and uncheck Servicing Stack (DISM, Updates).

  1. Download ProcessMonitor, unzip it, then run Procmon64.exe. Once it opens, click the Capture button to stop it, then click the red trash icon to clear the log

  2. Click the blue Filter button, and add the following items:

    Process Name → contains → NTLite
    Operation → contains → SetDispositionInformationEx
    Path → contains → NLTmpMnt01\Windows\WinSxS\manifests
    Path → contains → NLTmpMnt\Windows\WinSxS\manifests
    Path → contains → NLTmpMnt_01\Windows\WinSxS\manifests

    Then click OK

../_images/FilterColumnsShadow.png
  1. Right click the top columns bar and select Columns, then uncheck everything besides Path. After this, close the columns window, and click Capture in ProcessMonitor to start the capture

../_images/NTLite-Apply.png
  1. In NTLite, select Apply → Stop before saving the image, then select Process. Now wait for the process to complete

  2. Click Capture in ProcessMonitor to stop the capture, then navigate to File → Save… → Comma-Separated Values (CSV) → OK, and save it to a location

  3. Right click the saved CSV file, and select Edit, then create a new blank line at the top. After this, then replace "Path" on the second line with the following:
    mkdir "%~dp0\Manifests\Raw"

  4. Navigate to Edit → Replace, in the Find box, enter ‘"C:\’, in the Replace box, enter ‘copy /y "C:\’, then click Replace all. Similarly, do the same thing with ‘.manifest"’ in the Find box, and ‘.manifest" "%~dp0\Manifests\Raw"’ in the Replace box

  5. Save the file, close Notepad, and change the file extension from .CSV to .bat. Do NOT run it yet

  6. In NTLite, navigate to Image and Unload the mounted image. Do NOT save the changes. After this, Load the image again

  7. Double click the Logfile.bat file from before, and wait for the window to automatically close

  8. A folder should now exist in the same directory as Logfile.bat called Manifests. Download Manifest Converter into that Manifests directory

  9. Run ManifestConverter.exe, and wait for it to complete

You will now have converted manifests, along with a formatted packages.yml ready to be tested in a Playbook.

Warning

The resulting YAML file should be thoroughly tested, and any issues should be resolved with trial and error, ideally using a virtual machine with a snapshot to easily restore back and try again, removing actions until you narrow down the culprit.

Feature Changes#

NTLite can configure Windows features. This can easily be done on an active system using a Playbook as well, which we describe how to do below.

Feature or capability#

NTLite features can be one of two things, either a Capability or a standard Feature.

To find out which of these it is, find the feature name in your NTLite preset by opening your preset XML file and locate the Features value array. In there you will find each feature that your preset removes.

Next, on any installation of your target Windows version, run the following command in an administrator Command Prompt window:

DISM /Online /Get-Features

If it is a feature, it will be shown in the output of that command. Otherwise, it is a capability and will be shown in the output of the following command:

DISM /Online /Get-Capabilities

Note

If you are unable to use a live machine, you’ll need to mount your ISO file, and then mount the WIM or ESD file within.

Configuring a feature#

In a YAML task file, you can use the following syntax to disable a feature:

- !cmd:
  command: 'DISM /Online /Disable-Feature /FeatureName:"<Feature Name>" /NoRestart'
  weight: 30

Or, to enable a feature:

- !cmd:
  command: 'DISM /Online /Enable-Feature /FeatureName:"<Feature Name>" /NoRestart'
  weight: 30

Configuring a capability#

In a YAML task file, you can use the following syntax to disable a capability:

- !cmd:
  command: 'DISM /Online /Remove-Capability /CapabilityName:"<Capability Name>" /NoRestart'
  weight: 30

Or, to enable a capability:

- !cmd:
  command: 'DISM /Online /Add-Capability /CapabilityName:"<Capability Name>" /NoRestart'
  weight: 30