Windows Installer MSI : Modifiez vos packages à la volée – Part 2

Publié le 17 février 2010 par Diagg @diagg

Deuxième billet sur les méthode utilisables pour modifier vos packages MSI (le précédant est ici) avec aujourd'hui comment modifier les pages de l’interface.

Avant de commencer, je souhaitais rappeler au plus professionnels d‘entre vous que cette méthode de modification de package ne fait absolument pas partie des ‘Best Practices’ du petit packager, Elle est même carrément déconseillée par Microsoft qui préconise plutôt de créer un package additionnel nommé ‘Transform’ au format .MST.

Le but du .MST étant de pouvoir faire des modifications sur la façon dont se comporte le .MSI sans avoir à le modifier.

Evidement, cette série d’articles déroge complètement à la règle, et je laisse chacun libre de ces choix. Donc, de grâce, ne perdez pas votre temps, ni le miens, à écrire pour dire que cette méthode n’est pas supportée : …je suis au courant !!!!

Ceci étant dit :

Exemple 2 – Modifier l’interface d’un package

Lorsque je tente d’installer SWV de façon silencieuse, l’installation ne s’effectue pas du tout pour la raison suivante : si je relance l’installation en mode normal, je constate que par défaut l’option qui installe SWV n’est pas sélectionnée. Je vais donc modifier le package afin d’ajouter cette option par défaut.




Je commence par créer une installation administrative en tapant Msiexec /a Swv.msi.

Pourquoi créer une installation Administrative

L’intérêt est de pouvoir disposer de toute la hiérarchie des fichiers décompressé. La table des fichiers du package est toujours préservée, et assure qu’ils seront installés de la même façon que dans le .MSI d’origine. Chose que je ne peux vous garantir si vous décidez d’extraire les fichiers via Qwerty.msi et que vous reconstruisez le package après. (le logiciel date un peu, et ne semble pas fiable sur cette partie…)

Puis je lance Qwerty.msi en sélectionnant bien l’option « Load Database Only »

Dans l’onglet “Tables”, je sélectionne la table ‘Properties’ et verifie l’information suivante : INSTALLLEVEL = 3. Cette propriété indique que tout composant dont le niveau d’installation (Installlevel) est inferieur ou égale à 3 sera installé.

En me rendant sur l’onglet ‘Features‘, je vais pouvoir vérifier le niveau d’installation de chaque composant.

Dans le panel de droite vous retrouvez l’arborescence des composants à installer (les features) en passant sur les trois premier composant, je constate que leur INSTALLLEVEL est bien égale à 3.

par contre les 3 derniers composants ont un niveau d‘installation supérieur à 3 ! Voila dont pourquoi il ne sont pas installés par défaut.

La solution est alors dés plus simple :

- soit je remonte ‘INSTALLLEVEL’ à 4 dans la table ‘Properties’.
- soit, je baisse le niveau à 3 des features supplémentaire que je souhaite installer.

j‘opte pour la première solution, et passe le niveau à 4

puis je reconstruit le package en allant dans le menu Project > Build

La relance du nouveau MSI modifié me montre maintenant que le logiciel SWV fait bien partie des options par défaut, l’installation silencieuse installera désormais l’intégralité du soft ! (l’option qui reste avec la croix rouge étant inutile au fonctionnent du logiciel). Magique Non ?

Exemple 3 - Modifier/supprimer des pages

En vous promenant  dans les onglets de Qwerty.msi, vous découvrirez que l’onglet ‘Dialogs’ vous permet de visualiser et d‘éditer les différentes pages  constituantes du package.

Vous pouvez à votre guise, changer les textes et la position des bouton. cependant, cela n’a que peu d‘intérêt… Il est, par contre, possible de changer/supprimer l’enchainement de ces pages les une par rapport au autres.

Beaucoup de packages MSI ne sont pas toujours fini dans les détails, et certaines page continue de s’afficher malgré une installation silencieuse avec des commutateurs /quiet ou /qn. Nous allons donc apprendre comment supprimer ces pages récalcitrantes.

Imaginons que pour une raison quelconque, j’ ai besoin de retirer la page d’acceptation de la licence  d’utilisation (Bouu, Pas bien !).

Je vais dans un premier temps rechercher cette boite de dialogue parmi tout celle que contient le package et repérer son nom, ici, elle s’appelle ‘Licence_Dialog’. Puis en sélectionnant la boite de dialogue avec le bouton droit, je clique sur : GoTo > ControlEvent Table

J’arrive alors dans le menu suivant :

Il décrit l’enchainement des pages lorsque l’on clique sur les bouton ‘Previous’, ‘Next’ et ‘Cancel’.

On peu en déduire l’enchainement avec la page précédente et de la page suivantes de la façon suivante :

 Welcome_Dialog <>Licence_Dialog<>Product_Key_Dialog

Pour pouvoir supprimer la page Licence_Dialog, je vais simplement me rendre dans sur la page précédente Welcome_Dialog, et changer la destination du bouton ‘Next’ en lui indiquant de pointer sur la page
Product_Key_Dialog. La séquence d’enchainement des page de dialogue va alors ressembler à ceci :

 Welcome_Dialog <>Product_Key_Dialog

Voila, il n’y a rien de plus simple. Les propriétés des boutons de la page Welcome_Dialog ce trouvant dans la même table ‘ControlEvent’, je n’est qu’a modifier Welcome_Dialog comme je viens de vous l’expliquer :

Je n’est plus qu’a reconstruire mon package en allant dans le menu Project > Build

La relance du nouveau MSI modifié me montre que la page d’acceptation de la licence n’existe plus ! C’est à nouveau une pleine réussite.!!

Vous pouvez bien évidement tester ceci sur toute autre page de dialogue. Je vous donne rendez vous très bientôt pour le dernier épisode de cette petite série sur l’édition des .MSI.