I've spent a lot of time lately working on automating server builds. One of my TODOs which I finally tackled today was installing support for the Complex Script and East Asian language packs which you normally have to manually check off in the regional control panel:

If you have run Active Directory in a large environment, particularly with domain controllers in Asia or the Middle East, chances are you've gotten this event before (or a similar one):
Event Type: Error
Event Source: NTDS ISAM
Event Category: General
Event ID: 604
Date: 11/17/2008
Time: 12:23:28 AM
User: N/A
Computer: TOKYO-DC02Description:
NTDS (648) NTDSA: Locale ID 0x00000411 (Japanese Japanese) is either invalid or not installed on this machine.For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
You get these when Outlook clients connect via NSPI and they're running one of the languages you need to manually install support for with the UI above. Checking the boxes, providing Windows with your install CD, and rebooting will take care of these errors. There's no particularly easy way to do this from a script though. Some Google searching revealed that KB289125 discusses how to do this. This blog entry also has a lengthy discussion in the comments.
I came up with the following little script which works properly on Windows Server 2003 (x86 and x64 versions). Note you'll need to reboot for these changes to be complete:
Dim shl
Set shl = WScript.CreateObject("WScript.Shell")
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
' install complex character & far east support
WScript.Echo "Installing Complex Script and East Asian language support"
Dim intlConfig
Set intlConfig = fso.CreateTextFile("c:\scripts\intlunattend.txt")
intlConfig.WriteLine "[RegionalSettings]"
intlConfig.WriteLine "LanguageGroup = 7,11" ' 7 = Japanese, 11 = Thai
intlConfig.Close
shl.Run "cmd /c start /wait rundll32 shell32,Control_RunDLL intl.cpl,,/f:""c:\scripts\intlunattend.txt""", 0, True
The entry point called here will use the base Windows Setup APIs, so, it will reference these two registry keys by default:
- HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\SourcePath
- HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\ServicePackSourcePath
The correct syntax for these is to point to the parent folder containing the setup files. So, if your setup files are in C:\i386, you would set these registry keys to "C:\".
If you want to specify a custom path to the installer (let's say E:\AMD64), you should add /s:"E:\AMD64" to the command (remember to double quote in VBScript) right after the /f call:
shl.Run "cmd /c start /wait rundll32 shell32,Control_RunDLL intl.cpl,,/f:""c:\scripts\intlunattend.txt"" /s:""e:\amd64""", 0, True
You can also do all this during unattended setup. Take a look at the [RegionalSettings] section of deploy.chm if you're planning on doing this as there are some caveats and additional steps (nothing complex though). Also note that I believe all this is totally different in Vista/2008 so I don't think any of this will work in that scenario
Comments, Trackbacks, & Pingbacks
#1 re: Scripting the Installation of Supplemental Language Support
Sunday, November 16 2008 7:06 PM by Michael S. Kaplan#2 re: Scripting the Installation of Supplemental Language Support
Saturday, December 06 2008 1:26 PM by Mario RapicI have install XP SP3 on my laptpop, also driving some industrial software from ABB. Some of their programs shuts down because of checked>install files for complex script...
Their reccomendation is to uncheck these option, but in my case it is checked and hidden so I can do nothing. Any help?
#3 re: Scripting the Installation of Supplemental Language Support
Tuesday, February 10 2009 3:27 AM by SonnyHi Brian
Thanks for this article, I use it
But when copy file from i386,it prompt to confirm file replace
How can I disable tohis dialog box
Thanks
Rgds
Sonny
#4 re: Scripting the Installation of Supplemental Language Support
Friday, March 27 2009 4:17 PM by Eric BlochBrian,
This looks great. What documentation did you read to figure out how to write this script? I searched and couldn't find anything.
Thanks!
Eric
#6 re: Scripting the Installation of Supplemental Language Support
Friday, June 05 2009 1:42 PM by MichaelGreat script...I had been working on it for a couple of days now. I had a command file almost like this but didn't seem to work.
Thanks for the help.
#7 re: Scripting the Installation of Supplemental Language Support
Friday, June 26 2009 2:21 PM by bob hirWe got around Source Path issues with the following:
SP2
rundll32.exe shell32,Control_RunDLL intl.cpl,,/f:"c:\source\regopts.txt" /s:"c:\source\SP2\i386"
SP3
rundll32.exe shell32,Control_RunDLL intl.cpl,,/f:"c:\source\regopts.txt" /s:"c:\source\SP3\i386"
c:\source\SP#\I386 contains the files the install needed..
#8 re: Scripting the Installation of Supplemental Language Support
Friday, June 26 2009 2:26 PM by bob hirThe above was for "install files for complex script and right to left languages, including thai"
The regopts.txt file contained:
[RegionalSettings]
LanguageGroup = 13
#9 re: Scripting the Installation of Supplemental Language Support
Friday, June 26 2009 2:28 PM by bob hirthe I386 dir contained:
85F1255.FO_
85F1256.FO_
85F874.FO_
85S1255.FO_
85S1256.FO_
85S874.FO_
AGT0401.DL_
AGT0401.HL_
AGT040D.DL_
AGT040D.HL_
AHRONBD.TT_
ANDLSO.TT_
ANGSA.TT_
ANGSAB.TT_
ANGSAI.TT_
ANGSAU.TT_
ANGSAUB.TT_
ANGSAUI.TT_
ANGSAUZ.TT_
ANGSAZ.TT_
ARTRBDO.TT_
ARTRO.TT_
BROWA.TT_
BROWAB.TT_
BROWAI.TT_
BROWAU.TT_
BROWAUB.TT_
BROWAUI.TT_
BROWAUZ.TT_
BROWAZ.TT_
CORDIA.TT_
CORDIAB.TT_
CORDIAI.TT_
CORDIAU.TT_
CORDIAUB.TT_
CORDIAUI.TT_
CORDIAUZ.TT_
CORDIAZ.TT_
COUE1255.FO_
COUE1256.FO_
COUF1255.FO_
COUF1256.FO_
C_10004.NL_
C_10005.NL_
C_10021.NL_
C_28596.NL_
C_708.NL_
C_720.NL_
C_862.NL_
C_864.NL_
C_ISCII.DL_
DAVID.TT_
DAVIDBD.TT_
DAVIDTR.TT_
ESTRE.TT_
FRANK.TT_
FTLX041E.DL_
GAUTAMI.TT_
KARTIKA.TT_
KBDA1.DLL
KBDA2.DLL
KBDA3.DLL
KBDARME.DLL
KBDARMW.DLL
KBDDIV1.DLL
KBDDIV2.DLL
KBDFA.DLL
KBDGEO.DLL
KBDHEB.DLL
KBDINDEV.DLL
KBDINGUJ.DLL
KBDINHIN.DLL
KBDINKAN.DLL
KBDINMAR.DLL
KBDINPUN.DLL
KBDINTAM.DLL
KBDINTEL.DLL
KBDSYR1.DLL
KBDSYR2.DLL
KBDTH0.DLL
KBDTH1.DLL
KBDTH2.DLL
KBDTH3.DLL
KBDURDU.DLL
KBDUSA.DL_
KBDVNTC.DLL
LATHA.TT_
LVNM.TT_
LVNMBD.TT_
MANGAL.TT_
MRIAM.TT_
MRIAMC.TT_
MRIAMFX.TT_
MRIAMTR.TT_
MSDLG874.FO_
NOISE.TH_
NRKIS.TT_
RAAVI.TT_
ROD.TT_
RODTR.TT_
SERE1255.FO_
SERE1256.FO_
SERF1255.FO_
SERF1256.FO_
SHRUTI.TT_
SIMPBDO.TT_
SIMPFXO.TT_
SIMPO.TT_
SMAE1255.FO_
SMAE1256.FO_
SMAF1255.FO_
SMAF1256.FO_
SSEE1255.FO_
SSEE1256.FO_
SSEE874.FO_
SSEF1255.FO_
SSEF1256.FO_
SSEF874.FO_
SYLFAEN.TT_
THAWBRKR.DL_
TRADBDO.TT_
TRADO.TT_
TUNGA.TT_
UPCDB.TT_
UPCDBI.TT_
UPCDI.TT_
UPCDL.TT_
UPCEB.TT_
UPCEBI.TT_
UPCEI.TT_
UPCEL.TT_
UPCFB.TT_
UPCFBI.TT_
UPCFI.TT_
UPCFL.TT_
UPCIB.TT_
UPCIBI.TT_
UPCII.TT_
UPCIL.TT_
UPCJB.TT_
UPCJBI.TT_
UPCJI.TT_
UPCJL.TT_
UPCKB.TT_
UPCKBI.TT_
UPCKI.TT_
UPCKL.TT_
UPCLB.TT_
UPCLBI.TT_
UPCLI.TT_
UPCLL.TT_
VGAF1255.FO_
VGAF1256.FO_
VGAF874.FO_
VGAS1255.FO_
VGAS1256.FO_
VGAS874.FO_
VRINDA.TT_
#10 re: Scripting the Installation of Supplemental Language Support
Friday, June 26 2009 2:29 PM by bob hirand finally, I references the following to figure it all out..
A method for automatically performing this action is described in the following Knowledge base article:
support.microsoft.com/.../289125
It entails the use of an unattend answer file, and a built in windows command to call it.
Additional details are available in:
#11 re: Scripting the Installation of Supplemental Language Support
Monday, August 17 2009 5:10 AM by DaveHow can Far East asian language and Complex script be uninstall silently?
#12 re: Scripting the Installation of Supplemental Language Support
Monday, December 07 2009 10:05 AM by Sanjeev SatyalTo Install I need the following software
F:i386\ftlx041e.dll
Sanjeev
#13 re: Scripting the Installation of Supplemental Language Support
Monday, December 07 2009 10:06 AM by Sanjeev SatyalTo install my regional Nepali unicode I need the following software
F:i386\ftlx041e.dll
Sanjeev
#14 re: Scripting the Installation of Supplemental Language Support
Monday, January 18 2010 5:09 AM by rezaDear Brian
I use xp professional 2002. I write from riht to left farsi/pesian. I'll have to activate "install files from coplex skript..). I mark and follow the insturctions but the system cannot finde the files. what could be the problem. is there an specific folder that I have ot choose. I'll appreciate your answer.
reza
#15 re: Scripting the Installation of Supplemental Language Support
Monday, January 18 2010 5:10 AM by rezaDear Brian
I use xp professional 2002. I write from riht to left farsi/pesian. I'll have to activate "install files from coplex skript..). I mark and follow the insturctions but the system cannot finde the files. what could be the problem. is there an specific folder that I have ot choose. I'll appreciate your answer.
reza
#16 re: Scripting the Installation of Supplemental Language Support
Monday, January 18 2010 5:10 AM by rezaDear Brian
I use xp professional 2002. I write from riht to left farsi/pesian. I'll have to activate "install files from coplex skript..). I mark and follow the insturctions but the system cannot finde the files. what could be the problem. is there an specific folder that I have ot choose. I'll appreciate your answer.
reza
#17 re: Scripting the Installation of Supplemental Language Support
Monday, January 18 2010 5:11 AM by rezaDear Brian
I use window xp professional 2002. I write from riht to left farsi/pesian. I'll have to activate "install files from coplex skript..). I mark and follow the insturctions but the system cannot finde the files. what could be the problem. is there a specific folder that I have ot choose. I'll appreciate your answer.
reza
#18 re: Scripting the Installation of Supplemental Language Support
Thursday, March 04 2010 10:19 PM by jsfgeeksHi,
Nice artical. I am developing an installer, which installs East Asian Language Support (Supplement Language Support) silently. The problem is, it works fine in Win. XP (32 bit), Server 2003 etc. but not working in Win. XP (64 bit).
My script is something like below,
windirectory & "\System32\rundll32.exe shell32,Control_RunDLL intl.cpl,/s:" & Chr(34) & AppPath & "\support\x64" & Chr(34) & ",/f:" & Chr(34) & AppPath & "\support\regopts.txt" & Chr(34) & ""
Thanks,
JSF GEEKS
#19 re: Scripting the Installation of Supplemental Language Support
Saturday, April 10 2010 5:02 AM by Juan Jose PablosHi,
I use unattended with a windows XP SP2 CD, after installing the SP3 I am unable to install The Supplemental language support. I tried to uncompress the SP3, but still not able to find the requiered files. is there anywhere where I can download those files? And find a way ton install them una ttended? Thanks



For the Vista info and syntax, see: blogs.msdn.com/.../4126966.aspx You are right that it changed.