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 ZENworks Imaging.
Requirements
- Windows 10 (Enterprise or Education edition)
- Imaging Toolkit 10.0.4 (or newer)
- ENGL build process configured in a ZENworks environment (ZMG 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" 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%", ",") 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:
; BIOS Machines File:Run,"img %ImgRestoreCmd%os/%Project_OS%/%Base_Image%",verbose File:Run,"cat imglogr >> %_ZimDir%zim.log",verbose If:Var,_Error,EQ,"137" ; Trying to restore GPT based image in to BIOS machine. Dialog:Ask,"Warning!Image Restore Failed","img error:'Trying to restore GPT based image in to BIOS machine'\nThis is not supported.\n\nReturn to Menu","_Ok",Red Menu:Return End: File:Run,"img %ImgRestoreCmd%projects/%Project_Image_Path%/hotfixes.zmg %Project_Partition%",verbose File:Run,"cat imglogr >> %_ZimDir%zim.log",verbose File:Run,"img %ImgRestoreCmd%projects/%Project_Image_Path%/%Project_Novcomp% %Project_Partition%",verbose File:Run,"cat imglogr >> %_ZimDir%zim.log",verbose File:Run,"img %ImgRestoreCmd%projects/%Project_Image_Path%/%Project_Ztoolkit% %Project_Partition%",verbose File:Run,"cat imglogr >> %_ZimDir%zim.log",verbose File:Run,"img %ImgRestoreCmd%drivers/%Project_Driver_OS%/%Drivers_Image% %Project_Partition%",verbose File:Run,"cat imglogr >> %_ZimDir%zim.log",verbose End: ; Restore MUI image file(if selected) If:Var,MuiPacks,NE,"" ; Need to Restore each of the specified language pack files Set:MuiCount,TokenCount("%MuiPacks%", ",") Set:MuiIndex,"0" While:Var,MuiIndex,NE,"%MuiCount%" Set:MuiIndex,Math("+", 1) Set:MuiImage,Token("%MuiPacks%", ",", %MuiIndex%) File:Run,"img %ImgRestoreCmd%os/%Project_OS%/mui-%OSVersion%-%MuiImage%.zmg %Project_Partition%",verbose File:Run,"cat imglogr >> %_ZimDir%zim.log",verbose Wend: End: Pause:2 Dialog:Popupclose
- Save the changes to the
zim.cfg
file
- Open the
-
Update
zimget.s
to download thelang.ini
file into the ZENworks imaging environment- Update the standard
zimget.s
to also retrieve thelang.ini
file:
... tftp $PROXYADDR << _END_ > /dev/null verbose on bin get zimfiles/ldapsdk.tar $ZIMDIR/ldapsdk.tar get zimfiles/zim.tgz %_ZimDir%zim.tgz get zimfiles/engl.lic $ZIMDIR/engl.lic get zimfiles/zim.cfg $ZIMDIR/zim.cfg get zimfiles/images.ini $ZIMDIR/images.ini get zimfiles/projects.ini $ZIMDIR/projects.ini get zimfiles/lang.ini $ZIMDIR/lang.ini get zimfiles/zimrun.s $ZIMDIR/zimrun.s quit _END_ ...
- Save the changes to the
zimget.s
file
- Update the standard
-
Save the updated files on the server
The updated
zim.cfg
,zimget.s
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_fr-FR.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
- Create ZENworks add-on images using this folder structure such that the image filenames are called mui-<language code> and partition 1 contains the structure under mui-<language short code>
You will need to useImage Explorer
to do this. This will be installed on the ZENworks server or can be installed localy after downloading the appropriate media from the ZENworks Tools page : https://{ZENWORKS_SERVER}/zenworks-setup/?pageId=imaging
e.g.
- Save the newly created zmg files to the server in the
images\os\<win10>-<windows edition>-<arch>\
folder structure and name using the formatmui-<Windows Version>-<Language Code>.zmg
e.g.C:\Program Files (x86)\Novell\ZENworks\work\content-repo\images\os\win10-edu-x64\mui-10586-de-DE.zmg
- 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. If the "Lock display language to selection" option is selected then language settings will be configured using group policy to enforce the specified language for all users.
- PXE boot a test machine to the updated imaging environment.
The resulting menu process will look like:
-
If you have any problems or questions about the steps in this TID please contact the ENGL support team