Scripting the Installation of Supplemental Language Support

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-DC02

Description:
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
NOTE:On Windows Server 2003 x64, you need to have access to the AMD64 and i386 folders in order for this to work. I spent a bunch of time running in circles on this.

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

Posted Sunday, November 16 2008 2:45 PM by Brian Desmond | 19 Comments
Tagged as: , ,

Comments, Trackbacks, & Pingbacks

#1 re: Scripting the Installation of Supplemental Language Support

Sunday, November 16 2008 7:06 PM by Michael S. Kaplan

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

#2 re: Scripting the Installation of Supplemental Language Support

Saturday, December 06 2008 1:26 PM by Mario Rapic

I 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 Sonny

Hi 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 Bloch

Brian,

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

#5 re: Scripting the Installation of Supplemental Language Support

Friday, March 27 2009 9:03 PM by Brian Desmond

This was a bunch of Googling and experimenting to figure this out.

#6 re: Scripting the Installation of Supplemental Language Support

Friday, June 05 2009 1:42 PM by Michael

Great 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 hir

We 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 hir

The 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 hir

the 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 hir

and 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:

blogs.msdn.com/.../529867.aspx

blogs.msdn.com/.../3288145.aspx

#11 re: Scripting the Installation of Supplemental Language Support

Monday, August 17 2009 5:10 AM by Dave

How 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 Satyal

To 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 Satyal

To 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 reza

Dear 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 reza

Dear 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 reza

Dear 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 reza

Dear 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 jsfgeeks

Hi,

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 Pablos

Hi,

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

Leave a comment