261 lines
5.9 KiB
Plaintext
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
|