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

Publié le 04 mars 2010 par Diagg @diagg

Troisième et dernier billet sur la façon non officiel/non supporté de modifier vos packages MSI en les éditant directement. Aujourd’hui :

Exemple 3 – Ajouter des fichiers !

Je vais ajouter à l’installation de Live Writer (logiciel de blogging qui m’a permit d’écrire ce billet) tout les plugins que j’utilise avec, afin de rendre l’application opérationnelle “Out of the Box”.  Les Plugins étant déjà installés sur ma machine, il faut juste que je sache ou aller les chercher pour pouvoir les ajouter à mon package MSI.

Je commence par lancer Qwerty.msi. Je sélectionne le fichier Writer.msi et dans les options, je choisis « Copy all Files ». Contrairement aux billets précédant ou j’avais réalisé une installation administrative, je vais ici reconstruire l’intégralité du package MSI.

Une fois le MSI décompilé, je doit procéder à une étape préparatoire :  l’intégrations des fichiers  de plugins et de settings!

Pour cela, je vais aller copier mes  plugins (un ensemble de DLL contenu dans le répertoire  C:\Program Files (x86)\Windows Live\Writer\Plugins) au sein de mon package décompilé, soit dans ..\Writer.msi.Sources\SourceDir\PFiles\Windows Live\Writer

Je retourne dans Qwerty.msi et me rend sur l’onglet “Features” ou je  sélectionne dans la fenêtre de gauche  le feature “Windows live Writer“.

Puis dans la fenêtre de droite je clique sur l’icone “file system” (en haut à gauche).  L’arborescence des fichiers s’affiche, je la parcours jusqu'‘au sous répertoire :  ProgramFiles Folder>Windows Live>Writer>Plugins

En cliquant bouton droit sur le répertoire Plugins je sélectionne Add>files pour pouvoir ajouter mes fichiers de plugins.

Je sélectionne tout mes fichiers de plugin en une seul fois (CTRL+A) depuis la source d’installation soit ..\Writer.msi.Sources\SourceDir\PFiles\Windows Live\Writer, les voila importés dans mon package.

Comme vous pouvez le constater j’ai ajouté 12 DLL. Il faut donc que je spécifie au MSI que ces fichiers doivent être déployés en plus, impliquant 12 séquences supplémentaires à ajouter.

Je repasse dans l’onglet latéral “Tables” et choisie la table “Files”. Mes fichiers sont bien présent avec une taille à 0 octets (ce qui n’est pas très grave) et un numéro de séquence identique à 1 !

Le dernier numéro de séquence étant le 45, je vais renommer mes numéros de séquence en commençant à partir de 46 jusqu’a  57.

Les fichiers doivent également êtres ajoutés à l’archive du package, pour cela, je me positionne sur la table Media, et passe la LastSequence de  45 à 57.

Dans la table component, l’attribut des fichier dont la descriptions ce trouve ici, doit être changé de 2 à 0 pour que le MSI installe les fichiers correctement

L’ajout des fichiers à également crée 2 tables supplémentaires nommées MsiAssembly et MsiAssemblyName. C’est deux tables n’ayant aucun d’intérêt pour le déploiement des plugins, je les supprime par un clique droit sur chaque tables et je choisie Delete Table.

Enfin, la table CreateFolder qui créait un répertoire Plugin vide, n’a plus, non plus d’utilité, je l’efface donc, elle aussi.

Voilà, c’est terminé, je n’ est plus qu'a reconstruire mon MSI en passant par le menu Project>BUILD.

Le package est prêt. il n’y a plus qu'à l’installer sur une autre machine de préférence, ou sur une VM afin de vérifier que tout fonctionne parfaitement.

Vous savez maintenant comment ajouter des fichiers à vos packages MSI (the dirty way !). Utilisez ce billet comme inspiration afin de transformer d’autres MSI. J ‘essayerai de vous aider dans la mesure de mes compétences si vous avez des soucis.