When I first started researching on the Microsoft Deployment Toolkit I came across the Customsettings.ini and Unattend.xml files being mentioned in various forums and posts online but, being new to the subject, the purposes of both files wasn’t immediately clear to me.
I know many people have compared the two online but I still wanted to write my own post here, with the goal of making it easy to understand the purpose of the two files for people who are just getting starting with MDT.
First though, I think it’s best to take a step back and give a short overview of the Microsoft Deployment Toolkit and the deployment process in general before I start talking about these files (especially since it’s aimed at someone new to the subject).
If you are already familiar with how the Microsoft Deployment Toolkit works just skip the bullet points below. So, in my own words, here’s how MDT works:
- MDT 2010 is a free tool from Microsoft which can be used to automate the deployment of Windows operating systems with minimal to no user interaction
- MDT uses a Deployment Share which contain all the necessary files and components required in your deployment environment, such as Windows images, device drivers, Windows updates and service packs and applications
- You create Task Sequences within MDT which carries out a sequence of pre-determined steps on a client PC to accomplish a given task. For example, you can have a Task Sequence to capture a Windows 7 image and another Task Sequence for deploying it to a computer
- MDT produces a bootable image which can be used with Windows Deployment Services to PXE-boot a computer to start the deployment process. Alternatively, you can also create a bootable USB or DVD to boot computers
- Once the computer is booted using the bootable image a Deployment Wizard takes over the deployment process
- You select a Task Sequence from within the Deployment Wizard to execute the given task associated with the task sequence
- Selecting a Task Sequence to deploy a Windows 7 image, for example, will require you to provide some key information within the Deployment Wizard. For example, you will need to provide the keyboard language, computer name, administrator password, etc
Now, the deployment process isn’t automated if you have to manually enter the information in the Deployment Wizard, right? Exactly. This is where the Customsettings.ini and Unattend.xml files come in.
Unattend.xml is the unattended answer file which is applied during the deployment process to provide the information you would be otherwise required to enter manually when installing an OS. By providing the answers in a XML file beforehand and applying it to the deployment process you eliminate the need to enter them manually.
Much of the settings you include in Unattend.xml can also be set in the Customsettings.ini file, but with one exception. Customsettings.ini applies specifically to the Deployment Wizard. Not only can you provide the information required in the deployment wizard but you can also skip the wizard panes, thereby automating the process.
Also, each Task Sequence has its own Unattend.xml file associated with it, whereas Customsettings.ini applies to the Deployment Share globally. It is entirely possible to enter all the required information in Customsettings.ini without touching the Unattend.xml file associated with a Task Sequence.
Consider this scenario. You have two task sequences, one to deploy a 32-bit Windows 7 image and another one for a 64-bit image. In both cases you need the client PC’s to join the domain. You can automate the domain joining process using the Customsettings.ini file without having to go into the Unattend.xml files associated with both the task sequences to add the settings individually. In this scenario the settings within the Unattend.xml files are dynamically injected at deploy time by reading the properties from the Customsettings.ini file.
So there you have it, my own comparison of the two files in a MDT deployment environment. I hope someone does find this useful. I’d love feedback from anyone reading this, and hear any thoughts on the post you may have.