Files

261 lines
5.9 KiB
Plaintext

' // ***************************************************************************
' //
' // Copyright (c) Microsoft Corporation. All rights reserved.
' //
' // Microsoft Deployment Toolkit Solution Accelerator
' //
' // File: DeployWiz_Roles.vbs
' //
' // Version: 6.3.8456.1000
' //
' // Purpose: Allow the selection of roles and features.
' //
' // ***************************************************************************
Option Explicit
Dim oRoles
Function InitializeOSRoles()
Dim sPreviousOSRoles
Dim sPreviousOSRoleServices
Dim sPreviousOSFeatures
Dim iSvrMgrVal
Dim oSvrMgrXml
Dim sFoundXmlFile
Dim sServer
Dim sServerCore
Dim sVersion
Dim oStyle
Dim oResult
Dim sCurrent
Dim oNode
' Get the current list of selected roles and features
If OptionalOSRoles.value <> "" Then
sPreviousOSRoles = OptionalOSRoles.Value
ElseIf oEnvironment.Item("OptionalOSRoles") <> "" Then
sPreviousOSRoles = oEnvironment.Item("OptionalOSRoles")
Else
sPreviousOSRoles = ""
End If
If OptionalOSRoleServices.value <> "" Then
sPreviousOSRoleServices = OptionalOSRoleServices.Value
ElseIf oEnvironment.Item("OptionalOSRoleServices") <> "" Then
sPreviousOSRoleServices = oEnvironment.Item("OptionalOSRoleServices")
Else
sPreviousOSRoleServices = ""
End If
If OptionalOSFeatures.value <> "" Then
sPreviousOSFeatures = OptionalOSFeatures.Value
ElseIf oEnvironment.Item("OptionalOSFeatures") <> "" Then
sPreviousOSFeatures = oEnvironment.Item("OptionalOSFeatures")
Else
sPreviousOSFeatures = ""
End If
' Load the XML file
iSvrMgrVal = oUtility.FindFile( "ServerManager.xml" , sFoundXmlFile)
TestAndFail iSvrMgrVal, 9000, "Did not find ServerManager.xml"
On Error Resume Next
Err.Clear
Set oSvrMgrXml = oUtility.CreateXMLDOMObjectEx(sFoundXmlFile)
If Err then
' Unable to create XML object
Err.Clear
End if
On Error Goto 0
' Get the appropriate OS's role list
If oEnvironment.Item("OSVersion") <> "WinPE" and (Property("DeploymentType") = "CUSTOM" or Property("DeploymentType") = "StateRestore") then
If UCase(oEnvironment.Item("IsServerOS")) = "TRUE" then
sServer = "yes"
Else
sServer = "no"
End if
If UCase(oEnvironment.Item("IsServerCoreOS")) = "TRUE" then
sServerCore = "yes"
Else
sServerCore = "no"
End if
oUtility.GetMajorMinorVersion(oEnvironment.Item("OSCurrentVersion"))
sVersion = oUtility.VersionMajor & "." & Left(oUtility.VersionMinor,1)
Else
sServerCore = "no"
If Instr(UCase(oEnvironment.Item("ImageFlags")), "SERVER") > 0 then
sServer = "yes"
If Instr(UCase(oEnvironment.Item("ImageFlags")), "CORE") > 0 then
sServerCore = "yes"
End if
Else
sServer = "no"
End if
oUtility.GetMajorMinorVersion(oEnvironment.Item("ImageBuild"))
sVersion = oUtility.VersionMajor & "." & Left(oUtility.VersionMinor,1)
' Because XP/2003 don't have image flags, check the version and manually force server
If sVersion = "5.2" then
sServer = "yes"
End if
End if
Set oRoles = oSvrMgrXml.SelectSingleNode("//Roles[@Server='" & sServer & "' and @Core='" & sServerCore & "' and @OS='" & sVersion & "']")
If oRoles is Nothing then
Exit Function
End if
' Load the stylesheet
Set oStyle = oUtility.CreateXMLDOMObjectEx("DeployWiz_Roles.xsl")
' Format the tree
Set oResult = oUtility.CreateXMLDOMObject
oRoles.transformNodeToObject oStyle, oResult
RoleListDiv.InnerHTML = oResult.Xml
' Check the appropriate items
If sPreviousOSRoles <> "" then
For each sCurrent in Split(sPreviousOSRoles, ",")
Set oNode = document.GetElementByID("Role." & sCurrent)
If not (oNode is Nothing) then
oNode.checked = "true"
End if
Next
End if
If sPreviousOSRoleServices <> "" Then
For each sCurrent in Split(sPreviousOSRoleServices, ",")
Set oNode = document.GetElementByID("RoleService." & sCurrent)
If not (oNode is Nothing) then
oNode.checked = "true"
End if
Next
End If
If sPreviousOSFeatures <> "" Then
For each sCurrent in Split(sPreviousOSFeatures, ",")
Set oNode = document.GetElementByID("Feature." & sCurrent)
If not (oNode is Nothing) then
oNode.checked = "true"
End if
Next
End If
End Function
Function CheckRoles
Dim oElement
For each oElement in RoleListDiv.all.tags("input")
If UCase(oElement.type) = "CHECKBOX" then
If not oElement.disabled then
oElement.checked = true
End if
End if
Next
End Function
Function UncheckRoles
Dim oElement
For each oElement in RoleListDiv.all.tags("input")
If UCase(oElement.type) = "CHECKBOX" then
If not oElement.disabled then
oElement.checked = false
End if
End if
Next
End Function
Function ValidateOSRoles()
Dim sRoles
Dim sRoleServices
Dim sFeatures
Dim sName
Dim oNode
Dim oId
' Find all the selected roles
sRoles = ""
sRoleServices = ""
sFeatures = ""
For each sName in Array("Role", "RoleService", "Feature")
For each oNode in oRoles.selectNodes(".//" & sName)
Set oId = oNode.Attributes.getNamedItem("Id")
If not (oId is Nothing) then
Set oNode = document.GetElementByID(sName & "." & oId.Value)
If not (oNode is Nothing) then
If oNode.checked then
Select Case sName
Case "Role"
sRoles = sRoles & oId.Value & ","
Case "RoleService"
sRoleServices = sRoleServices & oId.Value & ","
Case "Feature"
sFeatures = sFeatures & oId.Value & ","
End Select
End if
End if
End if
Next
Next
' Save the selected roles to the hidden fields on the form (will be written automatically to the environment)
If sRoles <> "" then
OptionalOSRoles.value = Left(sRoles, Len(sRoles) - 1)
Else
OptionalOSRoles.value = ""
End if
If sRoleServices <> "" then
OptionalOSRoleServices.value = Left(sRoleServices, Len(sRoleServices) - 1)
Else
OptionalOSRoleServices.value = ""
End if
If sFeatures <> "" then
OptionalOSFeatures.value = Left(sFeatures, Len(sFeatures) - 1)
Else
OptionalOSFeatures.value = ""
End if
ValidateOSRoles = true
End Function