Portabiliser une application avec NSIS

D├ęcembre 2016


Source : pon.fr


Introduction


Voici un nouveau tutoriel vous permettant de suivre pas à pas la création d'un lanceur avec NSIS et le template libre de Karl Loncarek. Pour ce tutoriel, j'ai repris l'exemple de la HeidiSQL en l'adaptant, afin de permettre la comparaison des deux techniques. Il est à noter que le template utilisé est largement plus complet que ce que ce je vous avez présenté pour AutoIt et je ne décrirais ici que ses principales fonctions c'est à dire la création d'un lanceur simple pour une application ne nécessitant que peu d'efforts pour être portabilisée. Mais il peut beaucoup plus.

Note: Si le programme possède un driver, il ne peut pas être portable de cette manière.
Si le programme possède des fichiers dans le répertoire Windows ou d'autres répertoires système: il ne peut pas être portabilisé.
Si il y a besoin d'enregistrer une dll/ocx : il ne peut pas être portable non plus.

Comme avec AutoIt, il nous faut connaître les clés de registre utilisées par le soft à portabiliser, ainsi que les éventuels répertoires de configuration (autres que les sous répertoires de l'application) comme les répertoires de l'application dans le profil courant. Pour HeidiSQL pas de répertoire et la seule clé de registre est : HKEY_CURRENT_USERSoftwareHeidiSQL
Téléchargez et ouvrez le template de Karl Loncarek avec un éditeur de texte un peu évolué de type PSPad ou Notepad++
Passons les premières lignes commentées par un ; (point virgule) c'est le copyright du template.


Modification du template


Vous pouvez éventuellement modifier les toutes premières lignes pour mettre le nom, la version, et votre site web.
Passons maintenant à la section Define constants du template.
Les lignes de cette section commence toutes par !define et les valeurs à modifier sont comprises entre deux "".
!define AUTHOR ""; => Mettez votre nom ou pseudo entre les deux ""
!define APP "" ; => Mettez entre les deux "" le nom de l'application et de son répertoire
!define VER "0.0.0.0" ; Modifiez les 4 zéros pour indiquer le n° de version du lanceur.
!define EXE "" ; Mettez entre les deux "" le nom de l'exécutable
!define PNAME "${App}Portable" ; format du nom du lanceur
!define ICON "${PNAME}.ico" ; si vous voulez mettre un icône personnalisé (autre que celui par défaut de NSIS) mettez le dans le même répertoire que le template avec le même format de nom qu'a cette ligne, commentez (via un point virgule) la ligne si vous voulez garder l'icône NSIS.
!define SPLASHIMAGE "${PNAME}.jpg" ; Si vous voulez ajouter un splashscreen au lanceur, commentez (via un point virgule) la ligne si vous ne voulez pas d'image de présentation.
!define REGKEYS "" ; C'est la que notre clé de registre doit être ajoutée. si vous avez plusieurs clés à insérer séparez les par un le double symbole || ((AltGr + 6) 2 fois) commentez (via un point virgule) la ligne si il n'y a pas de clé de registre.
!define SETTINGSFILES "" ; Cette ligne est pour les éventuels fichiers de configuration (.ini) avec leurs chemin relatif. Si il y en a plusieurs séparez les par un le double symbole || ((AltGr + 6) 2 fois) commentez (via un point virgule) la ligne si il n'y a pas de fichier .ini.
!define SETTINGSDIRS "" ; Insérer ici les chemins vers les éventuels répertoires àajouter. lors du lancement de l'application. Si il y en a plusieurs séparez les par un le double symbole || ((AltGr + 6) 2 fois) commentez (via un point virgule) la ligne si il n'y a pas de répertoire à ajouter
!define INI "${PNAME}.ini" ; commentez (via un point virgule) cette ligne.

Voici la capture de mon lanceur pour HeidiSQL (Ouvrir le lien dans un nouvel onglet):


Compilation


Sauvegardez, votre lanceur est prêt à être compilé. Pensez avant de le faire à ajouter l'éventuel icône et l'éventuel image de démarrage.
pour permettre à NSIS de compiler ce script assurez vous que vous disposez bien du plugin Registry.nsh essentiel à ce template.
Ouvrez NSIS:


Cliquez sur compileur puis sur Lancer MakeNSISW:


Un simple glissez /déposez du fichier template sur la fenêtre du compileur et la compilation s'effectue en indiquant pas à pas les paramètres ajoutés au futur EXE.
Vérifiez bien en fin de compilation que tout c'est passé normalement, si la compilation échoue, c'est ici que vous comprendrez pourquoi.
Il ne vous reste plus qu'a créer la structure de votre application portable.
A la racine du répertoire vous mettrez le lanceur que vous venez de faire. Il vous faut créer deux sous répertoires App et Data. dans App vous mettrez le répertoire contenant les fichiers de l'application à portabiliser.
Que fait ce template magique de plus que le petit bout de script AutoIt? Et bien au démarrage du lanceur, il sauvegarde les éventuels clés de registre, répertoires et fichiers ini que vous lui avez indiquez pour préserver une éventuelle installation existante du logiciel que vous voulez lancer. Ensuite il va lancer votre programme. à l'arrêt de l'application, il sauvegardera les éventuels changements que vous aurez générés à l'utilisation du soft portable. Il les effacera ensuite de l'ordinateur et restaurera les précédents paramètres et fichiers.
Voila. J'espère que ce modeste document vous aidera à améliorer vos propre logiciels portables.

Autres Liens


A voir également :

Ce document intitulé «  Portabiliser une application avec NSIS  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.