Welcome to the third episode of the “Upgrade your Windows 10 deployment practices”, if you’ve just come aboard, we’ve already talk about the following topics:
Today we will try to change an old practice: Offline language pack installation ! Why is it better to install them online ?… Because it will reduce the complexity of your annual upgrade process by far” !!
You need to understand that a major change occur when you apply a language pack offline: it is then considered by Windows as the default language !
Why is it a problem ? Because, if for example you applied a French language pack over an English base. The OS will be identified as a real French OS. When you’ll want to upgrade to the next version of Windows 10 with your English sources, it will stop and ask for French one.
In an international context, this could be a killer: each language requiring his own sources, will means lots of disk space (3GO per OS), bandwidth (between internet,DP and Endpoint), time (slow connection, depth of your infra) , efforts ( at least one time a year), and so on… !!
With an online apply, the OS will still be identified as English and therefore will not need additional ISO whatever amount of different languages you need to maintain… Yes that’s a huge saver !
Requirements
- A task Sequence with UDI
- This is a basic as at some point, you need to select the language you want to install. Also, the variables that UDI will populate will be used later for a proper injection. You can tweak the wizard the way you want but keep the select language page unmodified.
- Some Language Packs
- languages pack have evolved since Windows 8.1, they are now divided into subcategories for decreasing their size. categories are explained here and are available on two distinctive ISO on you MSDN subscription. ISO mu_windows_10_language_pack contains the basic languages, ISO en_windows_10_features_on_demand contains all the additional features.
- An installation script that you can download here.
- The script have tow purpose, injecting online every basic and feature language pack that it found. And preparing an XML file with your language preferences to make it the default UI (Details here)
Installation
Note: I usually demonstrate on MDT, but for this time it will be on SCCM. Porting the solution to MDT should be easy, but if you need help, fill in a comment and I’ll update the post with MDT guidance.
In your file sharing server (the place were you put your SCCM content sources) create as much folder as languages that you need to support:
In each one, put your basic and feature language packs. Put also the script called Set-OnlineLP.ps1 in.
In your SCCM console create a package without program for each language folder. If some of you are creasy about applications they can use them instead but for me, it’s just an overengineering process to copy a bunch of files…
Go then to your task sequence and add a step “Execute a PowerShell Script” anywhere after the SCCM client installation step.
Package source should point to one of those you’ve just created. Script name should be set to Set-OnlineLP.ps1. Don’t forget to set the execution policy to Bypass.
On the option tab create a new condition based on Variable. Set it like this:
UILanguage Equal <LanguageUI Value>
If you’re wandering where you could find LanguageUI Value, Ask no more, they are here. The values you need to grab are the one like Fr-FR, En-US…
Create similar steps for all the languages you need to support!
After all the necessary steps are created, a computer restart step is needed to put everything in the right place.
A final step needs to be created to change the Windows UI to the fresh injected language. For this, add in an “Execute a command Line” step with this:
cmd.exe /C control.exe intl.cpl,,/f:"C:\Windows\temp\UI-Settings.xml"
After that, a second reboot is needed to complete the change. As you can see above, this reboot is not visible in my task sequence as it occur at the very end of the deployment. You can do same, take benefits of a rebooting application happening later in the deployment or put a reboot step right after the command line. the choice is up to you.
The task sequence is now ready to apply language packs the “right way”. You can fire up a computer to test and deploy.
Check
Final words: if you want to make sure that your UI language is in good shape for a successful upgrade, you can check it easily using a DISM command line: Dism /online /get-intl
The “Default System UI Language” value should remain in en-US while other values should bring the language pack you have deployed. “Default System UI Language” is the value that the upgrade process will check against his own source files and, you guess it… they’d better match !
Many thanks to Aida @Microsoft for help and guidance.
Happy upgrade everyone !!!