WPKG scripts de pre et post installation
L'utilisation de dossiers dans un lecteur réseau pour les icônes du Menu Démarrer et du Bureau pose problème avec WPKG.
Une erreur se produit lorsque WPKG installe une application dont l'installeur crée des icônes dans le Menu démarrer et sur le Bureau et qu'une session sur le domaine Scribe est ouverte avant ou pendant l'installation.
Problématique
Voici l'exemple de l'erreur rencontrée à l'installation d'OpenOffice avec WPKG.
Exemple
Type de l'événement : Erreur
Source de l'événement : MsiInstaller
Catégorie de l'événement : Aucun
ID de l'événement : 11327
Date : 08/02/2011
Heure : 11:52:19
Utilisateur : AUTORITE NT\SYSTEM
Ordinateur : POSTE-ADMIN1
Description :
Produit : OpenOffice.org 3.3 -- Erreur 1327.Lecteur R:\ non valide
Lors de l'ouverture de session, ESU ré-écrit les chemins d'accès aux dossiers contenant les icônes du "Bureau" et du "Menu Démarrer" en les faisant pointer sur le lecteur R:
.
Sous Windows il existe 2 type de chemins :
utilisateur, ces chemins peuvent varier d'un utilisateur à l'autre, on y place les icônes qu'on ne veut rendre visible que pour un groupe donné ("gestion-postes" pour les professeurs par exemple) ;
machine, ces chemins sont les mêmes pour tous les utilisateurs.
Les chemins utilisateur sont dans HKEY_CURRENT_USER et les chemins machine dans HKEY_LOCAL_MACHINE.
WPKG est exécuté dans le contexte de l'utilisateur BUILTIN\SYSTEM.
Sous Windows (de 2000 et supérieurs) existe la notion d'environnement utilisateur.
Les lecteurs réseaux, par exemple, ne sont disponibles que pour l'utilisateur qui les a connectés.
Ici, le lecteur R:
n'est accessible que pour l'utilisateur qui a ouvert la session et n'est pas disponible pour l'utilisateur BUILTIN\SYSTEM.
On peut constater le phénomène de visu :
activer le Bureau à distance sur un poste ;
ouvrir, sur ce même poste, une session sur le domaine ;
aller sur un autre poste et ouvrir une session administrateur local via une connexion Bureau à distance.
Dans le poste de travail de la session du domaine on voit le lecteur R:
, il est absent dans la session administrateur local.
Exemple
L'installeur OpenOffice, par défaut, lorsqu'il est exécuté en mode silencieux (comme avec WPKG), veut créer des icônes dans le Menu démarrer.
Il regarde dans HKEY_LOCAL_MACHINE et trouve R:\%ESU_GM%\Menu Démarrer
.
S'exécutant dans l'environnement BUILTIN\SYSTEM l'installeur ne trouve donc pas le lecteur R:
et annule sa procédure d'installation. On peut observer le dossier %PROGRAMFILES%\OpenOffice\
qui grossi à l'installation et qui disparaît ensuite avec l'annulation de l'installation.
Solutions
Le principe est d'éviter qu'un utilisateur n'ouvre une session pendant l'installation d'un programme et permette à l'installeur de créer des icônes dans HKEY_LOCAL_MACHINE avec des chemins qui pointent vers le lecteur C:
.
Augmenter le temps de blocage pendant lequel WPKG accède au poste de travail
Il est possible d'allonger le temps maximal pendant lequel WPKG bloque l'accès au poste de travail pendant son exécution, ceci se paramètre dans l'interface de configuration du module, dans l'onglet Wpkg client
avec la variable logon-delay
.
Il faut ensuite appliquer la nouvelle configuration sur les clients, voir la section Application de la nouvelle configuration WPKG sur les clients.
#fixme
Le blocage du poste fait apparaître une boîte de dialogue qui affiche "WPKG installe les applications et applique les paramètres..."/"Veuillez patienter et ne pas redémarrer votre ordinateur...".
Scripts de pre et de post-installation
Une deuxième solution consiste à restaurer les chemins par défaut des icônes du Bureau et du Menu démarrer avant l'installation du logiciel et exécuter WPKG à l'arrêt du poste plutôt qu'au démarrage.
Deux scripts permettent de sauvegarder et de restaurer les chemins :
script de pré-installation va sauvegarder les chemins pour les dossiers d'icônes du Bureau et du Menu Démarrer et placer les chemins par défaut ;
script de post-installation va restaurer les chemins sauvegardés en pré-installation (facultatif si on exécute WPKG à l'arrêt de la station).
Malgré l'utilisation de ces scripts, il est quand même possible de faire planter l'installation. Il suffit qu'un utilisateur ouvre une session pendant l'installation, juste après le script de pré-installation. À ce moment le chemin pointe quand même vers le lecteur R:
et l'installation échouera.
Exécuter WPKG lors de l'arrêt de la machine permet d'éviter ce dernier cas de figure. Cela permet aussi d'accéder directement à l'ordinateur plutôt que de devoir attendre l'installation des logiciels.
On peut alors expliquer aux utilisateurs qu'ils peuvent :
accéder immédiatement au poste avec des logiciels par forcément à jour ;
redémarrer la machine pour avoir des logiciels à jour si besoin.
Préparation des scripts
Il faut placer les 3 fichiers suivants à la racine du partage \\scribe\wpkg
:
preinstall.bat
postinstall.bat
bureau-menu_demarrer.reg
Remplacer dans l'exemple suivant ADRESSE_IP_SCRIBE par la valeur correspondante à votre serveur et enregistrer le résultat dans un fichier nommé preinstall.bat
Exemple
rem remet les chemins par defaut avant l'installation
regedit /E %WINDIR%\sauv_menu-dem.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
regedit /S "\\ADRESSE_IP_SCRIBE\wpkg\bureau-menu_demarrer.reg"
Copier l'exemple suivant et enregistrer le résultat dans un fichier nommé postinstall.bat
Exemple
rem remet les chemins comme ils etaient avant l'installation
regedit /S %WINDIR%\sauv_menu-dem.reg
del /F %WINDIR%\sauv_menu-dem.reg
Le fichier bureau-menu_demarrer.reg
est téléchargeable à l'adresse :
http://dev-eole.ac-dijon.fr/attachments/download/116/bureau-menu_demarrer.reg
Utilisation des scripts preinstall.bat
et postinstall.bat
Deux méthodes sont possibles pour utiliser ces scripts :
appeler
preinstall.bat
etpostinstall.bat
depuis<nom_du_package>.xml
dans les balises_<install>_
et_<update>_
Cette méthode présente l'avantage de ne pas avoir à modifier la configuration des clients WPKG mais présente l'inconvénient de devoir les appeler pour chaque application dont l'installeur crée des icônes sur le Bureau et/ou dans le Menu démarrer.
utiliser les actions
pre-action
etpost-action
de WPKGCette méthode a l'avantage d'être faite une bonne fois pour toute mais demande à mettre la configuration WPKG à jour sur chaque poste.
Configuration des clients WPKG
Il faut modifier la configuration des clients WPKG pour qu'ils exécutent les 2 scripts en pre et post installation, pour cela il faut utiliser l'interface de configuration du module et vérifier dans l'onglet Wpkg client
les chemins des variables pre-action
et post-action
.
Il faut également passe la variable run-on-shutdown
à YES
.
Conseil
Ne pas hésiter à augmenter la valeur de la variable shutdown-delay
.
Principe de fonctionnement des délais dans WPKG :
s'il n'y a aucune installation ou mise à jour à faire alors l'arrêt est immédiat ;
s'il y a une installation ou une mise à jour est à faire WPKG exécute les installeurs et attend qu'ils se terminent le temps défini dans la variable
shutdown-delay
. Si le temps est dépassé WPKG force l'arrêt de la station même si l'installation du logiciel n'est pas terminée. Si il reste du temps et que l'installation des logiciels est terminée la station s'éteindra.
Le principe est le même pour logon-delay
qui est utilisé si WPKG s'exécute au démarrage de la station (run-on-shutdown
à NO
).
Application de la nouvelle configuration WPKG sur les clients
Il faut appliquer la nouvelle configuration en exécutant wpkg_client_update_conf.bat
sur chacun des clients WPKG.
Truc & astuce
La mise à jour des clients un par un peut paraître fastidieuse, il existe des outils pour faciliter cela :
Winexe ;
cliscribe.py.