Rajouter un écran dans le Wizard Lite Touch avec le Wizard Editor
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
Pour arriver à ce résultat voici les étapes :
- Edition du fichier DeployWiz_Definition_ENU.xml
- Edition du fichier DeployWiz_Initialization.vbs
- Edition du fichier DeployWiz_Validation.vbs
- Création du fichier ROOMS.xml
- 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 :
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
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.
Comments
Anonymous
August 27, 2008
I am having problems with the ValidateRooms function. The litetouch wizard recieves a Error 500 due to the SiteList.Value. If I change this to RoomList.Value, then it doesn't error, but also doesn't set it in the Variables.dat in c:minintsmsosdosdlogs. Any ideas why?Anonymous
September 03, 2008
The comment has been removedAnonymous
July 29, 2009
Bonjour, Dans votre tutoriel, j'ai noté une petite erreur qui entraine un bug dans la phase validateRooms. au lieu d'ecrire : if SiteList.Value <> "" then il faut écrire : if RoomList.Value <> "" then Etant donné que l'id du combobox est : RoomList Cordialement, Régis Lainé