Blog Archive

Monday, December 21, 2009

HowTo : create a multi language Windows 7 or Windows 2008 R2 server DVD installer

HowTo : create a multi language Windows 7 or Windows 2008 R2 server DVD installer.

Preambule: what you'll need to localize an install DVD
----------


a/ An existing Windows 7 installation DVD or ISO image, x86 and/or x64, or a Windows server 2088r2 x64 installation DVD or ISO image.
b/ Download from MicroSoft Windows AIK For Win7 (Automated Installation Kit ), and install it on your PC.
c/ Windows 7 Local Packs. You can search on the forum to get them.
d/ Download Windows 7 Language pack , x86 and/or x64, or Windows Server 2008r2 x64 language pack .

For Windows 7, you can use the following adress to get the torrent file, and download only the last 2 ISO images files :

http://thepiratebay.org/torrent/5061850/Windows_7_All_Editions_MSDN_(Ult_Ent_Pro_HP_HB_Sta rter_Language

Windows 7 Language Pack (x64) - DVD (Multiple Languages)
File Name: mu_windows_7_language_pack_x64_dvd_x15-73276.iso
Date Posted (UTC): 8/6/2009 9:59:56 AM
SHA1: 5AB13E8534FA6E17DB2EDEDEAD0D219E9B99A794
ISO/CRC: 5EA0988F
Windows 7 Language Pack (x86) - DVD (Multiple Languages)
File Name: mu_windows_7_language_pack_x86_dvd_x15-73272.iso
Date Posted (UTC): 8/6/2009 9:59:56 AM
SHA1: 9A04B246F132D929CDE04B14DD07FCF5F14D2F23
ISO/CRC: 45A48C46

For Windows 2008r2 , direct from Microsoft : Windows Server 2008 R2 Multilingual User Interface Language Pack ISO

Remark: You can use this procedure to transform a DVD from xx-XX language to yy-YY , by applying it to add yy-YY and then using command "Dism /image:C:\mnt /Remove-Package ..." to remove xx-XX language.


References: Microsoft Windows MUI Knowledge Center

------------------------------------ Install Guide ---------------------------------------------------------

You'll have to replace "fr-fr" in all commands with the language you want to install.
You can add up to 34 languages at the same time to your DVD, for a total of 35, by repeating the appropriate commands in that procedure.
The size of the final DVD depends of the number of language you add, of course.


1/ Localize windows offline image: (The goal is to have multiple possibility regarding Windows 7 or Windows 2008r2 that will install on your PC.)
--------------------------------


Copy "install.wim" from install DVD/ISO "\sources" directory to a work directory on your PC. In my exemple "C:\Temp".

Create an empty mount point directory somewhere ( "md C:\mnt" ), this will be used by Dism commands.

Mount corresponding langage pack DVD/ISO in your cd drive. I mean take the DVD and put it in your DVD drive (V:\ in my exemple), or mount the ISO image file using daemon tools or similar.

Start an AIK command prompt in administrator mode. Go into your work directory ( "cd C:\temp" ) then execute the followinfg commands:

Code:
Dism /Mount-Wim /WimFile:install.wim /index:1 /MountDir:C:\mnt
Dism /image:C:\mnt /add-package /packagepath:V:\langpacks\fr-fr\lp.cab
Dism /Unmount-Wim /MountDir:C:\mnt /commit
Dism /Mount-Wim /WimFile:install.wim /index:2 /MountDir:C:\mnt
Dism /image:C:\mnt /add-package /packagepath:V:\langpacks\fr-fr\lp.cab
Dism /Unmount-Wim /MountDir:C:\mnt /commit
Dism /Mount-Wim /WimFile:install.wim /index:3 /MountDir:C:\mnt
Dism /image:C:\mnt /add-package /packagepath:V:\langpacks\fr-fr\lp.cab
Dism /Unmount-Wim /MountDir:C:\mnt /commit
.....
Execute AddPackage process for every language pack you want to add (before unmounting), and for every index in install.wim by unmounting and mounting next index.
(for example, msdn english windows 7 x86 dvd , have 5 indexes : 1=starter,2=homebasic,3=homepremium,4=professionna l,5=ultimate).

Language pack DVD used (x86 or x64) must correspond to original DVD used (from which original "install.wim" come), of course.


Windows7 Only : You can also add here Windows7 Local packs. There role is to add your installed W7 some localized themes and internet shortcuts.

There's actually LocalPacks for 20 regions, and as usual x86 and x64 versions. For each language, Msoft install in standard one or some of them. Note that these local packs are installed standard for all Windows7 editions except STARTER which come with no local pack at all.
. en-US installs contains:
x86/x64 Microsoft-Windows-LocalPack-AU-Package
x86/x64 Microsoft-Windows-LocalPack-CA-Package
x86/x64 Microsoft-Windows-LocalPack-GB-Package
x86/x64 Microsoft-Windows-LocalPack-US-Package
x86/x64 Microsoft-Windows-LocalPack-ZA-Package
. fr-FR installs contains:
x86/x64 Microsoft-Windows-LocalPack-CA-Package
x86/x64 Microsoft-Windows-LocalPack-FR-Package
. for other W7 languages, I don't have the exact list. It can be found in WAIK user's guide, or you can execute command "Dism /image:C:\mnt /get-packages" against a mounted "install.wim" from an install DVD from your country to get that list.

To install, for each wim index (except STARTER edition), add the following command(s) before unmounting:
Code:
Dism /image:C:\mnt /add-package /packagepath:Microsoft-Windows-LocalPack-FR-Package.cab
Note that in my example, I localized an English DVD to have French, so I don't had to Add_Package "CA" as it's already installed for English".



2/ localize BOOT windows installer on DVD: (The goal is to give multiple choices of dialog language during Windows 7/2008r2 BOOT installation)
------------------------------------------


Copy boot.wim from install DVD \sources directory and put Windows AIK install DVD in your cd drive ( v:\ ), or use daemon tools or equivalent to mount Windows AIK ISO image.

Then execute:

Code:
Dism /Mount-Wim /WimFile:boot.wim /index:1 /MountDir:C:\mnt
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\lp.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-scripting_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-srt_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-wds-tools_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-wmi_fr-fr.cab
Dism /Unmount-Wim /MountDir:C:\mnt /commit
... then
Code:
Dism /Mount-Wim /WimFile:boot.wim /index:2 /MountDir:C:\mnt
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\lp.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-setup_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-setup-client_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-scripting_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-srt_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-wds-tools_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-wmi_fr-fr.cab

...(see following remark)
Dism /Unmount-Wim /MountDir:C:\mnt /commit
Very important : In index 2 of "boot.wim" (Microsoft Windows Setup), before ummounting , edit file C:\mnt\sources\lang.ini . It must look like (with your language(s)) :
Code:
_________________________
[Available UI Languages]
en-US = 3
fr-FR = 2

[Fallback Languages]
en-US = en-us

_________________________
Add in lang.ini all languages added during "install.wim" AND "boot.wim" customization. Only langages defined in this file will be a selectable choice for W7 installed version.
(for example, if you want to keep setup dialog only in English, but installable W7 in en-EN and fr-FR, you have to add both to lang.ini, even if boot.wim haven't been localized in French)


All .cab file used here for localising "boot.wim" are located on the Windows AIK DVD downloaded from microsoft under directory "\WinPE_LangPacks\x86" or "\WinPE_LangPacks\amd64". You use the directory that correspond to original DVD used (from which "boot.wim" come), of course.

For Windows 2008r2 server : replace "winpe-setup-client_fr-fr.cab" with "winpe-setup-server_fr-fr.cab" for Index2.

Do package install for every language pack you want to add (before unmounting).


Nota:
Here you have the opportunity to allow the choice during install of creating or not the 100Mb boot partition.
Before unmounting index 2 of boot.wim, edit "c:\mnt\sources\WINSETUP.DLL" using an hex editor (like hexedit) :

x86 version : offset 0x77798h: replace 74 with EB
x64 version : offset 0x84AC4h: replace 74 with EB



3/ Create the ISO DVD image Directory :
---------------------------------------


Copy all your original Windows 7/2008r2 DVD in a work directory ( "C:\Temp\DVDmui\" in my exemple), and replace "boot.wim" and "install.wim" in the "C:\Temp\DVDmui\sources" directory with the ones you just created.

(1)Option 1: before moving "install.wim", you can reduce its size a little, by using these commands :

Code:
imagex /export C:\Temp\install.wim 1 C:\temp\install_reduced.wim
imagex /export C:\Temp\install.wim 2 C:\temp\install_reduced.wim
imagex /export C:\Temp\install.wim 3 C:\temp\install_reduced.wim
imagex /export C:\Temp\install.wim 4 C:\temp\install_reduced.wim
imagex /export C:\Temp\install.wim 5 C:\temp\install_reduced.wim
imagex /export C:\Temp\install.wim ............
Do one imagex command for every index and use "install_reduced.wim" after renaming it to "install.wim". This will reorganize internal structures by recreating the file from scratch.


(2)Option 2: you can customize the text that will display in the W7/W2008r2 Install popup choice during install by coding for each index in the install.WIM:
Code:
imagex /info your_install.wim #index "Name" "Description"
That will display "Name" in the choice list and "Description" at the bottom of the panel when selecting this particular choice.

example:

Code:
imagex /info DVDmui\sources\install.wim 1 "Windows7 Starter" "Windows 7 Starter 32bits edition"
imagex /info DVDmui\sources\install.wim 2 "Windows7 HomeBasic" "Windows 7 Home Basic 32bits edition"
imagex /info DVDmui\sources\install.wim 3 "Windows7 HomePremium" "Windows 7 Home Premium 32bits edition"
....
As far as I know, You can't have "name" and "description" different for each language.


(3)Option 3: at this stage, and in case you've created a x86/x64 MUI DVD, you can use the procedure that allows AIO W7 DVD to install using 32bits architecture and also repair x64 images, from DKANE and referenced here:

Windows x86 and x64 AIO, full instructions

Follow Stage 1 partially (copy x64 sources directory), and Stages 3 and 4.


4/ localize UPGRADE windows installer on DVD: (The goal is to give multiple choices of dialog language during W7/W2008r2 UPGRADE installation)
---------------------------------------------


This part have to be done manually. You need to have a DVD already in the target language. Put it in your V: DVD drive.

Then copy from this DVD all directories named "fr-FR" to the "DVDmui\" tree.
You'll have to copy :

Windows 7:
"V:\boot\fr-fr"
"V:\sources\fr-FR"
"V:\sources\dlmanifests\fr-fr"
"V:\sources\dlmanifests\microsoft-windows-iasserver-migplugin\fr-fr"
"V:\sources\dlmanifests\microsoft-windows-storagemigration\fr-fr"
"V:\sources\etwproviders\fr-fr"
"V:\sources\license\fr-fr"
"V:\sources\replacementmanifests\fr-fr"
"V:\sources\replacementmanifests\microsoft-windows-offlinefiles-core\fr-fr"
"V:\support\logging\fr-fr"
"V:\support\migwiz\fr-fr"

Windows 2008r2:
"V:\boot\fr-fr"
"V:\sources\fr-FR"
"V:\sources\dlmanifests\fr-fr"
"V:\sources\dlmanifests\microsoft-windows-storagemigration\fr-fr"
"V:\sources\etwproviders\fr-fr"
"V:\sources\license\fr-fr"
"V:\sources\replacementmanifests\fr-fr"
"V:\sources\replacementmanifests\microsoft-windows-offlinefiles-core\fr-fr"
"V:\support\adprep\fr-fr"
"V:\support\logging\fr-fr"


Note : In case you don't have the right localized DVD, you have to know that all these folders are identical on W7 and W2008r2 DVD, except "\sources\license\fr-fr\" folder, "\sources\fr-fr\readme.rtf" file, "\support\adprep\fr-fr\" folder which is specific to W2008r2 and "\support\migwiz\fr-fr\" folder which is specific to Windows7.

So you can easily use a W7 DVD to localize W2008r2 and vice-versa, by using it indifferently for most folders.

After localizing your boot.wim file (part 2 of this tuto), you can retrieve the right "\sources\license\fr-fr\" and "\sources\fr-fr\readme.rtf" inside boot.wim.

Code:
Dism /Mount-Wim /WimFile:boot.wim /index:2 /MountDir:C:\mnt
Copy /Y C:\Mnt\sources\fr-fr\readme.rtf DVDMui\sources\fr-fr
Xcopy C:\Mnt\sources\licenses\fr-fr\ DVDMui\sources\licenses\fr-fr\ /cherkiy
Dism /UnMount-Wim /MountDir:C:\mnt /discard
Finally, edit "DVDmui\sources\lang.ini" to contain:
Code:
_________________________
[Available UI Languages]
en-US = 3
fr-FR = 2

[Fallback Languages]
en-US = en-us

_________________________
That's it. Now when you'll execute "Setup.exe" from the DVD in a running Windows, you'll get the same language choice menu as when you boot from DVD.


5/ OPTIONNALLY : localize Windows Recovery Environnment: (The goal is to localize the recovery environment that you run when pressing F8 key during W7/W2008r2 boot, after install)
-------------------------------------------------------------


This recovery environment (RE) is architecture dependant, so there's one for x86 (W7) , and one for x64 (W7 and W2008r2) .
RE boot file is named WinRE.WIM, and is located inside "INSTALL.WIM" in "windows\system32\recovery" folder. Later on, after installation, this WinRE.WIM file will be located in "C:\Recovery\nnnnnnnnn" hidden folder, from where it will be executed in case you press F8 during Windows boot.

To localize it, you need first to extract it:

Code:
Dism /Mount-Wim /WimFile:DVDMui\Sources\install.wim /index:1 /MountDir:C:\mnt
Copy C:\mnt\windows\system32\recovery\WinRE.WIM C:\Temp\WinRE32.WIM
Dism /UnMount-Wim /MountDir:C:\mnt /Discard
Call it WinRE32.WIM or WinRE64.WIM depending where it comes from.

Then you localize it , in a similar way than for Boot.wim :

Put Windows AIK install DVD in your cd drive ( v:\ ), or use daemon tools or equivalent to mount Windows AIK ISO image.

Code:
Dism /Mount-Wim /WimFile:C:\Temp\WinRE32.WIM /index:1 /MountDir:C:\mnt
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\lp.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-setup_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-setup-client_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-scripting_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-srt_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-wds-tools_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\x86\fr-fr\winpe-wmi_fr-fr.cab
Dism /Unmount-Wim /MountDir:C:\mnt /commit
OR/AND:

Code:
Dism /Mount-Wim /WimFile:C:\Temp\WinRE64.WIM /index:1 /MountDir:C:\mnt
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\amd64\fr-fr\lp.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\amd64\fr-fr\winpe-setup_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\amd64\fr-fr\winpe-setup-client_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\amd64\fr-fr\winpe-scripting_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\amd64\fr-fr\winpe-srt_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\amd64\fr-fr\winpe-wds-tools_fr-fr.cab
Dism /image:C:\mnt /add-package /packagepath:V:\WinPE_LangPacks\amd64\fr-fr\winpe-wmi_fr-fr.cab
Dism /Unmount-Wim /MountDir:C:\mnt /commit
The resulting files WinRE32.WIM or WinRE64.WIM need now to be re-injected into each one of the indexes of INSTALL.WIM.

Code:
Dism /Mount-Wim /WimFile:DVDMui\Sources\install.wim /index:1 /MountDir:C:\mnt
Copy /Y C:\Temp\WinRE32.WIM C:\mnt\windows\system32\recovery\WinRE.WIM
Dism /UnMount-Wim /MountDir:C:\mnt /Commit
Dism /Mount-Wim /WimFile:DVDMui\Sources\install.wim /index:2 /MountDir:C:\mnt
Copy /Y C:\Temp\WinRE32.WIM C:\mnt\windows\system32\recovery\WinRE.WIM
Dism /UnMount-Wim /MountDir:C:\mnt /Commit

....
You can re-arrange the order of the operations, to do this job during Part 1 of my TUTO, when localizing Install.WIM.

It's important to use the exact same WinRE32.WIM or WinRE64.WIM for every indexes of your INSTALL.WIM image. If you don't (exemple: you localize each WinRE.WIM found in every index), then the resulting INSTALL.WIM will grow up about 170megs per index, as DISM will store each copy of WinRE.WIM instead of storing it only once.

Now pressing F8 key during boot will give you access to the Recovery environment in the same language than Windows, instead of English only.



6/ Finally, create the ISO image using oscdimg command :
--------------------------------------------------------


Code:
oscdimg -bC:\Temp\DVDmui\boot\etfsboot.com -lW7_MUI_DVD -t07/14/2009,11:26:40 C:\Temp\DVDmui mui_windows_7.iso -u2 -m -h -o
or
oscdimg -bC:\Temp\DVDmui\boot\etfsboot.com -lW2008R2_MUI_DVD -t07/14/2009,11:33:28 C:\Temp\DVDmui mui_windows_2008r2.iso -u2 -m -h -o

Code:
Useful commands:
----------------
Dism /image:C:\mnt /get-packages (show which package are installed in a mounted .WIM index)
Dism /image:C:\mnt /get-intl (show which language pack are installed in a mounted .WIM index)
Dism /Get-WimInfo /WimFile:install.wim /index:1 (show infos including language pack installed in an unmounted .WIM file)
Dism /Unmount-Wim /MountDir:C:\mnt /discard (unmount a .WIM file without saving updates done)
Imagex /INFO install.wim (show infos for an unmounted .WIM file. List and content of INDEXES)
Mctadmin /a FR or Mctadmin /r FR (dynamically add/remove localpack for the actual user)
...
Attached Thumbnails
Click image for larger version  Name: Windows7_install_1.JPG Views: 81 Size: 29.2 KB ID: 4217 Click image for larger version  Name: Windows7_install_2.JPG Views: 65 Size: 36.2 KB ID: 4218 Click image for larger version  Name: Windows7_install_3.JPG Views: 58 Size: 36.1 KB ID: 4219 Click image for larger version  Name: Windows7_install_4.JPG Views: 48 Size: 31.0 KB ID: 4220 Click image for larger version  Name: Windows7_install_5.JPG Views: 84 Size: 48.9 KB ID: 4221

No comments:

Post a Comment

Search This Blog

Followers