PowerShell GUI for Downloading Language Packs - W10_11LangPack.ps1

I've written a PowerShell GUI to download Language Packs for most versions of Windows 10 & 11.
This replaces searching UUP dump or rg-adguard for the correct version, downloading the links and renaming files.

We're still using UUP dump to generate the expiring download links. The script will skip files with identical names in the current folder.

View attachment 15124

Code:
Downloading "Microsoft-Windows-Client-LanguagePack-Package_cs-cz-amd64-cs-cz.esd"
Downloading "Microsoft-Windows-LanguageFeatures-Basic-cs-cz-Package-amd64.cab"
Downloading "Microsoft-Windows-LanguageFeatures-Handwriting-cs-cz-Package-amd64.cab"
Downloading "Microsoft-Windows-LanguageFeatures-OCR-cs-cz-Package-amd64.cab"
Downloading "Microsoft-Windows-LanguageFeatures-TextToSpeech-cs-cz-Package-amd64.cab"

SHA-1 Hash:
e7b2986577196a4dd08693327a7209dae02545e5  Microsoft-Windows-Client-LanguagePack-Package_cs-cz-amd64-cs-cz.esd
4e6b61b4e3654d03d765bbf59ab6fc45eb5b4c2f  Microsoft-Windows-LanguageFeatures-Basic-cs-cz-Package-amd64.cab
4ef0b346760bb818b830b218296c5bfd7b11d38d  Microsoft-Windows-LanguageFeatures-Handwriting-cs-cz-Package-amd64.cab
702a8eddbc454768efabb4c04ea540b464a6b7de  Microsoft-Windows-LanguageFeatures-OCR-cs-cz-Package-amd64.cab
f980392aca2b3d424c8ca73446beb7e8026bb14f  Microsoft-Windows-LanguageFeatures-TextToSpeech-cs-cz-Package-amd64.cab

What versions are supported?
  • Win 11 26H1
  • Win 11 24H2 & 25H2 are the same
  • Win 11 22H2 & 23H2 are the same
  • Win 11 21H2
  • Win 10 2004, 20H2, 21H1 & 21H2 are the same
  • Win 10 1903 & 1909 are the same
  • Win 10 1809
Win 10 below 1809 isn't supported (why are you still using it?). Server 2022 isn't here, because the language selection is severely limited.

Do I need ESD2CAB?
Yes, click on the GUI's download link to open abbodi's GitHub.
This script will download and run ESD2CAB for you, converting all *.esd files to CAB format.

Why do I get a PowerShell execution policy error?
Your default execution policy prevents unsigned scripts from running. Run the W10_11LP.bat instead.

How do I check if the downloaded packages are the correct version?
After files are downloaded, the script will report the packages' SHA-1 values.

You can compare the SHA-1 against UUPdump (select a Windows build, under Browse Files / Search enter "language").
ie. https://uupdump.net/findfiles.php?id=a84eaaea-f57c-4271-a642-4abf996a7101&q=language

Why do you use a different UUP than abbodi's W10MUI?
Language Packs are some of the first Windows packages built, and they're shared across later versions in the same family. While my source builds may be different, all packages have identical SHA-1 values to abbodi's lists. There's no functional difference btw them.

If you're interested, my source builds are listed in the script.

What about Win 7 & 8 versions?
There's a different script for you (included in the ZIP), because the languages list isn't the same as W10/11.
While you could just copy the URL from pastebin or other sources, I already wrote a GUI.



Why don't I see new languages in my user account?
Windows doesn't automatically add every installed language to your user profile. A system might have multiple languages, but you don't need every one of them. Instead you can specify your own list of displayed languages.

Run this PowerShell command from Post-Setup (After logon):
powershell-nop Set-WinUserLanguageList -LanguageList "en-US, en-GB" -Force

Replace the -LanguageList "en-US, en-GB" with your ordered list of keyboard languages.

How hard was it writing the GUI?
When you find a good WinForms code example, it's easy to modify and make your own layout. I moved and sized the visual elements by hand.
If you noticed, the OK button isn't active until the user selects from all menu boxes. And W11 doesn't have a x86 version, checking that option will always uncheck the button.
Thank you very much! Can you add support for Office langs as well?
 
I don't believe the Office LP's are available for direct download, if you're not a Volume Licensing client. There's a public website for Office Language Packs, but that only offers an OfficeSetup.exe.

If you're using ODT to download an install folder, you can specify additional languages in the XML.
 
Do not run this script on a system where the "zip and cab folders" component has been removed. It will cause errors and crashes during the final stage of converting esd to cab.
 
Do not run this script on a system where the "zip and cab folders" component has been removed. It will cause errors and crashes during the final stage of converting esd to cab.
The script uses the Windows native ZIP library to extract abbodi's ESD2CAB. Otherwise I'd have to bundle 7z.exe.
 
I suggest adding error instructions to #1. If other users receive an error message after deleting the "zip&cab folders", they will be able to see the cause. Thank you for your convenient tool.
 
I guess there is a problem with the script. Downloading the language files for en-US 25H2 just aborts after 1-2 minutes without an error. Is someone else having the same issue? (used it on two different computers)
 
Last edited:
I guess there is a problem with the script. Downloading the language files for en-US 25H2 just aborts after 1-2 minutes without an error. Is someone else having the same issue? (used it on two different computers)
Right now, the script works for me. Do you see output similar to this?

Code:
PS C:\Users\GARLIN\Downloads\W10_11LangPack> .\W10_11LangPack.ps1
Downloading "Microsoft-Windows-Client-LanguagePack-Package-amd64-en-us.esd"
Downloading "Microsoft-Windows-LanguageFeatures-Basic-en-us-Package-amd64.cab"
Downloading "Microsoft-Windows-LanguageFeatures-Handwriting-en-us-Package-amd64.cab"
Downloading "Microsoft-Windows-LanguageFeatures-OCR-en-us-Package-amd64.cab"
Downloading "Microsoft-Windows-LanguageFeatures-Speech-en-us-Package-amd64.cab"
Downloading "Microsoft-Windows-LanguageFeatures-TextToSpeech-en-us-Package-amd64.cab"

Package                                                                  SHA-1                                   
-------                                                                  -----                                   
Microsoft-Windows-Client-LanguagePack-Package-amd64-en-us.esd            29cd661e07e0fc670590577f8b51e982a6f3e77b
Microsoft-Windows-LanguageFeatures-Basic-en-us-Package-amd64.cab         75c9004e1c26fafe58e5b0edfe1cf54210d8efe5
Microsoft-Windows-LanguageFeatures-Handwriting-en-us-Package-amd64.cab   aa7f92c061a2117d0a240030b70a71d73729af63
Microsoft-Windows-LanguageFeatures-OCR-en-us-Package-amd64.cab           163f54fb4bea9228a06373369a83d92a6a0ea60b
Microsoft-Windows-LanguageFeatures-Speech-en-us-Package-amd64.cab        11524fd75511396f81a33ff251f446ee2e9720ea
Microsoft-Windows-LanguageFeatures-TextToSpeech-en-us-Package-amd64.cab  a5f2dd065b4adc32dbbd867ac6cf28bd09fe2870

Running ESD2CAB script.
Script exited.
 
I just tried it again, and suddenly it's working perfectly. Maybe it was just a temporary glitch. Sorry :-)
 
The script works in three parts:
- First part queries UUP dump to get a list of time-expiring URL's from the Windows Update servers.​
- Second part downloads each URL from MS.​
- Third part downloads abbodi's ESD2CAB converter to unpack the ESD file.​

Each of the parts can get network issues, but the second part (WU servers) is fairly reliable. MS uses a partner Content Delivery Network to spread network traffic across the web, and that can occasionally have temporary errors.

Let me know if you see any more problems.
 
Back
Top