Edition du fichier DeployWiz_Initialization.vbs 

Il y a quelques temps, je vous faisais part de la sortie du Wizard Editor sur CodePlex. Voici un exemple de personnalisation du Wizard avec cet outil.

l'idée est d'ajouter un panneau vous permettant de positionner une variable "ROOM" que l'on choisirait dans une liste déroulante. de plus, l'idée est de maintenir le contenu de cette liste déroulante dans un fichier XML sur le distribution share. voici le résultat attendu

clip_image001

Pour arriver à ce résultat voici les étapes :

  1. Edition du fichier DeployWiz_Definition_ENU.xml
  2. Edition du fichier DeployWiz_Initialization.vbs
  3. Edition du fichier DeployWiz_Validation.vbs
  4. Création du fichier ROOMS.xml
  5. Déclaration la variable ROOM dans le customsettings.ini
Edition du fichier DeployWiz_Definition_ENU.xml

pour cela je vais utiliser le wizard Editor de Michael Niehaus de la manière suivante :

image

j'ouvre le fichier puis dans la partie gauche, je clique sur "add" pour ajouter un écran appelé "ROOMS", puis dans la partie droite, je clique sur add pour ajouter 3 clauses :

  • condition
  • initialization
  • validation

clip_image001[5]

puis pour chacune des clauses j'entre les détails suivants

Clause Détails
condition UCASE(Property("SkipROOMS"))<>"YES"
initialization InitializeRooms
validation ValidateRooms

dans l'onglet HTML j'entre le code HTML suivant :

<h1>Select a Room</h1>

<p>In order to deploy Windows Vista on your computer, we need to know where the computer will be shipped.</p>

<u>R</u>oom:<br/>
<select id=RoomList class=WideEdit datasrc="#Rooms" datafld="Description" accesskey=r>
<option value="" >Select a room:</option>
</select>

<INPUT type="hidden" id=ROOM Name=ROOM />

Edition du fichier DeployWiz_Initialization.vbs

afin que la clause "Initialization" remplisse le contenu de la liste déroulante en fonction du contenu du fichier ROOMS.xml, il faut éditer le fichier DeployWiz_Initialization.vbs  et y rajouter la fonction InitializeRooms que nous avons délarée plus haut.

voici la fonction InitializeRooms que j'utilise

Function InitializeRooms

    Dim oItem
    Dim oOption
    Set oXMLSiteData = nothing

    ' Load the Site Configuration XML file.
    Set oXMLSiteData = oUtility.CreateXMLDOMObjectEx( property("DeployRoot") & "\control\ROOMS.xml" )

    For each oItem in oXMLSiteData.selectNodes("//rooms/room")
        Set oOption = document.createElement("OPTION")
        oOption.Value = oItem.selectSingleNode("ID").text
        oOption.Text = oItem.selectSingleNode("Name").text
        RoomList.Add oOption
    Next
End Function

à rajouter n'importe où dans le fichier

Edition du fichier DeployWiz_Validation.vbs

Afin que la clause "Validation" ne permette le passage à l'écran suivant uniquement si l'utilisateur à choisi une salle, il faut éditer le fichier DeployWiz_Validation.vbs et y rajouter la fonction ValidateRooms déclarée plus haut

Function ValidateRooms

    if SiteList.Value <> "" then
        oEnvironment.Item("ROOM") = RoomList.Value
        ValidateRooms = true
    else
        ValidateRooms = false
    end if
End function

Création du fichier ROOMS.xml

Dans la fonction InitializeRooms, je cherche le fichier ROOMS.xml dans le sous répertoire "control" du déployroot. Voici le contenu du fichier dont je me sers en exemple :

<rooms>
    <room>
        <ID>RH1</ID>
        <Name>Bureau RH 1</Name>
    </room>
    <room>
        <ID>RH2</ID>
        <Name>Bureau RH 2</Name>
    </room>
    <room>
        <ID>IT1</ID>
        <Name>Bureau IT 1</Name>
    </room>
</rooms>

Enfin, déclaration la variable ROOM dans le customsettings.ini

pour que la variable "ROOM" soit prise en compte, il faut la déclarer dans le customsettings.ini de votre deployment point comme ci dessous :

[Settings]
Priority=Default
Properties=ROOM

[Default]
OSInstall=Y

Et voila, la variable ROOM est maintenant utilisable dans une séquence de tâche ou dans des scripts de déploiement.