
Le but de ce programme est simple : il permet d'automatiser l'installation des MUI de Windows (packs de langue).
Il tape intégralement dans un fichier INI séparé, que l'on peut du coup faire évoluer au fil des besoins en rajoutant de nouvelles sections.
Puis un fichier de configuration ainsi que le batch à lancer pour faire l'installation silencieuse est généré : il n'y a plus qu'à le lancer et tout s'installe et se configure automatiquement (la langue installée devient la langue par défaut de Windows).
Les prérequis : avoir les packages MUI, ainsi que les fichiers attenants (MUISetup.exe, MUI.inf, MUIqfe.inf).
Pour mémoire, voilà comment l'arborescence est censée être :

Uploaded with ImageShack.us
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$liste_pays = IniReadSectionNames("c:\test.ini")
$muisetup = @WindowsDir&"\mui\muisetup.exe"
$data_liste = ""
;~ On collecte les pays présents dans le fichier INI pour remplir le menu déroulant
If @error Then
MsgBox(4096, "", "Error occurred, probably no INI file.")
Else
For $i = 2 To $liste_pays[0]
$data_liste = $data_liste &"|"& $liste_pays[$i]
Next
EndIf
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Language installation", 226, 98, 192, 124)
$Combo1 = GUICtrlCreateCombo("", 8, 32, 209, 25,BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1,$data_liste)
$Label1 = GUICtrlCreateLabel("Choose the Windows and Office language :", 8, 8, 210, 17)
$Button1 = GUICtrlCreateButton("Continue", 8, 64, 209, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
If $nMsg = $Button1 Then
Switch GUICtrlRead($Combo1)
Case GUICtrlRead($Combo1) <> ""
_generation(GUICtrlRead($Combo1))
Exit
EndSwitch
EndIf
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
;~ ----------------------------------------------------------------------------------------------------------
Func _generation($langue_combo)
$mui_path = @WindowsDir&"\mui\"
$var = IniReadSection("C:\Test.ini", $langue_combo)
If @error Then
MsgBox(4096, "", "Error occurred, probably no lines in the INI file for this language."& @CRLF &"Please install the packages manually.")
Else
For $i = 1 To $var[0][0]
If $var[$i][0] = "code_langue" Then
$langue = $var[$i][1]
EndIf
If $var[$i][0] = "code_office" Then
$office = $var[$i][1]
EndIf
If $var[$i][0] = "code_region" Then
$groupe = $var[$i][1]
EndIf
Next
EndIf
; On génère le fichier de configuration
FileOpen($mui_path&"regional.txt",1)
FileWrite($mui_path&"regional.txt","[RegionalSettings]"& @CRLF &"LanguageGroup = " & $groupe& @CRLF &"UserLocale = 0000" & $langue& @CRLF &"SystemLocale = 0000"&$langue & @CRLF &"InputLocale = "&$langue&":0000"&$langue & @CRLF)
FileWrite($mui_path&"regional.txt","MUILanguage = "&$langue& @CRLF &"UserLocale_DefaultUser = 0000"&$langue& @CRLF &"InputLocale_DefaultUser = "&$langue&":0000"&$langue& @CRLF &"MUILanguage_DefaultUser = 0000"&$langue)
FileClose($mui_path&"regional.txt")
;~ Puis le batch d'installation
FileOpen($mui_path&"langue.bat",1)
FileWrite($mui_path&"langue.bat","muisetup.exe /i " &$langue& " /d /r /s"& @CRLF &"rundll32.exe shell32,Control_RunDLL intl.cpl,,/F:""c:\windows\mui\regional.txt""")
FileClose($mui_path&"langue.bat")
EndFunc