Créer un lanceur avec NSIS

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 portabilisation de heidiSQL avec AutoIt 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.


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_USER\Software\HeidiSQL
Téléchargez et ouvrez le template de Karl Loncarek avec un éditeur de texte un peu évolué de type PSPad, Notepad++, PlainEdit.
Passons les premières lignes commentées par un ; (point virgule) c’est le copyright 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 icone 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’icone 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 HeidSQL

Sauvegardez, votre lanceur est prêt à être compilé. Pensez avant de le faire à ajouter l’éventuel icone 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.
N’hésitez pas à nous faire profiter de votre production.

6 thoughts on “Créer un lanceur avec NSIS

  1. Petite précision concernant ces deux lignes :
    !define APP «  » ; => Mettez entre les deux «  » le nom de l’application et de son répertoire
    !define EXE «  » ; Mettez entre les deux «  » le nom de l’exécutable

    Je traduirai comme suit :
    !define APP «  » ; => Mettez entre les deux «  » le Nom du répertoire principal de l’application –> (sous-entendu App\) « Nom du répertoire »
    !define EXE «  » ; Mettez entre les deux «  » le Nom de l’exécutable –> par exemple (sous-entendu le Nom du répertoire principal de l’application\) « Nom de l’exécutable.exe »

    Concrétement, quand l’exécutable de l’application à portabiliser est dans un sous-dossier du répertoire principal, soit x (le nom du répertoire principal), y (le nom du sous-dossier) et z (le nom de l’exécutable) :
    !define APP « x »
    !define EXE « y\z.exe »

  2. Bojour Papoo,

    Grâce à votre tutoriel nous avons réussi Ldfa et moi (Ray1) du site francophone de Maxthon à portabiliser avec NSIS les deux versions majeures du navigateur, Maxthon 3.0 et Maxthon 2.5.15.

    Si vous êtes intéressé pour ajouter ces deux nouvelles applications portables sur votre site, vous pouvez me contacter sur mon email.

    Amicalement
    Ray1

Laisser un commentaire