Ajout dela structure MDT dans Infra-LAB
This commit is contained in:
@@ -0,0 +1,548 @@
|
||||
' // ***************************************************************************
|
||||
' //
|
||||
' // Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
' //
|
||||
' // Microsoft Deployment Toolkit Solution Accelerator
|
||||
' //
|
||||
' // File: DeployWiz_LanguageUI.vbs
|
||||
' //
|
||||
' // Version: 6.3.8456.1000
|
||||
' //
|
||||
' // Purpose: Script methods used for the language UI (locale, timezone) pane
|
||||
' //
|
||||
' // ***************************************************************************
|
||||
|
||||
|
||||
Option Explicit
|
||||
|
||||
|
||||
dim g_oXMLLanguageList
|
||||
|
||||
Function oXMLLanguageList
|
||||
|
||||
If IsEmpty(g_oXMLLanguageList) then
|
||||
Set g_oXMLLanguageList = oUtility.LoadConfigFileSafe( "scripts\ListOfLanguages.xml" )
|
||||
End if
|
||||
Set oXMLLanguageList = g_oXMLLanguageList
|
||||
|
||||
End function
|
||||
|
||||
dim g_oPackageGroup
|
||||
|
||||
''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
function AddLanguage( LanugageToAdd )
|
||||
|
||||
Dim oLang, oOption2, sLangToAdd
|
||||
|
||||
' sLangToAdd = GetParentLanguageFromLocale(LanugageToAdd)
|
||||
sLangToAdd = LanugageToAdd
|
||||
|
||||
For each oLang in oXMLLanguageList.selectNodes("//LOCALEDATA/LOCALE[IFLAGS='1' and SNAME]")
|
||||
|
||||
If ucase(oUtility.SelectSingleNodeString(oLang,"SNAME")) = ucase(LanugageToAdd) then
|
||||
Set oOption2 = document.createElement("OPTION")
|
||||
oOption2.Text = oUtility.SelectSingleNodeString(oLang,"SENGDISPLAYNAME")
|
||||
If not oLang.SelectSingleNode("SNAME") is nothing then
|
||||
oOption2.Value = lcase(oUtility.SelectSingleNodeString(oLang,"SNAME"))
|
||||
UILanguage.add oOption2
|
||||
End if
|
||||
|
||||
Exit for
|
||||
End if
|
||||
|
||||
Next
|
||||
|
||||
End function
|
||||
|
||||
|
||||
Function Locale_Initialization
|
||||
|
||||
Dim oItem
|
||||
Dim oXMLPackageList
|
||||
Dim FoundLocale
|
||||
Dim AllreadyAddedLanguages
|
||||
Dim aLangPack
|
||||
Dim oOption2
|
||||
Dim thisLocale
|
||||
|
||||
' g_sPackageDialogBox = ""
|
||||
|
||||
oLogging.CreateEntry "###### Locale_Initialization ###### " , LogTypeInfo
|
||||
|
||||
|
||||
' Disable fields as appropriate
|
||||
|
||||
If UCase(oEnvironment.item("SkipLocaleSelection")) = "YES" then
|
||||
UILanguage.Disabled = true
|
||||
UserLocale_Edit.Disabled = true
|
||||
KeyboardLocale_Edit.Disabled = true
|
||||
ElseIf Left(oEnvironment.Item("ImageBuild"), 1) = "5" then
|
||||
UILanguage.Disabled = true
|
||||
End if
|
||||
|
||||
|
||||
' Add a Language for each package selected
|
||||
|
||||
set oXMLPackageList = new ConfigFile
|
||||
oXMLPackageList.sFileType = "Packages"
|
||||
|
||||
|
||||
If IsInstallationUltimateEnterprise then
|
||||
|
||||
' Add langauges allready installed on the image.
|
||||
AllreadyAddedLanguages = ""
|
||||
For each oItem in oEnvironment.ListItem("ImageLanguage").Keys
|
||||
If oItem <> "" then
|
||||
AddLanguage oItem
|
||||
AllreadyAddedLanguages = AllreadyAddedLanguages & vbTab & oItem
|
||||
End if
|
||||
Next
|
||||
|
||||
End if
|
||||
|
||||
aLangPack = property("LanguagePacks")
|
||||
If not isArray(aLangPack) then
|
||||
' Force LanguagePacks variable as an array for non Ultimate/Enterprise builds.
|
||||
aLangPack = array(aLangPack)
|
||||
oProperties.Item("LanguagePacks") = aLangPack
|
||||
End if
|
||||
|
||||
For each oItem in aLangPack
|
||||
|
||||
FoundLocale = ""
|
||||
If oItem = "DEFAULT" then
|
||||
' Skip...
|
||||
ElseIf not oXMLPackageList is nothing then
|
||||
|
||||
If oXMLPackageList.FindAllItems.Exists(oItem) then
|
||||
FoundLocale = oUtility.SelectSingleNodeString(oXMLPackageList.FindAllItems.Item(oItem),"./Language")
|
||||
End if
|
||||
|
||||
End if
|
||||
|
||||
If FoundLocale <> "" and Instr(1,AllreadyAddedLanguages, FoundLocale, vbTextCompare ) = 0 then
|
||||
AddLanguage FoundLocale
|
||||
AllreadyAddedLanguages = AllreadyAddedLanguages & vbTab & FoundLocale
|
||||
End if
|
||||
|
||||
Next
|
||||
|
||||
If AllreadyAddedLanguages = "" then
|
||||
|
||||
For each oItem in oEnvironment.ListItem("ImageLanguage").Keys
|
||||
If oItem <> "" then
|
||||
AddLanguage oItem
|
||||
AllreadyAddedLanguages = AllreadyAddedLanguages & vbTab & oItem
|
||||
End if
|
||||
Next
|
||||
|
||||
End if
|
||||
|
||||
ForceLCase "UILanguage"
|
||||
ForceLCase "UserLocale"
|
||||
ForceLCase "KeyboardLocale"
|
||||
|
||||
oLogging.CreateEntry "Languages Displayed: " & AllreadyAddedLanguages , LogTypeInfo
|
||||
oLogging.CreateEntry "UILanguage: " & property("UILanguage") , LogTypeVerbose
|
||||
|
||||
' Populate the Locale
|
||||
For each oItem in oXMLLanguageList.selectNodes("//LOCALEDATA/LOCALE[IFLAGS='1']")
|
||||
|
||||
Set oOption2 = document.createElement("OPTION")
|
||||
oOption2.Text = oUtility.SelectSingleNodeString(oItem,"SENGDISPLAYNAME")
|
||||
|
||||
oOption2.Value = lcase(oUtility.SelectSingleNodeString(oItem,"./SNAME") & ";" & oUtility.SelectSingleNodeString(oItem,"ILANGUAGE"))
|
||||
UserLocale_Edit.add oOption2
|
||||
Next
|
||||
|
||||
PopulateElements
|
||||
|
||||
' Get default Language and populate
|
||||
If UILanguage.Value <> "" then
|
||||
thisLocale = UILanguage.Value
|
||||
|
||||
Elseif Property("UILanguage") <> "" then
|
||||
thisLocale = Property("UILanguage")
|
||||
|
||||
ElseIf oEnvironment.Item("ImageLanguage001") <> "" then
|
||||
thisLocale = oEnvironment.Item("ImageLanguage001")
|
||||
|
||||
Else
|
||||
thisLocale = GetDefaultInstallationLocaleString
|
||||
|
||||
End if
|
||||
If IsEmpty(thisLocale) then
|
||||
thisLocale = "en-US" ' WinPE *may* not have the locale defined
|
||||
End if
|
||||
|
||||
|
||||
SetNewLanguageEx thisLocale
|
||||
SetNewLocaleEx thisLocale
|
||||
|
||||
End function
|
||||
|
||||
Function ForceLCase( sPropertyName )
|
||||
If Property(sPropertyName) <> lcase(Property(sPropertyName)) then
|
||||
If oProperties.Exists(sPropertyName) then
|
||||
oProperties.Item(sPropertyName) = lcase(oProperties.Item(sPropertyName))
|
||||
Else
|
||||
oProperties.Add sPropertyName, lcase(Property(sPropertyName))
|
||||
End if
|
||||
|
||||
End if
|
||||
|
||||
End function
|
||||
|
||||
Function SetNewLanguage
|
||||
If oProperties.exists("UserLocale") then
|
||||
oProperties.remove "UserLocale"
|
||||
End if
|
||||
SetNewLanguageEx UILanguage.Value
|
||||
SetNewLocale
|
||||
End Function
|
||||
|
||||
|
||||
Function SetNewLocale
|
||||
If instr(1,UserLocale_Edit.Value,";",vbTextCompare) <> 0 then
|
||||
If oProperties.exists("KeyboardLocale") then
|
||||
oProperties.remove "KeyboardLocale"
|
||||
End if
|
||||
SetNewLocaleEx mid(UserLocale_Edit.Value,1,instr(1,UserLocale_Edit.Value,";",vbTextCompare) - 1)
|
||||
End if
|
||||
End Function
|
||||
|
||||
Function SetNewLanguageEx( thisLocale )
|
||||
Dim LCID
|
||||
|
||||
oLogging.CreateEntry "SetNewLanguageEx " & thisLocale, LogTypeVerbose
|
||||
|
||||
' Get the default UserLocale
|
||||
If Property("UserLocale") <> "" then
|
||||
UserLocale_Edit.Value = lcase(Property("UserLocale") & ";" & GetLCIDFromSName( Property("UserLocale") ))
|
||||
ElseIf instr(1,Property("KeyboardLocale"),":",vbTextCompare) <> 0 and len(trim(Property("KeyboardLocale"))) = len("0000:12345678") then
|
||||
LCID = left(Property("KeyboardLocale"),instr(1,Property("KeyboardLocale"),":",vbTextCompare)-1)
|
||||
UserLocale_Edit.Value = lcase(GetSNameFromLCID(LCID) & ";" & LCID)
|
||||
Else
|
||||
UserLocale_Edit.Value = lcase(thisLocale & ";" & GetLCIDFromSName( thisLocale ))
|
||||
End if
|
||||
|
||||
oLogging.CreateEntry "UserLocale : " & Property("UserLocale") & " - " & UserLocale_Edit.Value, LogTypeVerbose
|
||||
|
||||
If Property("ImageLanguage001") = "" then
|
||||
oProperties.Add "ImageLanguage001", thisLocale
|
||||
End if
|
||||
|
||||
|
||||
End function
|
||||
|
||||
|
||||
Function SetNewLocaleEx (thisLocale)
|
||||
Dim sKeyboard
|
||||
Dim sItem
|
||||
Dim sNew
|
||||
oLogging.CreateEntry "SetNewLocaleEx " & thisLocale & " - " & Property("KeyboardLocale"), LogTypeVerbose
|
||||
|
||||
' Set the default Keyboard
|
||||
|
||||
sNew = ""
|
||||
If Property("KeyboardLocale") <> "" then
|
||||
sKeyboard = Property("KeyboardLocale")
|
||||
If instr(1,sKeyboard,";",vbTExtCompare) <> 0 then
|
||||
' Use the 1st instance of a ; delimited array that contains a :
|
||||
for each sItem in split(sKeyboard,";")
|
||||
If instr(1,sItem,":",vbTextCompare) <> 0 then
|
||||
sKeyboard = trim(sItem)
|
||||
exit for
|
||||
End if
|
||||
next
|
||||
If isempty(sKeyboard) then
|
||||
sKeyboard = trim(left(sKeyboard,instr(1,sKeyboard,";",vbTExtCompare)-1))
|
||||
End if
|
||||
End if
|
||||
If instr(1,sKeyboard,":",vbTextCompare) <> 0 and len(sKeyboard) = len("0000:12345678") then
|
||||
' KeyboardLocale appears to be in the format 0409:00000409 format
|
||||
sNew = mid(sKeyboard,instr(1,sKeyboard,":",vbTextCompare)+1)
|
||||
ElseIf instr(1,sKeyboard,"-",vbTextCompare) <> 0 Then
|
||||
sNew = right("00000000" & GetLCIDFromSName(sKeyboard),8)
|
||||
End if
|
||||
End if
|
||||
|
||||
If sNew = "" Then
|
||||
sNew = right("00000000" & GetKeyboardFromSName(thisLocale),8)
|
||||
End if
|
||||
|
||||
KeyboardLocale_Edit.Value = lcase(sNew)
|
||||
|
||||
If KeyboardLocale_Edit.Value = "" then
|
||||
KeyboardLocale_Edit.Value = "00000409"
|
||||
End if
|
||||
|
||||
oLogging.CreateEntry "KeyboardLocale: " & Property("KeyboardLocale") & " - " & KeyboardLocale_Edit.Value & " - " & sNew, LogTypeVerbose
|
||||
|
||||
End function
|
||||
|
||||
|
||||
''''''''''''''''''''''''''''''''
|
||||
|
||||
Function GetDefaultInstallationLocaleString
|
||||
|
||||
Dim oItem
|
||||
|
||||
|
||||
' First see if a UserLocal value was specified
|
||||
|
||||
If Property("UserLocale") <> "" then
|
||||
|
||||
Set oItem = oXMLLanguageList.SelectSingleNode("//LOCALEDATA/LOCALE[@ID = '" & lcase(Property("UserLocale")) & "']/SNAME")
|
||||
|
||||
If not oItem is nothing then
|
||||
GetDefaultInstallationLocaleString = oItem.Text
|
||||
Exit Function
|
||||
End if
|
||||
|
||||
End if
|
||||
|
||||
|
||||
' No, so get the default locale
|
||||
|
||||
Set oItem = oXMLLanguageList.SelectSingleNode("//LOCALEDATA/LOCALE[@ID = '" & lcase(right("0000" & hex(GetLocale),4)) & "']/SNAME")
|
||||
|
||||
If not oItem is nothing then
|
||||
GetDefaultInstallationLocaleString = oItem.Text
|
||||
End if
|
||||
|
||||
|
||||
End function
|
||||
|
||||
|
||||
Function GetDefaultInstallationLanguageString
|
||||
|
||||
GetDefaultInstallationLanguageString = GetParentLanguageFromLocale(GetDefaultInstallationLocaleString)
|
||||
|
||||
End function
|
||||
|
||||
|
||||
Function GetParentLanguageFromLocale( Locale)
|
||||
Dim oLocale
|
||||
|
||||
For each oLocale in oXMLLanguageList.selectNodes("//LOCALEDATA/LOCALE/SNAME")
|
||||
|
||||
If UCase(Locale) = UCase(oLocale.text) then
|
||||
GetParentLanguageFromLocale = oUtility.SelectSingleNodeString(oLocale.ParentNode,"SISO639LANGNAME")
|
||||
Exit for
|
||||
End if
|
||||
|
||||
Next
|
||||
|
||||
End function
|
||||
|
||||
Function GetSNameFromLCID ( LCID )
|
||||
|
||||
GetSNameFromLCID = oUtility.SelectSingleNodeString(oXMLLanguageList,"/LOCALEDATA/LOCALE[@ID='" & lcase(LCID) & "']/SNAME")
|
||||
|
||||
End function
|
||||
|
||||
Function GetKeyboardFromSName ( sName )
|
||||
|
||||
Dim oLocale
|
||||
|
||||
For each oLocale in oXMLLanguageList.selectNodes("//LOCALEDATA/LOCALE/SNAME")
|
||||
|
||||
If UCase(sName) = UCase(oLocale.text) then
|
||||
GetKeyboardFromSName = oUtility.SelectSingleNodeString(oLocale.ParentNode,"DEFAULTKEYBOARD")
|
||||
Exit for
|
||||
End if
|
||||
|
||||
Next
|
||||
|
||||
End Function
|
||||
|
||||
Function GetLCIDFromSName ( sName )
|
||||
|
||||
Dim oLocale
|
||||
|
||||
For each oLocale in oXMLLanguageList.selectNodes("//LOCALEDATA/LOCALE/SNAME")
|
||||
|
||||
If UCase(sName) = UCase(oLocale.text) then
|
||||
GetLCIDFromSName = oUtility.SelectSingleNodeString(oLocale.ParentNode,"ILANGUAGE")
|
||||
Exit for
|
||||
End if
|
||||
|
||||
Next
|
||||
|
||||
End Function
|
||||
|
||||
''''''''''''''''''''''''''''''''
|
||||
|
||||
Function IsInstallationUltimateEnterprise
|
||||
|
||||
IsInstallationUltimateEnterprise = oUtility.IsHighEndSKUEx( oEnvironment.Item("ImageFlags") )
|
||||
|
||||
End function
|
||||
|
||||
|
||||
|
||||
'''''''''''''''''''''''''''''''''''''
|
||||
' Validate LanguagePack
|
||||
'
|
||||
|
||||
''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
Function Locale_Validation
|
||||
|
||||
Dim iSplit
|
||||
|
||||
Locale_Validation = TRUE
|
||||
|
||||
If not UILanguage.Disabled then
|
||||
UILanguage_err.style.display = "none"
|
||||
If UILanguage.SelectedIndex = -1 then
|
||||
UILanguage_Err.style.display = "inline"
|
||||
Locale_Validation = FALSE
|
||||
End if
|
||||
End if
|
||||
|
||||
If not UserLocale_Edit.Disabled then
|
||||
UserLocale_Err.style.display = "none"
|
||||
If UserLocale_Edit.SelectedIndex = -1 then
|
||||
UserLocale_Err.style.display = "inline"
|
||||
Locale_Validation = FALSE
|
||||
End if
|
||||
End if
|
||||
|
||||
If not KeyboardLocale_Edit.Disabled then
|
||||
KeyboardLocale_Err.style.display = "none"
|
||||
If KeyboardLocale_Edit.SelectedIndex = -1 then
|
||||
KeyboardLocale_Err.style.display = "inline"
|
||||
Locale_Validation = FALSE
|
||||
End if
|
||||
End if
|
||||
|
||||
If not Locale_Validation then
|
||||
Exit Function
|
||||
End if
|
||||
|
||||
iSplit = instr(1,UserLocale_Edit.Value,";",vbTextCompare)
|
||||
TestAndLog iSplit <> 0 , "Verify UserLocale_Edit contains Comma Delimiter: " & UserLocale_Edit.Value
|
||||
|
||||
If instr(1,UserLocale_Edit.Value,";",vbTextCompare) <> 0 then
|
||||
' Take the LCID From UserLocale and add it to the KeyboardLocale
|
||||
KeyboardLocale.Value = UserLocale_Edit.Value & ":" & KeyboardLocale_Edit.Value
|
||||
Else
|
||||
' Some kind of Error
|
||||
KeyboardLocale.Value = right("0000" & hex(GetLocale),4) & ":" & KeyboardLocale_Edit.Value
|
||||
End if
|
||||
|
||||
If iSplit <> 0 then
|
||||
UserLocale.Value = mid(UserLocale_Edit.Value,1,instr(1,UserLocale_Edit.Value,";",vbTextCompare) - 1)
|
||||
Else
|
||||
UserLocale.Value = UserLocale_Edit.Value
|
||||
End if
|
||||
|
||||
End function
|
||||
|
||||
|
||||
|
||||
'''''''''''''''''''''''''''''''''''''
|
||||
' Timezone functions
|
||||
'
|
||||
'''''''''''''''''''''''''''''''''''''
|
||||
|
||||
Function SetTimeZoneValue
|
||||
' When the user selects a value in the TimeZoneList we must populate the hidden Text Values
|
||||
TimeZoneName.Value = TimeZoneList.value
|
||||
|
||||
End function
|
||||
|
||||
|
||||
Function TimeZone_Initialization
|
||||
|
||||
Dim TimeZone, i, TimeSplit, Item, test
|
||||
|
||||
' Disable fields as appropriate
|
||||
|
||||
If UCase(oEnvironment.item("SkipTimeZone")) = "YES" then
|
||||
TimeZoneList.Disabled = true
|
||||
End if
|
||||
|
||||
|
||||
' If TimeZone Property is set, then select the coresponding list item.
|
||||
|
||||
If Property("TimeZoneName") <> "" then
|
||||
For i = 0 to TimeZoneList.Options.Length - 1
|
||||
If UCase(Property("TimeZoneName")) = UCase(TimeZoneList.Options(i).value) then
|
||||
TimeZoneList.SelectedIndex = i
|
||||
TimeZoneName.Value = TimeZoneList.Options(i).value
|
||||
Exit function
|
||||
End if
|
||||
Next
|
||||
End if
|
||||
|
||||
|
||||
' Extract out the current TimeZone
|
||||
|
||||
For each TimeZone in objWMI.InstancesOf("Win32_TimeZone")
|
||||
Exit for ' Take the first entry and break out of loop
|
||||
Next
|
||||
|
||||
If IsEmpty(TimeZone) then
|
||||
Exit function
|
||||
End if
|
||||
|
||||
|
||||
'Try to match the timezone against the current Timezone Name
|
||||
|
||||
For i = 0 to TimeZoneList.Options.Length - 1
|
||||
|
||||
If UCase(TimeZoneList.Options(i).Text) = UCase(TimeZone.Description) then
|
||||
TimeZoneList.SelectedIndex = i
|
||||
TimeZoneName.Value = TimeZoneList.Options(i).value
|
||||
Exit function
|
||||
End if
|
||||
|
||||
' See if there is a match in the alternate description or other Values
|
||||
For each test in array(TimeZone.Description,TimeZone.StandardName)
|
||||
If test <> "" then
|
||||
If UCase(test) = UCase(TimeZoneList.Options(i).value) then
|
||||
TimeZoneList.SelectedIndex = i
|
||||
TimeZoneName.Value = TimeZoneList.Options(i).value
|
||||
Exit function
|
||||
End if
|
||||
End if
|
||||
Next
|
||||
Next
|
||||
|
||||
|
||||
' Try to match against the closest GMT value (This *May* select an entry that is not *exact*)
|
||||
|
||||
For i = 0 to TimeZoneList.Options.Length - 1
|
||||
|
||||
test = Instr(1, TimeZone.Description," ")
|
||||
If test <> 0 then
|
||||
|
||||
If left(TimeZone.Description, test) = left(TimeZoneList.Options(i).Text, test) then
|
||||
TimeZoneList.SelectedIndex = i
|
||||
TimeZoneName.Value = TimeZoneList.Options(i).value
|
||||
Exit function
|
||||
End if
|
||||
|
||||
End if
|
||||
Next
|
||||
|
||||
End function
|
||||
|
||||
|
||||
Function TimeZone_Validation
|
||||
|
||||
' Return true if disabled or if a value has been specified
|
||||
|
||||
If UCase(oEnvironment.item("SkipTimeZone")) = "YES" then
|
||||
TimeZone_Validation = True
|
||||
Elseif TimeZoneName.Value <> "" then
|
||||
TimeZone_Validation = True
|
||||
Else
|
||||
TimeZone_Validation = False
|
||||
End if
|
||||
|
||||
End function
|
||||
Reference in New Issue
Block a user