Independent tech intelligence, checked against primary sources.

TechPulseMind Useful technology.
No manufactured hype.

How to Install Language Packs on Windows 11 Azure Virtual Desktop

Learn how to build a customized Windows 11 Enterprise image with multiple language packs for Azure Virtual Desktop host pools.

How to Install Language Packs on Windows 11 Azure Virtual Desktop

Prerequisites and Repository Setup

Deploying global teams on Azure Virtual Desktop requires configuring custom Windows 11 Enterprise virtual machine images to support multiple display languages. Starting with Windows 11, non-administrator user accounts can add display languages and features independently, removing the need for pre-installations in personal host pools. Pooled host pools, however, still benefit from pre-configured custom images containing required language packs for both single-session and multi-session deployments.

Before building a customized image, prepare an Azure VM with Windows 11 Enterprise installed, along with the corresponding Languages and Optional Features ISO and Inbox Apps ISO for your OS version (such as versions 22H2, 23H2, 24H2, or 25H2). You will also need an accessible file share repository, such as an Azure Files share or a Windows File Server VM.

To create the content repository, mount the downloaded ISO file on your Azure VM and copy all contents from the LanguagesAndOptionalFeatures folder into a newly created folder on your file share. Ensure the repository share permissions grant read access to the VM designated for building the custom image. Note that certain languages require additional satellite font packages containing specific naming patterns, such as ‘Jpan’ for Japanese fonts.

Manually Creating and Configuring the Custom Image

Deploy an Azure VM using the current Windows 11 Enterprise gallery image, connect via RDP as a local admin, and mount your file share repository to a drive letter like E. Open an elevated PowerShell session to run the configuration script. The process requires disabling specific scheduled tasks and registry keys that clean up unused language components, referencing the appropriate CSV mapping table to fetch features on demand (FODs) and satellite packages.

Below is the core PowerShell configuration logic provided by Microsoft for installing language packs and features:

Disable-ScheduledTask -TaskPath "\Microsoft\Windows\AppxDeploymentClient\" -TaskName "Pre-staged app cleanup"
Disable-ScheduledTask -TaskPath "\Microsoft\Windows\MUI\" -TaskName "LPRemove"
Disable-ScheduledTask -TaskPath "\Microsoft\Windows\LanguageComponentsInstaller" -TaskName "Uninstallation"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Control Panel\International" /v "BlockCleanupOfUnusedPreinstalledLangPacks" /t REG_DWORD /d 1 /f

$LIPContent = "E:"
$CSVFile = "Windows-10-1809-FOD-to-LP-Mapping-Table.csv"
$filePath = (Get-Location).Path + "\$CSVFile"
$FODList = Import-Csv -Path $filePath -Delimiter ";"

$targetLanguage = "es-es"
$sourceLanguage = (($FODList | Where-Object {$_.'Target Lang' -eq $targetLanguage}) | Where-Object {$_.'Source Lang' -ne $targetLanguage} | Select-Object -Property 'Source Lang' -Unique).'Source Lang'
if(!($sourceLanguage)){ $sourceLanguage = $targetLanguage }

Dism /Online /Add-Package /PackagePath:$LIPContent\Microsoft-Windows-Client-Language-Pack_x64_$sourceLanguage.cab
Dism /Online /Add-Package /PackagePath:$LIPContent\Microsoft-Windows-Lip-Language-Pack_x64_$sourceLanguage.cab

$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("$targetlanguage")
Set-WinUserLanguageList $LanguageList -force

Adjust the $targetLanguage parameter to match your intended language code. After script execution, verify the installation under Start, Settings, Time & Language, and Language. If the VM remained connected to the internet during setup, remove unnecessary language experience packs and app packages using cleanup commands such as Remove-AppxPackage before disconnecting the share.

Generalizing and Capturing the Image

With software customizations complete, generalize the image to prepare for deployment. Open an elevated command prompt and run the system preparation tool:

C:\Windows\System32\Sysprep\sysprep.exe /oobe /generalize /shutdown

Check the SetupErr.log file located in C:\Windows\System32\Sysprep\Panther if errors occur. Upon successful execution, stop the VM, capture it as a managed image within Azure, and use it to deploy your customized Azure Virtual Desktop host pool. Note that end users changing their display language must sign out via the Start menu and sign back in to apply changes.

Source

Official announcement or documentation

Some links on this page may be affiliate links. If you buy through them we may earn a commission at no extra cost to you. See our affiliate disclosure.