How to add/integrate language pack & language feature pack into a ISO via NTLite

SM03

Active Member
I've the EN-GB ISO & I want to add these files
microsoft-windows-client-languagepack-package_en-gb-amd64-en-gb.esd
&
microsoft-windows-languagefeatures-basic-en-gb-package-amd64.cab
because every time I make a clean installation, I see these files are downloading via Setting/Apps/Optional Features
1732
So I want to add them into ISO like CU, SSU. I know that the microsoft-windows-languagefeatures-basic-en-gb-package-amd64.cab is the feature pack & that can be added like the other Windows update cab package like CU via NTlite but not sure about this microsoft-windows-client-languagepack-package_en-gb-amd64-en-gb.esd file. DO I need to add this or this ESD file is already there into the main ISO & installed & I don't have to add this.

nuhi Clanger Kasual can you guys help?
 
Hi,

I have similar requirements and have solved this. edit: not really

Language Pack

For language package downloaded in ESD format in uupdump.ml you can convert them in CAB with this command line tool : ESD2CAB-CAB2ESD.zip. Then add the language pack CAB files in the update section of NTLite.

Language Features

Those files are also downloaded from uupdump.ml. For instance, here are the Japanese cab files. To avoid the same file naming issue as stated here, you have to rename cab file. Uncompress or open the cab and find the .cat file that match the expected name. Copy that name to rename the cab excluding the ending part in red.

Example

[1] uupdump namemicrosoft-windows-languagefeatures-basic-ja-jp-package-amd64.cab
cat file name patternMicrosoft-Windows-LanguageFeatures-Basic-ja-jp-Package~31bf3856ad364e35~amd64~~10.0.18362.1.cat
rename the cab in [1] like thisMicrosoft-Windows-LanguageFeatures-Basic-ja-jp-Package~31bf3856ad364e35~amd64~~.cab

Put those language features cab files in path provided by NTLite. For Win 1903 x64, it’s ...[downloaded updates path cache (see settings)]\10.0.1903.x64.FOD\

Edit 1: Even if NTLite reports everything is OK, once Windows installed, the additional languages are not listed in Windows settings. See
this post.

Edit 2: After some test, it seems the cab file generated by the ESD2CAB tool is not recognized as valid by windows (tested with lpksetup). But lpksetup detect LP installed with NTLite are installed (use command: lpksetup /u). Again with lpksetup command, I tried to uninstall LP and reinstall with a valid CAB from official ISO. It reports LP is installed but still, the new additional language is not there in Windows Language Settings :confused: When I add the language from the settings, it starts downloading LP ‍:oops: Environnement test system: VirtualBox, Windows 1903 (18362.267). Needed help from abbodi86 nuhi.


Edit 3 : I tried to use DISM /Online commands from here and re/installed all: Language packs, LIPs and FOD. But still no presence of the added language in settings despite the DISM /Online /Get-Intl returns language is well installed. I reboot the machine to no avail. But this time, when I add language through settings, it seems it detects all is installed and add the language without downloading anything. I think I need to add some reg key. I gonna test.

Edit 4: As I suspected, add some reg key is the solution. I used RegFromApp to detect which key is added by SystemSettings.exe. Here is the reg file needed on my system that has French as default and Japanese as other language. As soon this is added to the registry, the language button in taskbar appears as well as in settings.

Code:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\International\User Profile\fr-FR]
"CachedLanguageName"="@Winlangdb.dll,-1165"

[HKEY_CURRENT_USER\Control Panel\International\User Profile\ja]
"CachedLanguageName"="@Winlangdb.dll,-1230"
"0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}"=dword:00000001
"FeaturesToInstall"=dword:000000e3

[HKEY_CURRENT_USER\Control Panel\International\User Profile]
"ShowAutoCorrection"=dword:00000001
"ShowTextPrediction"=dword:00000001
"Languages"=hex(7):66,00,72,00,2D,00,46,00,52,00,00,00,6A,00,61,00,00,00
"ShowCasing"=dword:00000001
"ShowShiftLock"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\CTF\SortOrder\Language]
"00000000"="0000040c"
"00000001"="00000411"

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International]
"AcceptLanguage"="fr-FR,fr;q=0.7,ja;q=0.3"

[HKEY_CURRENT_USER\Control Panel\Desktop]
"PreferredUILanguagesPending"=hex(7):66,00,72,00,2D,00,46,00,52,00,00,00

[HKEY_CURRENT_USER\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000]
"CLSID"="{03B5835F-F03C-411B-9CE2-AA23E1171E36}"
"KeyboardLayout"=dword:00000000
"Profile"="{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}"

[HKEY_CURRENT_USER\Keyboard Layout\Preload]
"1"="0000040c"
"2"="00000411"

[HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile\0x00000411\{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}]
"Enable"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\CTF\Assemblies\0x0000040c\{34745C63-B2F0-4784-8B67-5E12C8701A31}]
"Default"="{00000000-0000-0000-0000-000000000000}"
"Profile"="{00000000-0000-0000-0000-000000000000}"
"KeyboardLayout"=dword:040c040c

[HKEY_CURRENT_USER\Software\Microsoft\CTF\HiddenDummyLayouts]
"00000411"="00000411"

[HKEY_CURRENT_USER\Control Panel\International\LanguageComponentsInstallation\Basic]
"ja-JP"="30757443_2195408995"

[HKEY_CURRENT_USER\Control Panel\International\LanguageComponentsInstallation\Fonts]
"und-JPAN"="30757443_2195408995"

[HKEY_CURRENT_USER\Control Panel\International\LanguageComponentsInstallation\OCR]
"ja-JP"="30757443_2195408995"
 
Last edited:
Put those language features cab files in path provided by NTLite. For Win 1903 x64, it’s ...[downloaded updates path cache (see settings)]\10.0.1903.x64.FOD\

Would they show up so I can choose them in the input method selection once windows is installed then? Because NTLite reports them as successfully installed, yet I cannot select en-us as an input method in pt-br windows without connecting to the ineternet and downloading the files.
 
Well, I tested with my method using files from uupdump and it results that NTLite reports integration success. But once Windows installed, additional languages are not listed in Windows settings. Only the default language is there. And although I installed the FOD, when I add the Japanese keyboard in preferred languages>french (my system default language)>option>add keyboard, when I switch to Japanese, the IME is not there and I can not write in Japanese (it’s not the good method, undo that). Finally, I have to add Japanese as preferred language. Windows will download the language package and then I’m able to switch and write in Japanese.

See update here.
 
Last edited:
Hi,

I have similar requirements and have solved this. edit: not really

Language Pack

For language package downloaded in ESD format in uupdump.ml you can convert them in CAB with this command line tool : ESD2CAB-CAB2ESD.zip. Then add the language pack CAB files in the update section of NTLite.

Language Features

Those files are also downloaded from uupdump.ml. For instance, here are the Japanese cab files. To avoid the same file naming issue as stated here, you have to rename cab file. Uncompress or open the cab and find the .cat file that match the expected name. Copy that name to rename the cab excluding the ending part in red.

Example

[1] uupdump namemicrosoft-windows-languagefeatures-basic-ja-jp-package-amd64.cab
cat file name patternMicrosoft-Windows-LanguageFeatures-Basic-ja-jp-Package~31bf3856ad364e35~amd64~~10.0.18362.1.cat
rename the cab in [1] like thisMicrosoft-Windows-LanguageFeatures-Basic-ja-jp-Package~31bf3856ad364e35~amd64~~.cab

Put those language features cab files in path provided by NTLite. For Win 1903 x64, it’s ...[downloaded updates path cache (see settings)]\10.0.1903.x64.FOD\

Edit 1: Even if NTLite reports everything is OK, once Windows installed, the additional languages are not listed in Windows settings. See
this post.

Edit 2: After some test, it seems the cab file generated by the ESD2CAB tool is not recognized as valid by windows (tested with lpksetup). But lpksetup detect LP installed with NTLite are installed (use command: lpksetup /u). Again with lpksetup command, I tried to uninstall LP and reinstall with a valid CAB from official ISO. It reports LP is installed but still, the new additional language is not there in Windows Language Settings :confused: When I add the language from the settings, it starts downloading LP ‍:oops: Environnement test system: VirtualBox, Windows 1903 (18362.267). Needed help from abdallham255 nuhi.


Edit 3 : I tried to use DISM /Online commands from here and re/installed all: Language packs, LIPs and FOD. But still no presence of the added language in settings despite the DISM /Online /Get-Intl returns language is well installed. I reboot the machine to no avail. But this time, when I add language through settings, it seems it detects all is installed and add the language without downloading anything. I think I need to add some reg key. I gonna test.

Edit 4: As I suspected, add some reg key is the solution. I used RegFromApp to detect which key is added by SystemSettings.exe. Here is the reg file needed on my system that has French as default and Japanese as other language. As soon this is added to the registry, the language button in taskbar appears as well as in settings.

Code:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\International\User Profile\fr-FR]
"CachedLanguageName"="@Winlangdb.dll,-1165"

[HKEY_CURRENT_USER\Control Panel\International\User Profile\ja]
"CachedLanguageName"="@Winlangdb.dll,-1230"
"0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}"=dword:00000001
"FeaturesToInstall"=dword:000000e3

[HKEY_CURRENT_USER\Control Panel\International\User Profile]
"ShowAutoCorrection"=dword:00000001
"ShowTextPrediction"=dword:00000001
"Languages"=hex(7):66,00,72,00,2D,00,46,00,52,00,00,00,6A,00,61,00,00,00
"ShowCasing"=dword:00000001
"ShowShiftLock"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\CTF\SortOrder\Language]
"00000000"="0000040c"
"00000001"="00000411"

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International]
"AcceptLanguage"="fr-FR,fr;q=0.7,ja;q=0.3"

[HKEY_CURRENT_USER\Control Panel\Desktop]
"PreferredUILanguagesPending"=hex(7):66,00,72,00,2D,00,46,00,52,00,00,00

[HKEY_CURRENT_USER\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000]
"CLSID"="{03B5835F-F03C-411B-9CE2-AA23E1171E36}"
"KeyboardLayout"=dword:00000000
"Profile"="{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}"

[HKEY_CURRENT_USER\Keyboard Layout\Preload]
"1"="0000040c"
"2"="00000411"

[HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile\0x00000411\{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}]
"Enable"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\CTF\Assemblies\0x0000040c\{34745C63-B2F0-4784-8B67-5E12C8701A31}]
"Default"="{00000000-0000-0000-0000-000000000000}"
"Profile"="{00000000-0000-0000-0000-000000000000}"
"KeyboardLayout"=dword:040c040c

[HKEY_CURRENT_USER\Software\Microsoft\CTF\HiddenDummyLayouts]
"00000411"="00000411"

[HKEY_CURRENT_USER\Control Panel\International\LanguageComponentsInstallation\Basic]
"ja-JP"="30757443_2195408995"

[HKEY_CURRENT_USER\Control Panel\International\LanguageComponentsInstallation\Fonts]
"und-JPAN"="30757443_2195408995"

[HKEY_CURRENT_USER\Control Panel\International\LanguageComponentsInstallation\OCR]
"ja-JP"="30757443_2195408995"
Fetching/getting those LP & FOD files directly from the official MS ISO is the simplest way. Why anyone has to do this in this complicated manner? Just DL the ISO & copy those FOD files as per your preferred language & paste those in the NTLite SUb-DIR.

I did solve this issue by this way & as reported earlier, Windows installed with those FOD files by default adding/integrating with the help of NTLite.
 
Fetching/getting those LP & FOD files directly from the official MS ISO is the simplest way. Why anyone has to do this in this complicated manner? Just DL the ISO & copy those FOD files as per your preferred language & paste those in the NTLite SUb-DIR.

I did solve this issue by this way & as reported earlier, Windows installed with those FOD files by default adding/integrating with the help of NTLite.
I may not have been clear. I used the official LP and FOD from ISO during my test to determine if this resolve the bug. When integrating those files in an online system in virtualbox with the recommended way by MS, using Dism /online command, the files are properly added with no error BUT the added language is not present in language settings. The process doesn't add the needed registry values to do so. If it exists another command that need to be done to complete process instead of importing a registry file, I don't know it. Please share if I miss it.

I precised my setup earlier that may be different from yours. I add japanese as an additional language, not the default one and I don't need it to be selectable during setup process. My setup language use the default language only. It sounds like a Windows bug to me but I didn't try with older Win versions to confirm.
 
Last edited:
Okay, so a question, freMea:

Those regs, should I use them for NTLite integrated LPs or must I integrate those via DISM?
I wouldn't bother with DISM. I personally use a setupcomplete.cmd to add my registry files to the installed system, among other stuffs it does. Since those keys are HKCU, these require a little trick to be added during setup process because HKCU hive is not loaded yet. I could detail this later if you interested, in a dedicated trick and TIPS topic.
 
Back
Top