Issue
Microsoft have released ISOs containing Windows 10 language packs. This TID details a method to select and integrate them into a Windows 10 build that is deployed via Windows PE.
Requirements
- Windows 10 (Enterprise or Education edition)
- Imaging Toolkit 10.0.4 (or newer)
- ENGL build process configured in a ZENworks environment (Windows PE imaging)
Solution
Integrate Language Pack selection and installation into the deployment process as follows;
- Update Zim to display a list of available language options when restoring images
- When a language is selected restore the appropriate files to the local machine and store information to ZISD
- Prompt to select the default language if more than one language is selected
- Prompt to enforce the selected default language (using Group policy setting)
- Install selected language packs during the deployment process and set as the default UI language
|
|
Steps
Done | Task | ||
---|---|---|---|
|
|||
|
|||
|
|||
|
-
Download langauge pack ISO files from Microsoft
- Sign into the Microsot Volume Licensing Service Center web page.
- Select the "Downloads and Keys" tab
- Search for "Windows 10 language"
- Select Language Pack media for the OS being deployed. This may be version specific e.g.
Windows 10 Enterprise LTSB 2015
orWindows 10 Language Pack, Version 1607
.NOTE: Microsoft has changed the naming format of the language pack files with the Windows 10 1607 release.
More information here: https://msdn.microsoft.com/en-gb/windows/hardware/commercialize/manufacture/desktop/where-is-lpcab .
This TID will work with both filename formats.
- Download the Language Pack media.
- Sign into the Microsot Volume Licensing Service Center web page.
-
Configure the Imaging Environment
Zim is used to select which project is restored to the machine. With the changes in this TID Zim will also let you select the language to be configured once the machine has been built.
-
Create a
lang.ini
lookup fileThis file will list the available languages for each base image name as well as the locale information for the each language. The locale information will be used to ensure the correct keyboard layout etc. is set for the deployed machine.
This file should be created in the
<integration path>/zenworks/tftp/zimfiles
folder.In this example scenario there are three MUI packs available plus the default language of English. Note that the MUI language packs are specific to the OS version. So, in order to ensure that the correct version is restored the Base_Image name from the
projects.ini
file is used.Review the
projects.ini
file and identify the Base_Image name for the OS you wish to deploy MUI packs to. For example, the entries highlighted in red below:; ; ENGL Zim projects.ini lookup file ; [projects] project1 = Windows 10 Education [10586 (Feb '16)] (x64) - en-US project2 = OSONLY-win7-sp1-pro-x86-zcm1142 project3 = BASEOS-win10-ent-x86-14393-zcm1142 ; Project details [Windows 10 Education [10586 (Feb '16)] (x64) - en-US] Description = Windows 10 Education [10586 (Feb '16)] (x64) - en-US project_image_path = win10-edu-x64 project_os = win10-edu-x64 partition_count = 2 partition1_size = 600 partition2_size = 60000 driver_os = win10-x64 base_image = win10-edu-x64-10586-postsp ztoolkit = ztoolkit efi_boot_image = win10-edu-x64-10586-uefi-boot [OSONLY-win7-sp1-pro-x86-zcm1142] Description = OSONLY-win7-sp1-pro-x86-zcm1142 project_image_path = osonly-win7-sp1-pro-x86-zcm1142 project_os = win7-sp1-pro-x86 partition_count = 1 partition1_size = 60000 driver_os = win7-x86 base_image = win7-sp1-pro-x86-postsp ztoolkit = ztoolkit [BASEOS-win10-ent-x86-14393-zcm1142] Description = BASEOS-win10-ent-x86-14393-zcm1142 project_image_path = baseos-win10-ent-x86-14393-zcm1142 project_os = win10-ent-x86 partition_count = 1 partition1_size = 60000 driver_os = win10-x86 base_image = win10-ent-x86-14393-postsp ztoolkit = ztoolkit
Now add these entries into the
[language]
section of thelang.ini
file then populate the language specific settings using the following example as a template:; lang.ini [language] win10-ent-x86-14393-postsp = en, fr, nl win10-edu-x64-10586-postsp = en, fr, nl, de [en] SystemLocale=en-GB UserLocale=en-GB InputLocale=0809:00000809 mui=en-GB Geo = 242 [fr] SystemLocale=fr-FR UserLocale=fr-FR InputLocale=040c:0000040C mui=fr-FR Geo = 84 [nl] SystemLocale=nl-NL UserLocale=nl-NL InputLocale=0413:00000413 mui=nl-NL Geo = 176 [de] SystemLocale=de-DE UserLocale=de-DE InputLocale=0407:00000407 mui=de-DE Geo = 94
-
Configure Zim to read the
lang.ini
fileUpdate the
zim.cfg
file to read in the available language options from thelang.ini
file.- Open
zim.cfg
file in a text editor
- Find the following section in the file and update to include the changes highlighted in green:
Label:Lookup_Project_Info ; Read in project specific information File:Ini,Get,"%_ZimDir%projects.ini","%Lookup_Project%","Project_Image_Path",Project_Image_Path File:Ini,Get,"%_ZimDir%projects.ini","%Lookup_Project%","Project_OS",Project_OS File:Ini,Get,"%_ZimDir%projects.ini","%Lookup_Project%","Partition_Count",Partition_Count File:Ini,Get,"%_ZimDir%projects.ini","%Lookup_Project%","Driver_OS",Project_Driver_OS File:Ini,Get,"%_ZimDir%projects.ini","%Lookup_Project%","Base_Image",Base_Image File:Ini,Get,"%_ZimDir%projects.ini","%Lookup_Project%","Ztoolkit",Project_Ztoolkit File:Ini,Get,"%_ZimDir%projects.ini","%Lookup_Project%","Novcomp",Project_novcomp ; Read in language information ; This uses the baseimage name from the projects.ini as the key. ; This allows different MUI options to be specified for different OS images to cater for version-specific files File:Ini,Get,"%_ZimDir%lang.ini","language","%Base_Image%",lookup_lang Set:Zisd_lang,GetKeyPairStringValue("%VendorDataENGLSTRING%", "lang") Set:Zisd_ForceMui,GetKeyPairStringValue("%VendorDataENGLSTRING%", "ForceMui") ; Identify Win 10 version number from Base_Image variable. Set:OSVersion,token("%Base_Image%","-","4")
- Save the changes to the
zim.cfg
file
- Open
-
Configure the project restore form to display a language selection option (if available)
The project restore form only needs to display a list of language options when the base image being restored has language options configured in the
lang.ini
file.- Open the
zim.cfg
file in a text editor
- Find the following section in the file and update to include the changes highlighted in green:
Label:Ztoolkit_ComputerName_Form ; Launch a Form to display detected hardware and select machine type Form:Start,"Info","Hardware Detected","_OkCancel^_Ok",Blue Form:Item,"Item1",Label,"Manufacturer" Form:Item,"Item2",EditBox,"%Lookup_Section%",ReadOnly Form:Item,"Item3",Label,"Model" Form:Item,"Item4",EditBox,"%Lookup_Value%",ReadOnly Form:Item,"Item5",Label,"Hardware Image" Form:Item,"Item6",EditBox,"%Drivers_Image%",ReadOnly Form:Item,"Item7",Label,"Hardware Type" Form:Item,"Item8",EditBox,"%Machine_Type%",ReadOnly Form:Item,"Item9",Label,"OS" Form:Item,"Item10",EditBox,"%Project_OS%",ReadOnly Form:Item,"Item11",Label,"Computer Name" Form:Item,"Item12",EditBox,"%Ask_COMPUTERNAME%" ; Only display language selection if lang.ini info has been identified successfully If:Var,lookup_lang,NE,"" Form:Item,"mui1",Label,"Language:" Form:Item,"mui2",CheckBoxes,"%zisd_lang%","%lookup_lang%" End: Form:Item,"Item13",Label,"Auto Restart after imaging" Form:Item,"Item14",RadioButtons,"Yes","Yes,No" Form:Display,"Info" If:Var,_Form,EQ,"_Cancel" Menu:Return End Set:Ask_COMPUTERNAME,%_Info_item12% Set:Ask_lang,%_Info_mui2% Set:AutoRestart,%_Info_item14% If:Var,Ask_COMPUTERNAME,EQ,"" Dialog:Ask,"","You must specify a Computer Name.","_Ok",Red Goto:Ztoolkit_ComputerName Else: Set:ComputerNameLength,Len(%Ask_COMPUTERNAME%) If:Var,ComputerNameLength,GT,"15" Dialog:Ask,"Error","You must specify a Computer Name less than 16 characters","_Ok",Red Goto:Ztoolkit_ComputerName_Form End: End: If:Var,Ask_COMPUTERNAME,CONTAINS," " Dialog:Ask,"","The Computer Name must not contain a space.","_Ok",Red Goto:Ztoolkit_ComputerName_Form End: If:Var,Ask_COMPUTERNAME,NE,"%COMPUTERNAME%" Set:COMPUTERNAME,"%Ask_COMPUTERNAME%" End: If:Var,lookup_lang,NE,"" Set:MuiCount,TokenCount("%Ask_lang%", ",") ; workaround issue with token count in zim(pe) Set:LookupMuiLength,len("%ask_lang%") If:Var,LookupMuiLength,"GT","1" If:Var,MuiCount,EQ,"0" Set:MuiCount,Math("+", 1) End: End: If:Var,MuiCount,NE,0 ; We need to specify which language pack will be set by default and if this will be locked for all users using group policy. ; Launch a Form to Set Default Language Form:Start,"MUI","Language Options","_BackFinishCancel^_Finish",Blue Form:Item,"Item1",Label,"Select Default Language" Form:Item,"Item2",RadioButtons,"%zisd_DefaultLang%","%ask_lang%" Form:Item,"Item3",Label,"Lock display language to selection" Form:Item,"Item4",RadioButtons,"%zisd_ForceMui%","Yes,No" Form:Display,"MUI" If:Var,_Form,EQ,"_Cancel" Menu:Return End: If:Var,_Form,EQ,"_Back" Goto:Ztoolkit_ComputerName_Form End: Set:Ask_DefaultLang,%_Mui_Item2% Set:Ask_ForceMui,%_Mui_Item4% End: End:
- Save the changes to the
zim.cfg
file
- Open the
-
Read in language settings from
lang.ini
based on information selected in the Zim form.When you select a language code in the Zim form the appropriate information needs to then be read in from the
lang.ini
file.- Open the
zim.cfg
file in a text editor
- Find the following section in the file and update to include the highlighted changes:
Dialog:Ask,"", "Warning! All hard disk data on this machine will be erased.\n\nContinue?","_YesNo",red If:Var,_ask,eq,"_No" Menu:Return End: If:Var,lookup_lang,NE,"" ; Lookup information based on the language selected in the zim form If:Var,ask_DefaultLang,NE,"" File:Ini,Get,"%_ZimDir%lang.ini","%Ask_lang%","SystemLocale",lookup_SystemLocale File:Ini,Get,"%_ZimDir%lang.ini","%ask_lang%","UserLocale",lookup_UserLocale File:Ini,Get,"%_ZimDir%lang.ini","%ask_lang%","InputLocale",lookup_InputLocale File:Ini,Get,"%_ZimDir%lang.ini","%ask_lang%","Geo",lookup_Geo File:Ini,Get,"%_ZimDir%lang.ini","%ask_DefaultLang%","mui",lookup_defaultMui ; Identify each MUI pack based on the selection Set:MuiIndex,"1" Set:LookupMui,Token("%ask_lang%", ",", %MuiIndex%) File:Ini,Get,"%_ZimDir%lang.ini","%LookupMui%","mui",MuiPacks While:Var,MuiIndex,NE,"%MuiCount%" Set:MuiIndex,Math("+", 1) Set:LookupMui,Token("%Ask_lang%", ",", %MuiIndex%) File:Ini,Get,"%_ZimDir%lang.ini","%LookupMui%","mui",lookupMui Set:MuiPacks,"%MuiPacks%,%lookupMui%" Wend: End: End: Dialog:Popup,"Restoring ENGL Smart Windows build process, please wait...",green
- Save the changes to the
zim.cfg
file
- Open the
-
Update the
zim.cfg
file to store selected information to ZISDThe language information now needs to be stored to ZISD to ensure that the build process can access it within Windows.
- Open the
zim.cfg
file in a text editor
- Update the file to include the highlighted changes:
; Update the information in ZISD Zisd:Put,NetBiosName,%COMPUTERNAME% ; Update VendorDataENGL (sample) Set:VendorDataENGLSTRING,PutKeyPairStringValue("%VendorDataENGLSTRING%","Machine_Type","%machine_type%") Set:VendorDataENGLSTRING,PutKeyPairStringValue("%VendorDataENGLSTRING%","OS","%project_os%") Set:VendorDataENGLSTRING,PutKeyPairStringValue("%VendorDataENGLSTRING%","Project","%lookup_project%") ; Store language information to ZISD if required. If:Var,ask_lang,NE,"" Set:VendorDataENGLSTRING,PutKeyPairStringValue("%VendorDataENGLSTRING%","lang","%Ask_lang%") Set:VendorDataENGLSTRING,PutKeyPairStringValue("%VendorDataENGLSTRING%","mui","%lookup_defaultMui%") Set:VendorDataENGLSTRING,PutKeyPairStringValue("%VendorDataENGLSTRING%","ForceMui","%Ask_ForceMui%") Set:VendorDataENGLSTRING,PutKeyPairStringValue("%VendorDataENGLSTRING%","SystemLocale","%lookup_SystemLocale%") Set:VendorDataENGLSTRING,PutKeyPairStringValue("%VendorDataENGLSTRING%","UserLocale","%lookup_UserLocale%") Set:VendorDataENGLSTRING,PutKeyPairStringValue("%VendorDataENGLSTRING%","InputLocale","%lookup_InputLocale%") Set:VendorDataENGLSTRING,PutKeyPairStringValue("%VendorDataENGLSTRING%","Geo","%lookup_Geo%") End: Set:MonitorStatus,"Started" Gosub:SendUpdateToMonitorServer
- Save the changes to the
zim.cfg
file
- Open the
-
Update the
zim.cfg
file to restore selected MUI add-on image- Open the
zim.cfg
file in a text editor
- Update the file to include the highlighted changes:
Wim:Apply,"%Images_Path%\projects\%Project_Image_Path%\%Project_Ztoolkit%.wim","1","%Project_Partition%" If:Var,_Error,Eq,1 ; Error applying image Dialog:Ask,"Error","Failed to restore image:\n\n%Images_Path%\projects\%Project_Image_Path%\%Project_Ztoolkit%.wim\n\nClick OK to return to menu.",_Ok Menu:Return End: Wim:Apply,"%Images_Path%\drivers\%Project_Driver_OS%\%Drivers_Image%.wim","1","%Project_Partition%" ; Restore MUI image file(if Required) If:Var,MuiPacks,NE,"" ; Need to Restore each of the specified language pack files Set:MuiCount,TokenCount("%MuiPacks%", ",") ; workaround issue with token count in zim(pe) Set:MuiPacksLength,len("%MuiPacks%") If:Var,MuiPacksLength,"GT","1" If:Var,MuiCount,EQ,"0" Set:MuiCount,Math("+", 1) End: End: Set:MuiIndex,"0" While:Var,MuiIndex,NE,"%MuiCount%" Set:MuiIndex,Math("+", 1) Set:MuiImage,Token("%MuiPacks%", ",", %MuiIndex%) Wim:Apply,"%Images_Path%\os\%Project_OS%\mui-%OSVersion%-%MuiImage%.wim","1","%Project_Partition%" Wend: End: File:Run,"net use "%Images_Path%" /delete /yes", silent Pause:2 Dialog:Popupclose
- Save the changes to the
zim.cfg
file
- Open the
-
Update
zimpeget.cmd
to download thelang.ini
file into the TFTP folder structure- Update the standard
zimpeget.cmd
to also retrieve thelang.ini
file:
... REM Disable Windows Firewall wpeutil.exe DisableFirewall REM TFTP files for %%i in (zim.exe ztrace.exe) do Ztftpclient.exe /get /host:%PROXYADDR% /remote:"zimfiles/%PLATFORM%/%%i" /local:%%i >NUL for %%i in (engl.lic zim.cfg zim.jpg images.ini projects.ini lang.ini) do Ztftpclient.exe /get /host:%PROXYADDR% /remote:"zimfiles/%%i" /local:%%i >NUL REM Enable Windows Firewall wpeutil.exe EnableFirewall ...
- Save the changes to the
zimpeget.cmd
file
- Update the standard
-
Save the updated files on the server
The updated
zim.cfg
,zimpeget.cmd
andlang.ini
files now need to be transferred to the tftp/zimfiles folder on the ZENworks server.
-
-
Integrate updates into the build process
The build process needs to be updated to install the MUI langage packs and if required force the display langauge to the appropriate language.
Done Task 1. Create MUI image files 2. Configure the Language settings within the project 3. Add a phase script to the project to install the MUI packs 4. Create updated files for deployment -
Create MUI add-on image files
The MUI files that were downloaded earlier need to be added to an image so that they can be deployed to the local machine by Zim.
- Ensure the correct Language pack media has been downloaded for the base image that is being deployed.
Make a note of the version number used in the base_image name from theprojects.ini
file.
- Mount the ISO file that contains the Language pack information
NOTE: Microsoft has changed the naming format of the language pack files with the Windows 10 1607 release.
More information here: https://msdn.microsoft.com/en-gb/windows/hardware/commercialize/manufacture/desktop/where-is-lpcab .
This TID will work with both filename formats.
The files are either in a folder structure like:\---langpacks +---ar-sa | lp.cab | +---bg-bg | lp.cab | +---cs-cz | lp.cab | +---da-dk \ lp.cab
or+---Windows Preinstallation Environment +---x64 | \---langpacks | Microsoft-Windows-Client-Language-Interface-Pack_x64_af-za.cab | Microsoft-Windows-Client-Language-Interface-Pack_x64_am-et.cab | Microsoft-Windows-Client-Language-Interface-Pack_x64_as-in.cab | Microsoft-Windows-Client-Language-Interface-Pack_x64_az-latn-az.cab | Microsoft-Windows-Client-Language-Interface-Pack_x64_be-by.cab | Microsoft-Windows-Client-Language-Interface-Pack_x64_bn-bd.cab | Microsoft-Windows-Client-Language-Pack_x64_ar-sa.cab | Microsoft-Windows-Client-Language-Pack_x64_bg-bg.cab | Microsoft-Windows-Client-Language-Pack_x64_cs-cz.cab | Microsoft-Windows-Client-Language-Pack_x64_da-dk.cab | Microsoft-Windows-Client-Language-Pack_x64_de-de.cab | \---x86 \---langpacks Microsoft-Windows-Client-Language-Interface-Pack_x86_af-za.cab Microsoft-Windows-Client-Language-Interface-Pack_x86_am-et.cab Microsoft-Windows-Client-Language-Interface-Pack_x86_as-in.cab Microsoft-Windows-Client-Language-Interface-Pack_x86_az-latn-az.cab Microsoft-Windows-Client-Language-Interface-Pack_x86_be-by.cab Microsoft-Windows-Client-Language-Interface-Pack_x86_bn-bd.cab Microsoft-Windows-Client-Language-Pack_x86_ar-sa.cab Microsoft-Windows-Client-Language-Pack_x86_bg-bg.cab Microsoft-Windows-Client-Language-Pack_x86_cs-cz.cab Microsoft-Windows-Client-Language-Pack_x86_da-dk.cab Microsoft-Windows-Client-Language-Pack_x86_de-de.cab
- Make a note of the language code for each LP or LIP file - this can be identified from the file name, e.g.
Microsoft-Windows-Client-Language-Interface-Pack_x64_zu-za.cab Microsoft-Windows-Client-Language-Pack_x64_de-de.cab
or\---langpacks +---ar-sa | lp.cab | +---bg-bg | lp.cab | +---cs-cz | lp.cab | \---da-dk lp.cab
This gives a language code of zu-ZA [Zulu (South Africa)] for the Language Interface Pack while the Language Pack has a language code of de-DE [German (Germany)]
NOTE: The second part of the language code is normally displayed in uppercase
- Create folder structure to be used to store MUI files under
C:\ProgramData\ENGL\ImagingToolkit\Projects\MUI\<win10>-<edition>-<arch>\
folder structure.
C:\ProgramData\ENGL\ImagingToolkit\Projects\MUI\Win10-edu-x64 +---mui-10586-de-DE | \---ztoolkit | \---mui | +---de-DE +---mui-10586-fr-FR | \---ztoolkit | \---mui | +---fr-FR \---mui-10586-nl-NL \---ztoolkit \---mui +---nl-NL
NOTE: The version number 10586 is required to ensure that the correct MUI files are restored.
- Copy appropriate files from the ISO into the file structure
Langauge Pack files (Windows 10 - 1607 or newer) are shown in green
C:\ProgramData\ENGL\ImagingToolkit\Projects\MUI\Win10-edu-x64 +---mui-14393-de-DE | \---ztoolkit | \---mui | \---de-DE | Microsoft-Windows-Client-Language-Pack_x64_de-DE.cab +---mui-14393-fr-FR | \---ztoolkit | \---mui | \---fr-FR | Microsoft-Windows-Client-Language-Pack_x64_fr-FR.cab \---mui-14393-nl-NL \---ztoolkit \---mui \---nl-NL Microsoft-Windows-Client-Language-Pack_x64_nl-NL.cab
While Langauge Pack files (Windows 10 - 1511 or earlier) will look like:C:\ProgramData\ENGL\ImagingToolkit\Projects\MUI\Win10-edu-x64 +---mui-10586-de-DE | \---ztoolkit | \---mui | \---de-DE | lp.cab +---mui-10586-fr-FR | \---ztoolkit | \---mui | \---fr-FR | lp.cab \---mui-10586-nl-NL \---ztoolkit \---mui \---nl-NL lp.cab
- Install the ENGL Wimwiz tool (available to purchase) from - https://www.engl.co.uk/products/wimwiz
NOTE: It is possible to use imagex / dism to set up the MUI wim images rather than the ENGL WimWiz tool. The steps for this process are outwith the scope of this TID. - Right click on mui-de-DE folder then select WimWiz -> Capture to ..
- The WimWiz Capture Settings page will load.
Change the Target path from :C:\ProgramData\ENGL\ImagingToolkit\Projects\MUI\win10-edu-x64\mui-10586-de-DE\ztoolkit.wim
to:
C:\ProgramData\ENGL\ImagingToolkit\Projects\MUI\win10-edu-x64\mui-10586-de-DE.wim
Then click OK
- Save the newly created wim files to the <server>\<images share>\os\<win10>-<windows edition>-<arch>\ folder structure and name using mui-<Windows Version>-<Language Code>.wim
i.e.
\\labsrv1\images\os\win10-edu-x64\mui-10586-de-de.wim
- Ensure the correct Language pack media has been downloaded for the base image that is being deployed.
-
Configure the language settings within the project
Language settings for the project are stored to ZISD by Zim when a project is deployed. The project needs to be updated to ensure that it uses this information.
- Update project settings to use variables configured using Zim
Select "Expert View" - "Windows" - "Localisation"
Expand the System/User/Input locale options
For each "Build Variable" entry populate the appropriate variable:
Language Setting Build Variable System Locale %ENGL_SystemLocale% User Locale %ENGL_UserLocale% Input Locale %ENGL_InputLocale% Geographic ID %ENGL_Geo%
e.g.
- Save the changes to the project
- Update project settings to use variables configured using Zim
-
Add a phase script to the project to install the MUI packs
The build process requires a custom phase script to be added to the project. This script will check if there is a
c:\ztoolkit\mui
folder and if it exists will runlpksetup
to install the language packs in the folder structure. The script will also read in the language settings from ZISD and apply them to the machine.- Open notepad
- Paste in the following Powershell script
# Powershell script to install MUI language packs if folder structure has been found. # Create a reference to Ztoolkit Control $Utils = new-object -comobject "ENGL.Ztoolkit.Utils" $ZENworks = new-object -comobject "ENGL.Ztoolkit.ZENworks" if (Test-Path C:\ztoolkit\mui) { # The c:\ztoolkit\mui folder exists [void]$Utils.AppendLog("C:\ztoolkit\mui exists") [void]$Utils.AppendLog("Installing MUI Packs. This may take a while!") $process="lpksetup.exe" $arg = "/r /i * /p c:\ztoolkit\mui" $Utils.AppendLog("Using lpksetup to install Language packs found under c:\ztoolkit\mui") start-process $process -argumentList:$arg -wait $Utils.AppendLog("lpksetup has exited") # Now setup the display language settings # Read in MUI information from ZISD # Read in ZISD:VendorDataENGL $VendorDataENGLSTRING= $ZENworks.GetZisdAttributeValue("VendorDataENGL") # Read the values from VendorDataENGLSTRING that we need to set the language. $zisd_mui = $Utils.GetKeyPairStringValue($VendorDataENGLSTRING, "mui") $zisd_ForceMui = $Utils.GetKeyPairStringValue($VendorDataENGLSTRING, "ForceMui") $Utils.AppendLog("Zisd:MUI : $zisd_mui") # Set Culture $Utils.AppendLog("Set-Culture $zisd_mui") Set-Culture $zisd_mui #Set the system locale $Utils.AppendLog("Set-WinSystemLocale $zisd_mui") Set-WinSystemLocale $zisd_mui # Set the Language List $Utils.AppendLog("Set-WinUserLanguageList $zisd_mui -force") Set-WinUserLanguageList $zisd_mui -force # Set Group Policy key to force the UI settings to apply # This will only be processed if $zisd_ForceMui is set to Yes. If($zisd_ForceMui -eq "Yes") { [void]$Utils.appendlog("Configure Group Policy to set the PreferredUILanguage to $zisd_mui") $registryPath = "HKLM:\Software\Policies\Microsoft\MUI\Settings" $Name = "PreferredUILanguages" $value = $zisd_mui If(!(Test-Path $registryPath)) { [void]$Utils.appendlog(" Registry key doesn't exist so we need to create it before writing to it.") New-Item -Path $registryPath -Force | Out-Null New-ItemProperty -Path $registryPath -Name $name -Value $value ` -PropertyType STRING -Force | Out-Null } Else { [void]$utils.appendlog("Registry key exists so set value") New-ItemProperty -Path $registryPath -Name $name -Value $value -PropertyType STRING -Force | Out-Null } } } Else { [void]$Utils.AppendLog("C:\ztoolkit\mui does NOT exist") } [void]$Utils.AppendLog("Phase1-after.ps1 has completed.")
- Save the file to the file system as
phase1-after.ps1
and make a note of the path for later
- Open notepad
- Open Build Console and load the appropriate <project>.xml file
- Select the Expert View then navigate to
Customisation : Custom Files
- Right click in the properties view then select Add
- The "Add Custom Files" dialog will open. Browse to the
phase1-after.ps1
created earlier then select it
- Click
Open
to add the file to the Custom Files property view
-
-
Create updated files for deployment
The project has now been updated. In order to deploy the changes when a machine is built the deployment process (ztoolkit) image needs to be recreated.
- Validate the project
- Launch Deployment wizard and create the build process image (ztoolkit)
- Update the
../content-repo/images/<project>/
folder with newztoolkit
image file.
- Validate the project
-
Test updated files
The files have all been updated on the server. These now need to be tested to ensure that everything works as required.
- PXE boot a test machine to the updated imaging environment.
- Select the Restore menu
- Select the appropriate Windows 10 project
- Select the appropriate MUI options to be tested
- Select OK to restore the project images
The image files will restore and the machine will reboot
- The machine will build successfully and when reviewed it will have the selected MUI Language Pack (and / or Language Interface Pack) installed
- PXE boot a test machine to the updated imaging environment.
The process will look like:
-
If you have any problems or questions about the steps in this TID please contact the ENGL support team