Page 1 sur 1

[EX] Installation automatisée de packs de langue

Posté : mer. 29 déc. 2010 12:14
par GhostLine
Salut à tous ! Ci-joint mon dernier script, pour un client, mais je partage, vu comment j'ai ramé pour trouver les infos :)

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 :

Image

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

Re: [EX] Installation automatisée de packs de langue

Posté : mer. 29 déc. 2010 16:04
par SrBelial
merci pour ce partage de qualité ^___^

Re: [EX] Installation automatisée de packs de langue

Posté : jeu. 30 déc. 2010 16:01
par GhostLine
My pleasure ^_^