Credit goes to J v D on the myITforum Configuration Manager email list for his response to my question about how to resolve this. I have adapted elements of his solution to suit my own situation.
Lately I’ve been doing a lot of Windows 10 1607 deployments some of which have been in-place upgrades from Windows 7 and Windows 10 1511.
I noticed that my multi-language settings were not being migrated as part of this process.
BEFORE AN IN-PLACE UPGRADE
AFTER AN IN-PLACE UPGRADE
So how do you resolve this issue? Well I’ve finally found a suitable and reliable way of setting these values as part of a Configuration Manager in-place upgrade Task Sequence.
Some background on why this problem has occurred.
For Windows 10, I like others have used the English (US) ISO. I’ve then added the en-GB language pack for English (Australian) language support as part of a Configuration Manager Task Sequence. For Windows 7 we have always used the media with English (US) as the base system language.
This is important to note as you can’t in-place upgrade an existing OS using Windows 10 media from another base system language i.e. you wouldn’t be able to in-place upgrade a Windows 7 OS using a base system language of en-US with say the Windows 10 en-GB media.
The combination of this multi-language environment has resulted in the subsequent Windows 10 1607 language settings not being correctly configured for the welcome screen or for new user accounts following in-place upgrades.
1. Add a Run Command Line step in your in-place upgrade Task Sequence that references your language package. This adds the relevant Language Pack and Feature on Demand cab files. This is the same process that you would undertake if you were preparing a reference image. As an example you could use a cmd file that contains the following (adjust for your language):
2. Create the following SetLanguage.xml file and adjust as per your requirements. This xml file is imported as part of a scheduled task that gets created later in the sequence. I would recommend using Notepad++ to error check the file and then test it by manually running the import command in step 3. This way you can be confident that it is working before moving to testing with in-place upgrades.
- To find your relevant GeoID look at this MSDN library.
- To find your relevant InputLanguageID look at this MSDN library.
- See this Microsoft support article on constructing the xml file.
3. Create the following PostUpgrade.cmd file. This cmd file is run as part of a step in the task sequence.
4. Create a new package in Configuration Manger containing these 2 script files and call it something appropriate.
5. Modify your existing in-place upgrade Task Sequence to include the following 3 steps.
SMTSPostAction with a value of cmd /c shutdown /r /t 0 /f
Command line of xcopy * “c:\Windows\Temp” /D /E /C /I /Q /H /R /Y /S
Command line of: schtasks /create /tn “PostUpgradeTask” /tr “c:\Windows\Temp\PostUpgrade.cmd” /RU SYSTEM /SC onstart
These sequence steps copy the script files to c:\Windows\Temp, then create a scheduled task. Finally the SMTSPostAction restarts the PC after the sequence has finished running so that the scheduled task executes and runs PostUpgrade.cmd. This cmd is responsible for importing the adjusted language settings.
There you have it, once implemented you should have a working solution and your language settings should match what was set in the previous version of Windows 10.