PowerShell GUI for Downloading Language Packs - W10_11LangPack.ps1

use this command in powershell ,after you started it in admin mode: powershell -NoProfile -ExecutionPolicy Bypass -File "path\to\your\script\.ps1"
 
There's a .bat file included (in case you have a default or restrictive Execution Policy), which calls the PS script with -nop -ep bypass.
 
Hello.
The script is great, thank you.
But where were the files downloaded? :p
I can't locate them.
It would be nice if the script indicated this.
 
The files are downloaded to the current folder where you started the script.
Are you using a desktop shortcut? If you have a shortcut, change the property for "Start in" folder.
 
The folder containing your scripts is located in an smb share. I still saw a window where there was "Writing...". But it's true that no file was written in the folder apart from the bin folder which was then deleted. Maybe the script doesn't manage UNC paths? I'll try again locally.
 
I just ran the script locally, and after selecting the language files, the window closed.
Okay, I just found the files downloaded by the script. I just compared the installation with a recent backup, and the script placed the files:
Microsoft-Windows-Client-LanguagePack-Package_en-us-amd64-en-us.esd
Microsoft-Windows-LanguageFeatures-Basic-en-us-Package-amd64.cab
Microsoft-Windows-LanguageFeatures-Handwriting-en-us-Package-amd64.cab
Microsoft-Windows-LanguageFeatures-OCR-en-us-Package-amd64.cab
Microsoft-Windows-LanguageFeatures-Speech-en-us-Package-amd64.cab
Microsoft-Windows-LanguageFeatures-TextToSpeech-en-us-Package-amd64.cab
in C:\Windows\System32. So, I'm guessing that when I restart it, it detects these files already present in C:\Windows\System32 and closes.
I'll move these files elsewhere and see what happens.
 
I created an optional command-line parameter -Folder, with some sanity checking on the path and whether it's really a directory or not. Because I've added the option here I'll have to retrofit some of my other scripts to match likewise.

W10_11LangPack.ps1 -Folder ..\path\somewhere
 

Attachments

After several tests, I determined that the W10_11LP.bat script runs fine locally and on an SMB share, but on an SMB share, it returns an error when it tries to convert the .esd.
I think you need to make it more verbose so that it reports any errors it encounters.
 
UPDATE: Fixed a problem with ESD2CAB not finding any ESD file(s) to extract, because you're running W10_11LangPack.ps1 from a different path than the one you're currently working in.

abbodi's esd2cab_CLI.cmd has a limitation where it only recognizes .esd files in the same folder as itself. Instead of extracting the ESD2CAB files into $PSScriptRoot, I switched to the current working path ($PWD).
 
Heyy there, it has been a long time since this was posted and updated, but for me you are like the reddit guy that asked and solved the same question i had 5 years ago xD i love it. I kinda trashed my windows a bit when i generated the Tiny 10 image, so i cannot download any more language packs using the windows settings. I was looking to install your example, the czech language pack and didnt want to have to reinstall windows for it to work, so huge thanks! (^.^)/<3
 
Error 0x800f095
Where is "Error 0x800f095"? The script itself doesn't return a Windows error code.
There's a digit missing in your hex number (total of 8 digits after "0x").

Are you seeing this when it converts a Language Pack ESD file, or when NTLite is adding the language files to an image?
 
24H2 & 25H2 share the same Language files. I've updated the first post to make it more clear about the sharing. Thanks.
 
24H2 & 25H2 share the same Language files. I've updated the first post to make it more clear about the sharing. Thanks.
but i try marge langs with W10MUI Script Say langs is for 26100 not for 26200 and stopped
any help to marge langs ?
thanks advance
 
W10MUI is abbodi86's script on GitHub.

My guess is he hasn't updated the version checking for 25H2 (26200):
Code:
375  if %_build% equ 18363 set _build=18362
376  for %%# in (19042 19043 19044 19045) do if %_build% equ %%# set _build=19041
377  for %%# in (22622 22623 22624 22631 22635) do if %_build% equ %%# set _build=22621
378  if %_build% equ 20349 set _build=20348
379  if %_build% equ 26120 set _build=26100
380  for /L %%j in (1,1,%LANGUAGES%) do (
381  if not !LPBUILD%%j!==%_build% set "ERRFILE=!LPFILE%%j!"&goto :E_VER
382  )

Line 379 should probably read:
Code:
for %%# in (26120 26200) do if %_build% equ %%# set _build=26100
 
Back
Top