In this blog I would like to give an overview of my Windows 10 Installation, since this has changed a lot to previous versions of Windows.
This blog will cover the following topics:
- Windows 10 Image Customization
- Windows 10 Unattended File
- Windows 10 Language Pack (MUI) Integration
- Optional: Windows 10 with .Net feature
Windows 10 Image Customization
Here is nothing to do. In most of the deployments I’ve seen, we did not make changes to the image or wim-file itself. I always did this in previous versions of Windows for have languages added and Windows features as well. But starting with Windows 10, I stopped those task, and moved to the “Do everything possible within the Task Sequence”. The main reason for this is to have those steps available for OSD and a Feature Upgrade as well.
A good reason to modify the image is, if your installation process should consume less time. Because installing language packs or other Software can stretch the installation time.
Windows 10 Unattended File
In earlier Versions of Windows I often used a unattended file only to set the variables for the languages, I do now the opposite, and I also use more settings within the unattend file. Due to the fact, that I always use the en-US base image, my language settings looks like the following picture:
The language settings within the OOBE section are the same. But I do have an additions to suppress the Wireless Setup (HideWirelessSetupInOOBE), which can interrupt the task sequence progress, or at least the progress is not visible. And also the MachineOOBE will be skipped:
With those settings I can start building the Task Sequence within System Center Configuration Manager.
Windows 10 Language Pack (MUI) Integration
I install the language packs within the Windows PE phase. For this, I need to create a package, containing all the .cab files that I wanted to install through the Task Sequence. This includes the language pack for Swiss-German and the Feature on Demand (FoD) packs for the same language as well. In my case, the package source content folder looks like the following picture:
As you can see in the screenshot, I also added a batchfile to install the language packs with dism, and a XML which is later described. Here is the dism command within the batch:
dism.exe /image:%OSD_System%\ /add-package /packagepath:%~dp0
The variable “%OSD_System%” which is used in the command above is set through the partitioning step previous in the task sequence.
So I can now add a command line step to my Task Sequence which I have simply created through the wizard. It is important to add the step after the windows image was applied:
This will install all the Language Packs and other Feature on Demand Packs, which resides in the Package folder. This process is executed within the Windows PE phase of the Windows 10 Installation.
Now, all the required Package are installed, and the system will be installed with a Base Language of US english, but with a Swiss-German Keyboard Layout (configured through the unattended.xml). The next step is to instruct Windows to use the German Language Pack as Default User Interface Language, and the regional settings should be changed to Switzerland as well. For this, I will implement the solution which Roger Zander (Twitter) is providing on his blog (see Source). I will outline the required steps below.
The first step is to create the XML file which will be used in the next step. I just also add this XML file to my existent Language and FOD package (see Screenshot above). This is the content of the XML (copy from Rogers blog):
<gs:User UserID="Current" CopySettingsToSystemAcct="true" CopySettingsToDefaultUserAcct="true" />
<gs:MUILanguage Value="de-DE" />
<gs:MUIFallback Value="en-US" />
<gs:Locale Name="de-CH" SetAsCurrent="true" ResetAllSettings="false"/>
<gs:InputLanguageID Action="add" ID="0807:00000807" Default="true"/>
<gs:InputLanguageID Action="remove" ID="0409:00000409"/>
<gs:InputLanguageID Action="remove" ID="0407:00000407"/>
<gs:InputLanguageID Action="remove" ID="100c:0000100c"/>
Then add another step to your Task Sequence where you just start the following command:
control intl.cpl,, /f:"lang_de-CH.xml"
Make sure that you add this step after the Installation of Windows and Configuration Manager Client. This would look like the following picture:
And then I’m mostly done with the Windows 10 Image itself. Removing Windows Store apps or other settings can be done afterwards, or within the Task Sequence too. But as written above I want to add the .Net 3.5 feature to the Task Sequence, so this leads to the last topic of this blog.
Optional: Windows 10 with .Net feature
I do also add the Windows 10 .Net feature within the Windows PE phase, and before the Language Packs get installed. First, you will need to create a package, that contains the payload of the .Net feature installation. Copy the SXS folder from a Windows 10 Installation Media to a Folder, from which you create a ConfigMgr package afterwards:
Similar to the language pack package, I created a install.bat file, to start the installation with DISM, the command within the batch is outlined below:
dism.exe /image:%OSD_System%\ /enable-feature /featurename:NetFx3 /source:%~dp0 /all
Then create a package, and add a step to the task sequence after the Language Pack installation:
As outlined in Rogers blog, the command will end with an exit code of 1, you should consider to add this exit code as a success-reboot required. You can add this exit code to the command line step:
Happy Windows 10 Deploying!