Replies: 1 comment
-
Concerns and challengesSeveral significant challenges have been identified during evaluation of this module. 1. Download time and unpredictable execution durationLanguage packs downloaded from Windows Update can be 200-400 MB each. If a configuration requests multiple language packs, the total download time can easily exceed 15-30 minutes depending on connection speed and Windows Update service responsiveness. This is a fundamental problem for Windows gecko, which is designed to execute as a Win32 app during Autopilot provisioning. Long execution times can:
2. Payload bloat for offline installationBundling language pack 3. Conflict with Microsoft Intune language pack managementMicrosoft Intune already has a mechanism for deploying language packs to devices. If both Windows gecko and Microsoft Intune attempt to install or configure language packs, this could lead to:
It is worth noting that while Microsoft Intune can deploy language packs to devices, it is the understanding that Microsoft Intune currently cannot set a language pack as the default display language - it only installs the pack. This gap is one of the motivations for considering a Windows gecko module. For more details on the Microsoft Intune language pack deployment capabilities, see Add Windows 10/11 languages to devices. 4. Timing and execution contextThe
This would require either running the module in two passes (SYSTEM for install, USER for activation) or implementing user-context logic within the SYSTEM execution - both of which add complexity and fragility. 5. Constrained Language Mode compatibilityThe Intermediate conclusionAfter evaluating the technical approaches, dependencies, and risks, the The primary reasons are:
Recommended alternative approachFor organizations that need automated MUI configuration, the recommended approach is:
This keeps language pack delivery in the deployment layer (Microsoft Intune) and language activation in the configuration layer (Windows gecko), respecting the separation of concerns. This discussion remains open for community input. If there are scenarios where the above approach does not work, or if Microsoft introduces new APIs that address the download time and context challenges, this decision can be revisited. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Module proposal: windowsMUI - Download, install, and activate MUI language packs
Windows gecko is a desired state configuration tool, and the idea of a
windowsMUImodule has been raised - a module that could download, install, and set a default Windows display language (MUI) as part of a Windows gecko configuration run.The goal would be to ensure that devices provisioned through Windows Autopilot or Microsoft Intune end up with the correct display language, especially in multilingual environments where the base OS image ships with a single language (typically en-US) and additional languages need to be applied post-deployment.
Proposed functionality
The module would allow administrators to:
A conceptual configuration could look something like this:
{ "windowsMUI": { "enabled": true, "settings": { "defaultLanguage": "da-DK", "copyLanguageSettingsToSystem": true, "removeUnlistedLanguages": false }, "dataset": [ { "description": "Install Danish language pack", "language": "da-DK", "source": "WindowsUpdate", "setAsDefault": true }, { "description": "Install Swedish language pack", "language": "sv-SE", "source": "WindowsUpdate", "setAsDefault": false }, { "description": "Install German language pack from payload", "language": "de-DE", "source": "Local", "path": ".\\langpacks\\Microsoft-Windows-Client-Language-Pack_x64_de-de.cab", "setAsDefault": false } ] } }PowerShell approaches for installing MUI language packs
There are several ways to work with language packs from PowerShell. Below are examples of the most common approaches, along with notes on their limitations.
Approach 1: Install-Language cmdlet (Windows 11, PowerShell 5.1)
The
Install-Languagecmdlet was introduced with Windows 11 and is part of theLanguagePackManagementmodule. It downloads and installs language packs directly from Windows Update.Note
Install-Languagerequires internet access to download the language pack from Windows Update. Download times vary significantly depending on the language and connection speed - a single language pack can be 200-400 MB.Approach 2: Add-WindowsCapability (Features on Demand)
Language packs can also be installed as Features on Demand (FOD) capabilities using
Add-WindowsCapability. This approach works on both Windows 10 and Windows 11.Note
Features on Demand capabilities are downloaded individually from Windows Update. Installing a complete language experience (basic, handwriting, OCR, speech, TTS) requires multiple separate downloads, compounding the time issue.
Approach 3: lpksetup.exe (legacy approach)
The
lpksetup.exeutility can install.cablanguage pack files that are bundled as payload or downloaded beforehand.Note
This approach requires the
.cabfile to be included in the payload package or downloaded separately. Language pack.cabfiles are 50-200 MB each, which significantly increases Win32 app package size.Removing unlisted language packs
To enforce desired state, language packs installed on the device but not listed in the configuration could be removed.
Note
Uninstall-Languageis part of theLanguagePackManagementmodule (Windows 11 only). The active display language cannot be removed - it must be changed before removal. Removing a language pack that was deployed by Microsoft Intune could cause Microsoft Intune to re-install it on the next sync, creating a removal/reinstall loop.Setting the default display language
After installing a language pack, the default display language can be set using the
Set-WinUILanguageOverrideandSet-WinUserLanguageListcmdlets.Note
Setting the display language typically requires a sign-out or restart to take full effect. The
Set-WinUILanguageOverridecmdlet sets the override for the current user - it does not change the system default language.Related resources
Beta Was this translation helpful? Give feedback.
All reactions