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 et postinstall.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 et post-action de WPKG

    Cette 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.