dimanche 14 février 2010

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

Si comme moi vous vous passionnez pour le déploiement silencieux d‘applications. vous allez sans doute apprécier ces quelque trouvailles que j‘ai faite la semaine dernière en me penchant de plus prêt sur les packages MSI.

Pour rappel, le format MSI est le format que Microsoft à mis au point pour pouvoir packager et déployer des applications. D ‘un point de vu technique, c’est une base de donnée ‘évoluée’ contenant des fichiers à installer, des propriétés d‘installations et des graphismes modulables pour la présentation.

Dans le meilleur des monde, cette technologie à pour objectif de faciliter le déploiement de vos applications, cependant il arrive que ce ne soit pas toujours le cas ;

- par exemple, le package MSI qui possède des conditions d’installation, refusera de s‘installer si une application X (dont vous n’avez, bien évidement, absolument pas besoin) n’est pas déjà installé.

- autre exemple, vous souhaitez déployer un packages qui supporte l’installation silencieuse ( Msiexec /i fichier.msi /q), cependant aucune option n’a été défini pour vous permettre d’automatiser la prise en compte du numéro de série du soft, et malgré tout vos efforts, il est impossible de rendre silencieuse la fenêtre qui vous demande systématiquement le numéro de série.

les exemples sont multipliables à l’infini et face à ce type de problèmes, les solutions de contournement peuvent parfois s‘avérer laborieuse :
- Soit vous repackagez ( trop long !)
- Soit vous utilisez un script qui simule la saisie de caractères au clavier (pas toujours fiable, et long à régler !)
- Soit vous éditez le package (tellement plus geek, et aussi plus rapide, c’est l ‘objet de cette série de  billets !)

Comment éditer un MSI.

Pour pénétrer dans l’entre du fichier MSI nous allons utiliser un vieux programme dont la conception et l‘efficacité redoutable ont traversés le temps sans encombre puisque créé en 2004, il fonctionne parfaitement sur un Windows 7 64 Bits ! J‘ai nommé : Qwerty.msi ! banana_juice

N’étant pas en mesure de vous donner une méthode universelle d‘édition (chaque fichier étant un cas particulier ) je vais vous présenter quelques exemples concret agrémentés des solutions qu’offre la simple modification du package.

Exemple 1 – Installer le WAIK Unattended

Si je cherche à installer le WAIK (Windows Automated installation  Kit) de façon silencieuse, le package refusera de s’installer prétextant que l’installation ne peut se faire qu‘en mode ‘Full Interface’.

NotWorking

Afin de résoudre le problème, je vais créer une installation administrative en tapant  dans une invite de commande avec élévation administrative: Msiexec /a waikAMD64.msi

Une fois l’installation administrative réalisée je lance Qwerty.msi et j’ouvre avec, le fichier MSI qui se trouve dans mon installation administrative en veillant bien à ce que sur l’option source soit sélectionné “Load Database only

new project

L’interface de Qwerty.msi apparait. Sur le coté droits des onglets me permettent d’accéder aux catégories principales constituant un package MSI.Je choisi l’onglet TABLES et sélectionne la propriété ‘LaunchConditions” qui contient les pré-requis obligatoire pour autoriser l’installation du package.

table UI-level

Dans le panel de droite, une condition particulièrement intéressante : [String MustHaveFullUI] qui affiche une erreur dans le cas ou on décide de passer par une installation silencieuse.

table ui-level-delete

Je supprime la condition et reconstruit le MSI en allant dans le menu  Project>BUILD

Je récupère le nouveau MSI compilé dans le sous répertoire  ..%InstallationAdministrative%\wAIKAMD64.msi.Sources\Debug\Disk1_1\wAIKAMD64.msi

je le place à la racine de mon installation administrative.

Je relance l’installation silencieuse, avec la commande : Msiexe /i wAIKAMD64.msi /qb et là… ça ne fonctionne pas !

NotWorking2

En effet le MSI cherche une source CD précise qui n’il n’arrive pas à retrouver (probablement un oublie de paramétrage des auteurs du package lié à l’installation administrative)  … Aucun problème je re-édite mon package avec Qwerty.msi et vais spécifier une source unique pour tout les fichiers.

Querty-media

Toujours dans l ‘onglet TABLES, je sélectionne la propriété Medias, et y change la valeur KB3AIK_FR en  DEFAULT pour que tout les fichiers soit recherchés par l’installer à partir du même endroit.

modifs

Je relance à nouveau  la construction du package MSI en allant dans le menu  Project>BUILD

Puis Je récupère le nouveau MSI compilé et le replace à la racine de mon installation administrative. Je re-exécute l’installation silencieuse par la commande Msiexe /i wAIKAMD64.msi /qb, et la … Formidable, ça fonctionne à merveille…

working

Voila c’est assez pour un premier exemple, j’espère vous avoir donné envie d‘aller trifouiller dans vos package MSI.  Je publierai prochainement un autre billet pour vous expliquer comment modifier/supprimer l‘apparition des pages du package d’installation. D’ici la je  vous encourage à essayer cette méthode qui malgré des apparences complexe peut être métrisée dans des délais très court (il y’a une semaine je n’y connaissais rien, c’est vous dire !).

Lisez également :
Windows Installer MSI : Modifiez vos packages à la volée – Part 1
Windows Installer MSI : Modifiez vos packages à la volée – Part 2
Windows Installer MSI : Modifiez vos packages à la volée – Part 3