231 lines
7.4 KiB
Plaintext
231 lines
7.4 KiB
Plaintext
' // ***************************************************************************
|
|
' //
|
|
' // Copyright (c) Microsoft Corporation. All rights reserved.
|
|
' //
|
|
' // Microsoft Deployment Toolkit Solution Accelerator
|
|
' //
|
|
' // File: DeployWiz_LanguagePack.vbs
|
|
' //
|
|
' // Version: 6.3.8456.1000
|
|
' //
|
|
' // Purpose: Wizard pane for choosing one or more language packs for install
|
|
' //
|
|
' // ***************************************************************************
|
|
|
|
|
|
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 MarkupName(LocaleName)
|
|
|
|
Dim oLang, width
|
|
|
|
width = 99
|
|
For each oLang in oXMLLanguageList.selectNodes("//LOCALEDATA/LOCALE/SISO639LANGNAME")
|
|
If Instr(1,LocaleName,oLang.Text & "-", vbTextCompare) = 1 and len(oLang.Text) < width then
|
|
|
|
width = len(oLang.Text)
|
|
MarkupName = unescape(replace(oUtility.SelectSingleNodeString(oLang.ParentNode,"SENGLANGUAGE"),"\x","%u")) & " (" & _
|
|
LocaleName & ")"
|
|
|
|
End if
|
|
Next
|
|
|
|
End Function
|
|
|
|
|
|
Function ConstructLPQuery ( isLangPack )
|
|
Dim Keyword
|
|
Dim isServer
|
|
Dim ImgBuild
|
|
Dim SPVersion
|
|
Dim LPQuery
|
|
Dim LPVersion
|
|
Dim i
|
|
|
|
isServer = inStr(1,oEnvironment.Item("ImageFlags"),"SERVER",vbTextCompare) <> 0
|
|
ImgBuild = oEnvironment.Item("ImageBuild")
|
|
|
|
If isServer then
|
|
LPQuery = "PackageType = 'LanguagePack' and ( ProductName = 'Microsoft-Windows-Server-LanguagePack-Package' or ProductName = 'Microsoft-Windows-Server-Refresh-LanguagePack-Package' or ProductName = 'Microsoft.LanguageExperiencePack')"
|
|
Else
|
|
LPQuery = "PackageType = 'LanguagePack' and ( ProductName = 'Microsoft-Windows-Client-LanguagePack-Package' or ProductName = 'Microsoft-Windows-Client-Refresh-LanguagePack-Package' or ProductName = 'Microsoft.LanguageExperiencePack')"
|
|
End if
|
|
|
|
If not isLangPack then
|
|
LPQuery = "PackageType != 'LanguagePack' and (substring(ProductVersion,1,8) = '" & left(ImgBuild,8) & "' or ProductVersion = '') "
|
|
ElseIf isServer and left(ImgBuild,4) = "6.0." then
|
|
' All Windows Server 2008 Language Packs use Product Version 6.0.6001.18000
|
|
LPQuery = LPQuery & " and substring(ProductVersion,1,8) = '6.0.6001' "
|
|
ElseIf left(ImgBuild,4) = "6.0." then
|
|
' All Windows Vista Language Packs use Product Version 6.0.6000.16386
|
|
LPQuery = LPQuery & " and substring(ProductVersion,1,8) = '6.0.6000' "
|
|
Else
|
|
LPQuery = LPQuery & " and substring(ProductVersion,1,7) = '" & left(ImgBuild,7) & "' and substring(ProductVersion,5,4) >= '" & mid(ImgBuild,5,4) & "'"
|
|
End if
|
|
|
|
If not isLangPack then
|
|
' Nothing
|
|
ElseIf left(ImgBuild,4) = "6.0." then
|
|
LPVersion = Mid(ImgBuild,8,1)
|
|
If IsNumeric(LPVersion) and LPVersion > 0 then
|
|
' Exclude all Language Packs that are less than the Current OS.
|
|
LPQuery = LPQuery & " and Keyword != 'Language Pack'"
|
|
For i = 2 to LPVersion
|
|
LPQuery = LPQuery & " and Keyword != 'SP" & (LPVersion - 1) & " Language Pack'"
|
|
Next
|
|
End if
|
|
End if
|
|
|
|
If UCase(oEnvironment.Item("ImageProcessor")) = "X64" then
|
|
LPQuery = "//packages/package[(ProcessorArchitecture = 'amd64' or ProcessorArchitecture = 'neutral') and " & LPQuery & "]"
|
|
Else
|
|
LPQuery = "//packages/package[(ProcessorArchitecture = 'x86' or ProcessorArchitecture = 'neutral') and " & LPQuery & "]"
|
|
End if
|
|
|
|
oLogging.CreateEntry vbTab & "QUERY: " & LPQuery, LogTypeInfo
|
|
ConstructLPQuery = LPQuery
|
|
|
|
End function
|
|
|
|
Dim g_oXMLPackageList
|
|
Dim g_sPackageDialogBox
|
|
|
|
Function CanDisplayPackageDialogBox
|
|
|
|
Dim dXMLCollection
|
|
Dim LocalLanguage
|
|
Dim oItem
|
|
Dim sInputType
|
|
Dim sDone
|
|
Dim oNewItem
|
|
Dim sToAdd
|
|
|
|
' Load and cache the application list
|
|
|
|
If IsEmpty(g_oXMLPackageList) then
|
|
|
|
Set g_oXMLPackageList = new ConfigFile
|
|
g_oXMLPackageList.sFileType = "Packages"
|
|
|
|
End if
|
|
|
|
|
|
' Get the list of language packs
|
|
|
|
g_oXMLPackageList.sSelectionProfile = oEnvironment.Item("WizardSelectionProfile")
|
|
g_oXMLPackageList.sCustomSelectionProfile = oEnvironment.Item("CustomWizardSelectionProfile")
|
|
Set g_oXMLPackageList.fnCustomFilter = GetRef("CustomPackageFilter")
|
|
Set dXMLCollection = g_oXMLPackageList.FindItemsEx(ConstructLPQuery(TRUE))
|
|
|
|
If dXMLCollection.count = 0 then
|
|
CanDisplayPackageDialogBox = False
|
|
Exit Function
|
|
End if
|
|
|
|
CanDisplayPackageDialogBox = TRUE
|
|
oLogging.CreateEntry "CanDisplayPackageDialogBox = TRUE", LogTypeVerbose
|
|
|
|
|
|
' Ultimate and Enterprise SKU's allow for more than one Language Pack to be installed at a time.
|
|
|
|
If IsInstallationUltimateEnterprise Then
|
|
g_sPackageDialogBox = g_oXMLPackageList.GetHTMLEx( "CheckBox", "LanguagePacks" )
|
|
Else
|
|
' Convert property LanguagePacks back into a non-array if it's an array.
|
|
If isArray(property("LanguagePacks")) then
|
|
oProperties.Item("LanguagePacks") = property("LanguagePacks")(0)
|
|
End if
|
|
|
|
g_sPackageDialogBox = g_oXMLPackageList.GetHTMLEx( "Radio", "LanguagePacks" )
|
|
End if
|
|
|
|
|
|
' Ensure that the default Language Pack has been added to the list.
|
|
|
|
for each oItem in oEnvironment.ListItem("ImageLanguage").Keys
|
|
g_sPackageDialogBox = "</label> <b>(Already installed in OS)</b></div>" & vbNewLine & g_sPackageDialogBox
|
|
g_sPackageDialogBox = "<img src='ItemIcon1.png' /><label for='DefaultLP' class=TreeItem>" & MarkupName(oItem) & g_sPackageDialogBox
|
|
If IsInstallationUltimateEnterprise Then
|
|
g_sPackageDialogBox = "<input name=LanguagePacks type=checkbox id='DefaultLP' value='DEFAULT' checked disabled />" & g_sPackageDialogBox
|
|
ElseIf property("LanguagePacks") <> "" then
|
|
g_sPackageDialogBox = "<input name=LanguagePacks type=Radio id='DefaultLP' value='DEFAULT' />" & g_sPackageDialogBox
|
|
Else
|
|
g_sPackageDialogBox = "<input name=LanguagePacks type=Radio id='DefaultLP' value='DEFAULT' checked />" & g_sPackageDialogBox
|
|
End if
|
|
g_sPackageDialogBox = "<div onmouseover=""javascript:this.className = 'DynamicListBoxRow-over';"" onmouseout=""javascript:this.className = 'DynamicListBoxRow';"" >" & g_sPackageDialogBox
|
|
next
|
|
|
|
End function
|
|
|
|
Dim g_LastTaskSequence
|
|
|
|
Function LanguagePack_Initialization
|
|
|
|
If g_sPackageDialogBox = "" then
|
|
g_LastTaskSequence = oEnvironment.Item("TaskSequenceID")
|
|
CanDisplayPackageDialogBox
|
|
|
|
ElseIf oEnvironment.Item("TaskSequenceID") <> "" and g_LastTaskSequence <> oEnvironment.Item("TaskSequenceID") then
|
|
oLogging.CreateEntry "The TaskSequenceID has changed, Refresh the cache.", LogTypeInfo
|
|
g_LastTaskSequence = oEnvironment.Item("TaskSequenceID")
|
|
g_oXMLPackageList = empty
|
|
CanDisplayPackageDialogBox
|
|
|
|
End if
|
|
|
|
PackagesListBox.InnerHTML = g_sPackageDialogBox
|
|
PopulateElements
|
|
|
|
End function
|
|
|
|
Function CustomPackageFilter( sGuid, oItem )
|
|
|
|
Dim oLang
|
|
Dim bMatch
|
|
|
|
' Check the languages that are installed and remove
|
|
' them from the list of languages to be installed.
|
|
' These languages will then be added to the list later with
|
|
' the text -(Already installed in OS)
|
|
|
|
for each oLang in oEnvironment.ListItem("ImageLanguage").Keys
|
|
If oItem.SelectSingleNode("./Language").text = oLang then
|
|
bMatch = TRUE
|
|
Exit For
|
|
End if
|
|
next
|
|
|
|
If bMatch then
|
|
CustomPackageFilter = false
|
|
Else
|
|
CustomPackageFilter = True
|
|
oItem.SelectSingleNode("./Name").Text = MarkupName (oUtility.SelectSingleNodeString(oItem,"./Language"))
|
|
End if
|
|
|
|
End function
|
|
|
|
|
|
Function IsInstallationUltimateEnterprise
|
|
|
|
IsInstallationUltimateEnterprise = oUtility.IsHighEndSKUEx( oEnvironment.Item("ImageFlags") )
|
|
|
|
End function
|
|
|