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 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ée ?) 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 installations NSIS 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 Un seul fichier pour la distribution Surplus (en-tête) d'environ 35 ko Pas de décompressions multiples des données exemple : SmartFTP NSIS: 2,4 Mo MSI: 6,0 Mo
Installation Deux versions téléchargeables : Versions 'stables' / CVS Version 1.98 – Style normal Version 1.98 – Style moderne
Language de script Fichier texte (possibilité d'utiliser des éditeurs spécifiques) Language '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 ou le programme a été installé (sinon, vous aveiz 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 ca rend bien...) exemple provenant du site
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) : Communauté française :
Avez-vous des questions J'ai des réponses La formation NSIS a été terminée avec succès.