Bienvenue dans le programme de formation rapide à NSIS

Date : 20 novembre 2003

Intervenant : Julien VICTOR

Interlocuteurs : Ingénieurs 2000 Informatique et Réseaux

(3ème année)

Objectifs de la formation

Comprendre et savoir expliquer NSIS

Pouvoir créer un premier exemple pratique

Définition du terme

Où / Quand / Pourquoi l'utiliser ?

Comment installer le programme principal ?

Utilisation au travers d'un exemple simple

Quelles sont les commandes principales ?

Quelles sont les possibilités de NSIS ?

Lecteur multimédia

Partage de fichiers

Bibliothèque graphique

Analyseur de protocoles

Traitement de texte

Client CVS

........ etc.

Quel est le point commun entre ...

Nullsoft Scriptable Install System

NullSoft Install System

NSIS

... réponse !

Deux équipes de développement

31 juillet 2000

28 avril 2002

28 avril 2002

???

Justin Frankel (NullSoft)

- technologie SuperPIMP

- dérivé de PIMP (Nullsoft Plug-In Mini Packager)

Développeurs OpenSource

Une licence

1- Origines du programme claires (et précisées ?)

2- Modifications des sources originales indiquées comme telles

3- Licence présente avec toute distribution du programme

zlib/libpng (licence approuvée par OpenSource.org)

Point historique sur le développement

installation / désinstallation sous Windows

compression des données

détection des erreurs d'intégrité des données (CRC)

interface utilisateur personnalisable

multilingue

gestion des types d'installation (système de composants)

fichiers générés jusqu'à 2Go

...

Fonctionnalités

gestion des fichiers / registre

support des variables

manipulation de chaînes de caractères et d'entiers

branchements, comparaisons

manipulation de l'interface

préprocesseur

utilisation de plugins

...

Système de scripts

Structure des fichiers générés

En-tête du fichier (définition de la structure interne)

Code exécutable

Données propres à NSIS

Ressources

Intérêts de cette structure

exemple : SmartFTP

NSIS	: 2,4 Mo

MSI	: 6,0 Mo

Un seul fichier pour la distribution

Surplus (en-tête) d'environ 35 ko

Pas de décompressions multiples des données

Installation

Deux versions téléchargeables : Versions 'stables' / CVS

Version 1.98 – Style normal

Version 1.98 – Style moderne

Langage de script

Fichier texte (possibilité d'utiliser des éditeurs spécifiques)

Langage 'proche' de l'assembleur

C

int i;

for(i=0;i<10;i+)

{

printf(« %d », i);

}

printf(« Fin »);

NSIS

StrCpy $R0 « 0 »

debut:

DetailPrint $R0

IntOp $R0 $R0 + 1

StrCmp $R0 « 10 » debut +1

DetailPrint « Fin »

Format : commande [arg0] [arg1] [...]

Mon premier exemple (simple)

Enoncé :

Vous êtes développeur de renommée internationale, et venez de concevoir un très bon (enfin, c'est votre avis) éditeur de texte. Votre package (ou ensemble de fichiers, en français) se compose de :

- beizw.exe (pour best editor in ze world)

- beizw.txt (le fichier lisez-moi)

- une clé dans la base de registre, indiquant où le programme a été installé (sinon, vous aviez remarqué que votre programme plantait misérablement... personne n'est parfait)

- un raccourci sur le bureau et le menu démarrer

- la possibilité de désinstaller (vous ne vouliez pas, mais c'est vrai que ça rend bien...)

exemple provenant du site http://www.winampfr.com/nsis

Mon premier exemple : Commandes générales

Name "Beizw"

Icon "inst.ico"

OutFile "beizw_install.exe"

LicenseText "Cette installation va installer Beizw"

LicenseData "doc\beizw.txt"

ComponentText "Cela installera Beizw sur votre ordinateur.."

DirText "Répertoire d'installation"

InstallDir "$PROGRAMFILES\Les programmes fabuleux de VeeKee\Beizw"

InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Beizw" "UninstallString"

Mon premier exemple : Les sections

InstType Normale

InstType Entiere

Section "Programme (requis)"

SectionIn 1 2

/*

à compléter ...

*/

SectionEnd

Section "Raccourcis"

SectionIn 2

/*

à compléter ...

*/

SectionEnd

Mon premier exemple : Les sections (suite et fin)

Section "Programme (requis)"

SectionIn 1 2

SetOutPath $INSTDIR

File "bin\beizw.exe"

File "doc\beizw.txt"

SectionEnd

Section "Raccourcis"

SectionIn 2

SetOutPath "$SMPROGRAMS\Beizw"

CreateShortCut "$SMPROGRAMS\Beizw\Beizw.lnk" "$INSTDIR\Beizw.exe"

CreateShortCut "$SMPROGRAMS\Beizw\Documentation.lnk" "$INSTDIR\Beizw.txt"

SetOutPath "$DESKTOP\Beizw"

CreateShortCut "$DESKTOP\Beizw.lnk""$INSTDIR\Beizw.exe"

SectionEnd

Mon premier exemple : Post-installation

Section -PostInstall

WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Beizw" "DisplayName" "Beizw (désinstallation)"

WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Beizw" "UninstallString" '"$INSTDIR\uninst-Beizw.exe"'

WriteUninstaller "uninst-beizw.exe"

WriteRegStr HKLM "Software\Veekee\Beizw" "Repertoire" '"$INSTDIR"'

SectionEnd

Mon premier exemple : Désinstallation

UninstallText "Voulez-vous vraiment enlever Beizw de votre système ?"

UninstallIcon "uninst.ico"

Section "Uninstall"

DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Beizw"

DeleteRegKey HKLM "Software\Veekee\Beizw"

Delete "$INSTDIR\uninst-beizw.exe"

Delete "$INSTDIR\beizw.exe"

Delete "$INSTDIR\beizw.txt"

RMDir $INSTDIR

Delete "$DESKTOP\Beizw.lnk"

Delete "$SMPROGRAMS\Beizw\*.*"

RMDir "$SMPROGRAMS\Beizw"

SectionEnd

Liens

Site officiel (anglais) :

http://nsis.sourceforge.net

Communauté française :

http://www.winampfr.com/nsis

Avez-vous des questions

La formation NSIS a été terminée avec succès.

In order to make NSIS even more powerful than it already is, we have released it under an open source license (it is actually the zlib/libpng license, which is approved by opensource.org). What does this mean? It means that if you want to add the functionality you need to NSIS, you can. It means if you want to make your own custom version of NSIS (or some product that includes NSIS), and sell it, you can. Or if you just want to distribute your software using NSIS, you sure as hell can.

* technologie SuperPiMP™ (si avancée et si incroyable que nous ne vous le dirons jamais assez)

* génère des installations executables win32 comprenant tout en elles

* support de la compression des données zlib ou bzip2. L'installation peut tout compresser en un seul bloc, ou individuellement.

* support de la désinstallation (l'installation peut automagicalement générer la désinstallation)

* interface utilisateur personnalisable (fenêtres, police, arrière-plans, icônes, texte, encoches, images, etc.)

* interface de l'assistant classique ou moderne

* totalement multilingue, support de plusieurs langues pour une seule installation. Plus de 35 traductions sont disponibles.

* système de pagination vous permettant de configurer les pages de l'assistant en en ajoutant de nouvelles

* sélection utilisateur des composants installés, via une arborescence

* plusieurs types d'installations (habituellement Minimal, Normal, Complète), et une configuration personnalisée

* vérification interne optionelle de l'installation en utilisant un CRC32.

* taille du surplus d'en-tête compressé approximativement de 20-40ko (dépendant des fonctionnalités activées, de l'algorithme de compression utilisé et ainsi de suite - avec les options par défaut, elle est de ~34ko).

* possibilité d'afficher une licence, en format texte ou RTF

* possibilité de détection du répertoire de destination depuis le registre, et de permettre à l'utilisateur de l'utiliser (ou d'en utiliser un autre)

* système de plugin simple d'utilisation (inclus des plug-ins pour créer des fenêtres personnalisées, pour se connecter à Internet, pour télécharger via HTTP, pour patcher des fichiers, pour appeler des API Win32, etc.)

* l'installation peut aller jusquà 2Go (théoriquement -- sous Win9x, la limite de compilation semble de 500Mo, mais compiler sous NT et installer sous Win9x marche très bien pour les grandes tailles)

* mode Silence optionel pour des instalaltions automatisées

* un préprocesseur avec support des symboles, des macro, de la compilation conditionnelle et des prédifines standards

* une expérience de codage superbe avec des éléments de PHP et d'assembleur (incluant des variables utilisateurs, une pile, un réel contrôle de flux, etc)

* les installations possèdent leur propre machine virtuelle afin de vous permettre d'écrire du code supportant :

o extraction de fichiers (avec des paramètres d'écrasement configurables)

o copie/renommage/suppression/recherche de fichiers/répertoires

o appel de plugins DLL

o chargement/déchargement des contrôles DLL/ActiveX

o exécution d'éxécutable (executions systèmes et options d'attente)

o création de raccourcis

o lecture/paramètrage/énumération/suppression de clés du registre

o lecture/écriture de fichiers INI

o lecture/écriture générique de fichiers texte

o manipulation puissante des chaînes de caractères et des entiers

o recherche de fenêtres basée sur les noms des classes ou sur les titres

o manipulation de l'interface utilisateur (polices/textes)

o envoi de messages Window

o interaction utilisateur avec des boites de dialogues ou des pages personnalisées

o branchements, comparaisons, etc.

o vérification des erreurs

o support de redémarrage, incluant la suppression ou le renommage au reboot

o commandes agissants sur le comportement de l'installation (telles que afficher/cacher/attendre/etc)

o fonctions utilisateurs dans les scripts

o fonctions d'interaction pour une action de l'utilisateur

2003-11-16T00:01:43