Un fichier de script (.nsi pour NSIS Script File) est simplement un fichier texte comprenant une série de commandes.
Commandes
Les lignes de commande sont dans le format 'commande [parametres]'
File "monfichier"
Commentaires
Les ligens commençant par ; ou # sont des commentaires. Vous pouvez placer des commentaires après les commandes. Vous pouvez aussi utiliser les commentaires C pour commenter une ou plusieurs lignes.
; Commentaire # Commentaire /* Commentaire Commentaire */ File "monfichier" ; Commentaire
Si un paramètre doit commencer par ; ou # mettez-le entre simple-guillemets.
Plugins
Pour appeler un plugin, utilisez 'plugin::commande [parametres]'. Pour plus d'informations, voir les DLLs plugin.
nsExec::Exec "monfichier"
Nombres
Pour les paramètres à traiter comme des nombres, utilisez la notation décimale (le nombre) ou héxadecimale (préfixé par 0x, ex. 0x12345AB), voir même octale (les nombres commençant par 0 et sans x).
Les couleurs doivent être spécifiées au format RBGB héxadecimal, comme en HTML mais dans le #.
IntCmp 1 0x1 lbl_egual SetCtlColors $HWND CCCCCC
Chaînes de caractères
Pour représenter les chaînes de caractères possédant un espace, utilisez les guillemets :
MessageBox MB_OK "Coucou vous !"
Les guillemets ont la propriété de contenir un paramètre s'il commence le paramètre. Il peut s'agit ou bien de simple-guillemets, de double-guillemets, ou bien d'une apostrophe.
Vous pouvez échapper les guillemets en utilisant $\.
MessageBox MB_OK "Je vais être heureux" ; ceci place un ' dans une chaîne MessageBox MB_OK 'Et il me dit "Salut toi!"' ; ceci place un " dans une chaîne MessageBox MB_OK `Et il me dit "Je vais m'faire b....!"` ; ceci place un ' et un " dans une chaîne: MessageBox MB_OK "$\"Idée jetée par un homme sage$\" dit l'homme sage" ; montre l'échappement de guillemets
Il est aussi possible d'inclure des sauts de ligne, des tabulations etc. Dans une chaîne, utilisez $\r, $\n, $\t etc. Plus d'informations...
Variables
Les variables commencent par $. Les variables utilisateurs doivent être déclarée et sont sensibles à la casse.
Var MAVAR StrCpy $MAVAR "mavaleur"
Longues commande
Pour étendre une commande sur plusieurs lignes, utilisez l'antislash (\) à la fin de la ligne, et la ligne suivante sera effectivement concaténée à la fin de celle-ci. Par exemple :
CreateShortCut "$SMPROGRAMS\NSIS\Espace de travail du projet ZIP2EXE.lnk" \ "$INSTDIR\source\zip2exe\zip2exe.dsw" MessageBox MB_YESNO|MB_ICONQUESTION \ "Voulez-vous supprimer tous les fichiers dans le répertoire ? \ (Si vous y avez ajouté quelque chose que vous voulez \ garder, cliquez sur Non)" \ IDNO NoRemoveLabel
Fichier de configuration
Si un fichier nommé "nsisconf.nsh" dans le même répertoire que makensis.exe existe, il sera inclus par défaut au début du script (à moins que le paramètre /NOCONFIG soit utilisé).
Toutes les variables sont globales et peuvent être utilisées dans des sections ou des fonctions. Les variables sont sensibles à la casse.
$VARNAME
Les variables utilisateur peuvent être déclarées avec la commande Var. Vous pouvez utiliser ces variables pour stocker des valeurs, travailler avec la manipulation de chaînes de caractères, etc.
nom_var
Déclare une variable utilisateur. Les caractères autorisés sont : [a-z][A-Z][0-9] et '_'.
$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $R0, $R1, $R2, $R3, $R4, $R5, $R6, $R7, $R8, $R9
Les registres. Ces variables peuvent être utilisées comme des variables utilisateur, mais sont généralement utilisées dans les focntions partagées ou macros. Vous n'avez pas besoin de les déclarer, ainsi, vous n'aurez pas de conflit lorsque vous utiliserez duu code partagé. En utilisant ces variables dans du code partagé, il est recommendé que vous utilisiez la pile pour enregistrer et restaurer leurs valeurs originales. Ces variables peuvent aussi être utiliser pour la communication avec les plug-ins, car elles peuvent être lues et écrites par les plugins.
$INSTDIR
Le répertoire d'installation ($INSTDIR est modifiable en utilisant StrCpy, ReadRegStr, ReadINIStr, etc. - Cela peut être utilisé, par exemple, dans la fonction .onInit pour faire une détection avancée de l'emplacement de l'installation).
$OUTDIR
Le répertoire de destination courant (défini implicitement via SetOutPath ou explicitement via StrCpy, ReadRegStr, ReadINIStr, etc)
$CMDLINE
La ligne de commande de l'installation. Le format de la ligne de commande peut être:
$LANGUAGE
L'identifiant de la langue en cours d'utilisation. Par exemple, Français est 1036. Vous ne pouvez modifier cette variable que dans .onInit.
Les variables constantes peuvent aussi être utilisée dans le paramètre de InstallDir.
Notez que certaines nouvelles constantes ne fonctionneront pas sur tous les systèmes. Par exemple, $CDBURN_AREA ne fonctionnera que sous Windows XP et supérieur. Si elle est utilisée sous Windows 98, elle sera vide. A moins d'être indiqué, une constante doit être disponible sous tous les systèmes.
$PROGRAMFILES
Le répertoire program files (habituellement C:\Program Files mais détecté dynamiquement).
$COMMONFILES
Le répertoire des fichiers communs. Il s'agit d'un répertoire pour les composants partagés entre les applications (habituellement C:\Program Files\Common Files mais détecté dynamiquement).
$DESKTOP
Le répertoire du Bureau de Windows (habituellement C:\windows\bureau mais détecté dynamiquement). Le contexte de cette constante (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
$EXEDIR
L'emplacement de l'executable de l'installation. (peut être techniquement modifié, mais n'est peut être pas non plus une bonne idée)
${NSISDIR}
Symbole contenant le répertoire d'installation de NSIS. Détecté au moment de la compilation. Utile si vous voulez utiliser les ressources présentes dans le répertoire de NSIS (ex : icônes, interfaces graphiques, ...).
$WINDIR
Le répertoire windows (habituellement C:\windows voir C:\winnt mais detecté dynamiquement)
$SYSDIR
Le répertoire système de Windows (habituellement C:\windows\system ou C:\winnt\system32 mais detecté dynamiquement)
$TEMP
Le répertoire temporaire système (habituellement C:\windows\temp mais detecté dynamiquement)
$STARTMENU
Le dossier du Menu Démarrer (utile pour l'ajout d'élements en utilisant CreateShortCut). Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
$SMPROGRAMS
Le dossier Programmes du Menu Démarrer (à utiliser, même si vous voulez $STARTMENU\Programmes). Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
$SMSTARTUP
Le dossier Programmes > Démarrage du Menu Démarrer. Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
$QUICKLAUNCH
La barre de lancement rapide, pour l'Active Desktop de IE4 et supérieur. Si cette barre n'est pas disponible, retourne $TEMP.
$DOCUMENTS
Le répertoire Mes Documents. Un chemin typique pour l'utilisateur courant est C:\Documents and Settings\Moi\Mes Documents. Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
Cette constante n'est pas disponible sous Windows 95 sans Internet Explorer 4 d'installé.
$SENDTO
Le répertoire contenant les raccourcis du menu Envoyer vers.
$RECENT
Le répertoire contenant les raccourcis vers les documents récements utilisés par l'utilisateur.
$FAVORITES
Le répertoire contenant les raccourcis des documents, sites web favoris (...) de l'utilisateur. Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
Cette constante n'est pas disponible sous Windows 95 sans Internet Explorer 4 d'installé.
$MUSIC
Le répertoire des fichiers musicaux de l'utilisateur. Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
Cette constante est disponible sous Windows XP, ME et supérieur.
$PICTURES
Le répertoire des images de l'utilisateur. Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
Cette constante est disponible sous Windows XP, ME et supérieur.
$VIDEOS
Le répertoire des fichiers vidéos de l'utilisateur. Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
Cette constante est disponible sous Windows XP, ME et supérieur.
$NETHOOD
Ce répertoire contient des objets pouvant exister dans le dossier Voisinnage Réseau.
Cette constante n'est pas disponible sous Windows 95 sans Internet Explorer 4 ni Active Desktop d'installé.
$FONTS
Le répertoire des polices systèmes.
$TEMPLATES
Le répertoire des modèles de documents. Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
$APPDATA
Le répertoire des données des applications. La détection du répertoire utilisateur nécessite Internet Explorer 4 ou supérieur. La détection du répertoire de tous les utilisateurs nécessite Internet Explorer 5 et supérieur. Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
Cette constante n'est pas disponible sous Windows 95 sans Internet Explorer 4 ni Active Desktop d'installé.
$PRINTHOOD
Le répertoire contenant les objets liés pouvant exister dans le répertoire Imprimantes.
Cette constante n'est pas disponible sous Windows 95 et Windows 98.
$INTERNET_CACHE
Le répertoire des fichiers Internet temporaire d'Internet Explorer.
Cette constante n'est pas disponible sous Windows 95 et Windows NT sans Internet Explorer 4 ni Active Desktop d'installé.
$COOKIES
Le répertoire des cookies d'Internet Explorer.
Cette constante n'est pas disponible sous Windows 95 et Windows NT sans Internet Explorer 4 ni Active Desktop d'installé.
$HISTORY
Le répertoire de l'historique d'Internet Explorer.
Cette constante n'est pas disponible sous Windows 95 et Windows NT sans Internet Explorer 4 ni Active Desktop d'installé.
$PROFILE
Le répertoire du profil de l'utilisateur. Un chemin typique serait C:\Documents and Settings\Moi.
Cette constante n'est disponible que sous Windows 2000 et supérieur.
$ADMINTOOLS
Un répertoire ou les outils administratifs sont stockés. Le contexte de cette variable (Tous les Utilisateurs ou Utilisateur Courant) dépend du paramètrage SetShellVarContext. Par défaut, il s'agit de l'utilisateur courant.
Cette constante est disponible sous Windows 2000, ME et supérieur.
$RESOURCES
Le répertoire des ressources où sont stockés les thèmes et autres ressources de Windows (habituellement C:\Windows\Resources mais détecté dynamiquement).
Cette constante n'est disponible que sous Windows XP et supérieur.
$RESOURCES_LOCALIZED
Le répertoire des ressources localisées où sont stockés les thèmes et autres ressources Windows (habituellement C:\Windows\Resources\1033 mais détecté dynamiquement).
Cette constante n'est disponible que sous Windows XP et supérieur.
$CDBURN_AREA
Un répertoire où les fichiers en attente d'être gravés sur CD sont stockés.
Cette constante n'est disponible que sous Windows XP et supérieur.
$HWNDPARENT
La valeur décimale HWND de la fenêtre parent.
$PLUGINSDIR
Le répertoire temporaire créé lors de la première utilisation d'un plugin ou bien lors de l'appel de InitPluginsDir (voir section 4.8.6.1). Ce répertoire est automatiquement supprimé lorsque l'installation se termine. Cela en fait un dossier idéal pour vos fichiers INI pour InstallOptions, pour les images du plugin splash, or ou pour tout autre fichier qu'un plugin peut avoir besion.
$$
Utilisé pour représenter $.
$\r
Utilisé pour représenter un retour chariot (\r).
$\n
Utilisé pour représenter une nouvelle ligne (\n).
$\t
Utilisé pour représenter une tabulation (\t).
${SYMBOL}
Ou SYMBOL est le nom de quelques chose défini globalement, et qui sera remplacé par la valeur de ce symbôle. L'ordre d'appel des symbôles est important.
Name "Programme de test ${VERSION}" !define VERSION "V.1.0"
Ce code va définir le nom de l'installation comme "Programme de test ${VERSION}". La même chose se produit si le symbôle n'a pas été défini.
!define VERSION "V.1.0" Name "Programme de test ${VERSION}"
Ce code défini bien le nom de l'installation en "Programme de test V.1.0"
Pour plus d'informations, voir la Compilation conditionelle.
Les Labels sont les cibles des instructions Goto, ou de diverses instructions de branchement (tel que IfErrors, MessageBox, IfFileExists, et StrCmp). Les Labels doivent être à l'intérieur d'une Section ou d'uneFonction. Les Labels sont visibles localement, ce qui signifit qu'elles ne seront accessibles qu'à l'intérieur de la Section ou de la Fonction dans laquelle elle réside. Pour déclarer un label, faites simplement:
MonLabel:
Les Labels ne peuvent débuter par un -, +, !, $, ou un 0-9. En spécifiant des labels pour les nombreuses instructions qui les requiert, souvenez-vous qu'une chaîne vide ("") et un 0 représentent tous les deux l'instruction suivante (et donc qu'aucun Goto ne se fera). Les Labels commençant par un point (.) sont globales, ce qui signifit que vous pourrez y sauter deopuis n'importe quelle fonction et section (mais ne pourrez pas passer d'un label de désinstallation global depuis l'installation, et vice versa).
Contrairement aux labels, les sauts relatifs sont, comme leur nom l'indique, relatifs à l'emplacement depuis lequel ils sont appelé. Vous pouvez utiliser des sauts relatifs partout ou vous utilisez des labels. Les sauts relatifs sont indiqués par des nombres. +1 saute à l'instruction suivante (déplacement par défaut), +2 sautera une instruction et ira la seconde instruction à partir de celle courante, -2 sautera de deux instructions en arrière, et +10 sautera 9 instructions, allant à la dixième instruction à partir de celle courante.
Une instruction est une commande executée par le script, lorsque l'installation est executée. MessageBox, Goto, GetDLLVersion, FileRead, SetShellVarContext sont toutes des instructions. AddSize, Section, SubSection, SectionEnd, SetOverwrite (et tout ce qui se trouve dans Attributs de la compilation), Name, SetFont, LangString, ne sont pas des instructions car elles sont executées lors de la compilation.
Exemples :
Goto +2 MessageBox MB_OK "Vous ne verrez jamais ce message" MessageBox MB_OK "L'instruction précédente a été sautée, ce message doit apparaitre"
Goto +4 MessageBox MB_OK "Non, pas ici" Goto +3 MessageBox MB_OK "L'homme invisible" Goto -3 MessageBox MB_OK "Terminé"
Note: les sauts relatifs ne fonctionnent pas avec Exch, File, plug-ins (Plugin::Function), InitPluginsDir, GetFileTimeLocal ou GetDLLVersionLocal. N'essayez pas de sauter par dessus elles à l'aide de sauts relatifs, vous n'obtiendrez pas le résultat esconté.
Chaque installation NSIS (non silencieuse) possède un jeu de pages. Chaque page peut être une page interne, ou bien une page personnalisée, créée par une fonction utilisateur (avec InstallOptions par exemple).
Avec les scripts, vous pouvez contrôler l'ordre des pages, l'apparence et le comportement. Vous pouvez sauter des pages, les colorier en blanc, forcer l'utilisateur à rester sur une certaine page tant qu'une condition n'est pas remplie, afficher une page de lisez-moi, afficher des pages personnalisées, et plus encore. Dans cette section, vous apprendrez comment contrôler tout cela.
Il existe deux commandes de base, concernant les pages, Page et UninstPage. La première ajoute une page à l'installation, tandis que la seconde ajoute une page à la désinstallation. Au dessus d'elles se trouvent la commande PageEx qui vous permet d'ajouter une page avec un grand nombre d'options. PageEx vous permet de définir les options de la page en cours de création, au lieu d'utiliser celle par défaut lorsque vous les créez en dehots de PageEx.
L'ordre des pages est défini simplement par l'ordre d'apparition dans le script. Par exemple :
Page license Page components Page directory Page instfiles UninstPage uninstConfirm UninstPage instfiles
Ce code affichera la page de la licence, puis celle de sélection des composants, celle de la sélection du répertoire, et va terminer par celle de l'installation des fichiers, afin de reproduire l'affichage des anciennes installations. La désinstallation affichera en premier la page de confirmation, puis le journal de la désinstallation.
Vous pouvez spécifier la même page plusieurs fois, si vous savez ce que vous faites.
Pour une compatibilité ascendante avec les anciens scripts NSIS, les pages d'installation suivantes vont être ajoutées su aucune page d'installation n'est spécifiée : license (si LicenseText et LicenseData ont été spécifiés), components (si ComponentText a été spécifié et qu'il existe plus d'une section visible), directory (si DirText a été spécifié) ainsi que instfiles. Si aucune page de désinstallation n'est spécifiée, les pages de désinstallations suivantes seront ajoutées : page de confirmation de désinstallation (si UninstallText a été spécifié) ainsi que instfiles. Cette méthode est dépréciée, la conversion des scripts en ajoutant les commandes de gestion des pages est hautement recommandée car cela vous permettra d'utiliser les nouvelles chaînes de langue standard.
Chaque page possède ses propres paramètres définissant son apparence et son comportement. Cette section décrit chaque paramètre utilisé par chaque type de page, et comment le définir. Les fonctions d'interaction sont décrites plus bas et ne sont pas traitées dans cette section.
La liste ci-dessous donne les commandes affectant un certain type de page. A moins d'être mentionné, ces commandes peuvent être utilisées à la fois dans et en dehors d'un bloc PageEx. Si elle est utilisée dans un bloc PageEx, elle n'affecterons que la page en cours de création avec PageEx, sinon elles seront prises par défaut par les autres pages.
Page de la licence
Page de sélection des composants
Page de sélection du répertoire
Page de journalisation de la (dés)installation
Page de confirmation de la désinstallation
Pour définir le titre d'une page, utilisez Caption.
Chaque page interne possède deux fonctions d'interaction : la fonction pre, la fonction show-creation et la fonction leave. La fonction pre est appelée juste avant la création de la page, la fonction show est appelée juste après avoir été créée et avant d'être affichée et la fonction leave est appelée après que l'utilisateur ait pressé le bouton Suivant et avant de quitter la page.
Une page personnalisée ne possède que deux fonctions d'interaction, une qui la créé ce qui est obligatoire, et une fonction leave qui agit comme la fonction leave d'une page interne.
Exemples :
Page license skipLicense "" stayInLicense Page custom customPage "" ": page personnalisée" Page instfiles Function skipLicense MessageBox MB_YES "Voulez-vous passer la page Licence ?" IDNO no Abort no: FunctionEnd Function stayInLicense MessageBox MB_YES "Voulez-vous rester sur la page Licence ?" IDNO no Abort no: FunctionEnd Function customPage GetTempFileName $R0 File /oname=$R0 pageperso.ini InstallOptions::dialog $R0 Pop $R1 StrCmp $R1 "cancel" done StrCmp $R1 "back" done StrCmp $R1 "success" done error: MessageBox MB_OK|MB_ICONSTOP "Erreur InstallOptions :$\r$\n$R1" done: FunctionEnd
custom [fonction_creation] [fonction_leave] [titre] OU (license|components|directory|instfiles|uninstConfirm) [fonction_pre] [fonction_show] [fonction_leave]
Ajoute une page d'installation. Voir les sections ci-dessus pour plus d'informations à propos des pages internes built-in versus personnalisées ainsi qu'à propos des fonctions d'interactions.
custom [fonction_creation] [fonction_leave] [titre] OU (license|components|directory|instfiles|uninstConfirm) [fonction_pre] [fonction_show] [fonction_leave]
Ajoute une page de désinstallation. Voir les sections ci-dessus pour plus d'informations à propos des pages internes built-in versus personnalisées ainsi qu'à propos des fonctions d'interactions.
[un.](custom|uninstConfirm|license|components|directory|instfiles)
Ajoute une page d'nistallation ou de désinstallation si le préfixe un. a été utilisé. Chaque PageEx doit avoir un PageExEnd associé. Dans un bloc PageEx, vous pouvez définir les options spécifiques à la page, et qui ne s'appliqueront pas aux autres pages. Les options non définies pourront être définies en dehors du bloc PageEx, ou la valeur par défaut sera utilisée si rien n'est défini. Pour définir un sous-titre à une page, utilisez Caption ou SubCaption. Pour définir des fonction d'interaction pour une page définie avec PageEx, utilisez PageCallbacks. Voir les sections ci-dessus pour plus d'informations à propos des pages internes built-in versus personnalisées ainsi qu'à propos des fonctions d'interactions.
Exemple d'utilisation :
PageEx license LicenseText "Lisez-moi" LicenseData lisezmoi.rtf PageExEnd PageEx license LicenseData licence.txt LicenseForceSelection checkbox PageExEnd
Termine un bloc PageEx.
([focntion_creation] [fonction_leave]) | ([fonction_pre] [fonction_show] [fonction_leave])
Définit les fonctions d'interaction pour une page définie avec PageEx. Ne peut être utilisé qu'à l'intérieur d'un bloc PageEx. Voir les sections ci-dessus pour plus d'informations à propos des fonctions d'interaction.
Chaque installation de NSIS contient une Section ou plus. Chacunes d'elles sont créées, modifiées et terminées par les commandes suivantes.
taille_ko
Indique à l'installation que la section courante nécessiteun taille additionnelle de "taille_ko" kilo octets d'espace disque. Seulement valide à l'intérieur d'une section (n'aura aucun effet en dehors d'une section ou dans une fonction).
[/o] [([!]|[-])nom_section] [index de la section]
Commence et débute une nouvelle section. Si est vide, omit, ou débute par -, alors il s'agira d'une section requise et l'utilisateur ne pourra pas la désactiver. Si le nom de section est Uninstall, il s'agira alors d'une section spéciale pour la désinstallation. Si l'index de destination est spécifié, le paramètre sera défini avec un index de section (qui pourra être utilisé par SectionSetText etc). Si le nom de la section débute par un !, la section sera en gras. Si /o est présent, alors la section n'est pas sélectionnée par défaut.
Cette commande ferme la section courante.
index_typeinstall [index_typeinstall] [RO]
Cette commande spécifit les types d'installation (voir InstType) qui activeront la section courante. De multiples commandes SectionIn peuvent être spécifiées (elles seront combinées). Si vous spécifiez RO en paramètre, la section sera alors en lecture seule, ce qui signifit qu'elle sera toujorus activée et installée.
[/e] titre [index section destination]
Cette commande insère une sous-section. La sous-section sera fermée avec SubSectionEnd, et devra contenir une ou plusieurs sections. Si le nom de la section débute par un !, la section sera en gras. Si /e est présent, les sous-sections de la section seront développée par défaut. si l'index de section de destination est spécifié, le paramètre sera !defined avec l'index de la section (qui peut être utilisé pour SectionSetText etc). Si le nom est préfixé par 'un.', il s'agira d'une sous-section de désinstallation.
Ferme une sous-section ouverte avec SubSection.
Une section spéciale nommée 'Uninstall' doit être créée afin qu'une désinstallation doit générée. Cette section est sensée supprimer tous les fichiers, clés de la base de registre, etc qui ont été installés par l'installation sur le système. Voici un exemple d'une section de désinstallation simple:
Section "Uninstall" Delete $INSTDIR\Uninst.exe ; auto-suppression (voir l'explication ci-dessous du pourquoi ça marche) Delete $INSTDIR\myApp.exe RMDir $INSTDIR DeleteRegKey HKLM SOFTWARE\myApp SectionEnd
La première instruction Delete marche (supprimer la désinstallation), car la désinstallation est automatiquement copiée dans un répertoire temporaire pour la désinstallation.
Les fonctions ressemblent presque aux Sections dans le fait qu'elles ne contiennent aucune ou plusieurs instructions. Les fonctions ne sont pas appelées par l'installation directement, elle peuvent être appelées par des Sections en utilisant l'instruction Call. Des fonctions d'interaction seront appelées par l'installation lorsque certains évenements se produiront.
Les fonctions doivent être déclarées en dehors d'une Section ou d'une autre Fonction.
[nom_fonction]
Commence et ouvre une nouvelle fonction. Les noms de fonctions commençant par "." (ex. ".NimporteQuoi") sont généralement réservées pour les fonctions d'interaction. Les noms de fonctions commençant par "un." sont des fonctions générées pour la désinstallation. Ainsi, des sections normales d'installation ne pourront pas appeller des fonctions de désinstallation, et la section de désinstallation ne pourra pas appeler des fonctions normales d'installation.
Cette commande ferme la fonction ouverte.
Vous pouvez utiliser des fonctions d'interaction qui possèdent leur nom propre, et qui seront appelées pendant l'installation à certains à certains moments prédéfinis. Voici ce-dessous la liste des fonctions disponibles:
Cette fonction est appeléejuste avant que la première page ne soit chargées et que la fenêtre d'installation ne soit affichée, vous permettant alors de personnaliser l'interface.
Exemple:
!include "${NSISDIR}\Include\WinMessages.nsh" Function .onGUIInit # 1028 est l'id du contrôle du texte de la marque GetDlgItem $R0 $HWNDPARENT 1028 CreateFont $R1 "Tahoma" 10 700 SendMessage $R0 ${WM_SETFONT} $R1 0 # définit la couleur d'arrière-plan à blanc et la couleu du texte à rouge SetBkColor $R0 0x00FFFFFF FunctionEnd
Cette fonction sera appelée lorsque l'installation aura presque terminée de s'initialiser. Si la fonction '.onInit' appelle Abort, l'installation se fermera alors automatiquement.
Voici quelques exemples de ce qui peut être utilisé:
Function .onInit MessageBox MB_YESNO "Ceci démarrera l'installation. Continuer ?" IDYES NoAbort Abort ; fait fermer l'installation NoAbort: FunctionEnd
ou :
Function .onInit ReadINIStr $INSTDIR $WINDIR\wincmd.ini Configuration InstallDir StrCmp $INSTDIR "" 0 NoAbort MessageBox MB_OK "Windows Commander non trouvé. Impossible d'obtenir un répertoire pour l'installation." Abort ; fait fermer l'installation NoAbort: FunctionEnd
Cette fonction est appelée lorsque l'utilisateur clique sur le bouton 'Annuler', après un echec de l'installation (s'il ne peut extraire un fichier, ou que le script d'installation utilise la commande Abort).
Exemple:
Function .onInstFailed MessageBox MB_OK "Vous serez plus chanceux la prochaîne fois." FunctionEnd
Cette fonction est appelée lorsque l'installation a réussie, juste avant que la fenêtre d'installation ne se ferme (ce qui peut être après que l'utilisateur ait cliqué sur 'Fermer' si AutoCloseWindow est défini à false).
Exemple:
Function .onInstSuccess MessageBox MB_YESNO "Bravo, ca a marché. Afficher le lisez-moi ?" IDNO NoReadme Exec notepad.exe ; fait afficher le lisezmoi ou bien ce que vous voulez. NoReadme: FunctionEnd
Cette fonction est appelée juste après la fermeture de l'installation. Utilisez-la pour libérer, si besoin est, tous les plug-ins relatifs à l'interface utilisateur.
Cette fonction est appelée lorsque la position de la souris au dessus des sections est modifiée. Cela vous permet de définir une description pour chaque section par exemple. L'id de la section sur laquelle la souris est positionnée est stockée, temporairement, dans $0.
Exemple:
Function .onMouseOverSection FindWindow $R0 "#32770" "" $HWNDPARENT GetDlgItem $R0 $R0 1043 ; description StrCmp $0 0 "" +2 SendMessage $R0 ${WM_SETTEXT} 0 "description de la première section" StrCmp $0 1 "" +2 SendMessage $R0 ${WM_SETTEXT} 0 "description de la seconde section" FunctionEnd
Appelée lorsque la sélection est modifiée dans la page des composants. Utile lorsqu'elle est combinée avec SectionSetFlags et SectionGetFlags.
Cette fonction est appelée lorsque l'utilisateur appuye sur le bouton 'Annuler', alors que l'installation n'est pas encore réellement arrêtée. Si cette fonction appelle Abort, l'installation ne sera pas abandonné.
Exemple:
Function .onUserAbort MessageBox MB_YESNO "Abandonner l'installation ?" IDYES NoCancelAbort Abort ; empeche l'installation de se fermer NoCancelAbort: FunctionEnd
Cette fonction permet de contrôler si un répertoire d'installation est valide ou pas pour votre installation. Ce code sera appelée à chaque modification du répertoire d'installation par l'utilisateur, et ne devrait pas afficher des c*** telles qu'une MessageBox ou autre. Si la fonction appelle Abort, le répertoire d'installation stocké dans $INSTDIR restera incorrect.
Example:
Function .onVerifyInstDir IfFileExists $INSTDIR\Winamp.exe PathGood Abort ; si $INSTDIR n'est pas un répertoire winamp, ne laissez rien installer dedans PathGood: FunctionEnd
Cette focntion est appelée juste avant que la première page ne soit chargée, et même avant que la fenêtre de la désinstalaltion ne soit affichée, vous permettant de personnaliser l'interface.
Allez voir .onGUIInit pour un exemple.
Cette fonction sera appelée lorsque l'installation aura presque terminée de s'initialiser. Si la fonction '.onInit' appelle Abort, l'installation se fermera alors automatiquement. Notez que cette fonction peut vérifier et/ou modifier $INSTDIR si nécessaire.
Voici deux exemples d'utilisation de cette fonction:
Function un.onInit MessageBox MB_YESNO "Ceci lancera la désinstallation. Continuer ?" IDYES NoAbort Abort ; fait fermer la désinstallation. NoAbort: FunctionEnd
ou:
Function un.onInit IfFileExists $INSTDIR\myfile.exe found Messagebox MB_OK "Dossier de désinstallation incorrect" Abort found: FunctionEnd
Cette fonction est appelée lorsque l'utilisateur clique sur le bouton 'Annuler', après un echec de l'installation (si le script d'installation utilise la commande Abort ou qu'une commande a rencontré une erreur)).
Exemple:
Function un.onUninstFailed MessageBox MB_OK "Pas de chance..." FunctionEnd
Cette fonction est appelée lorsque l'installation a réussie, juste avant que la fenêtre d'installation ne se ferme (ce qui peut être après que l'utilisateur ait cliqué sur 'Fermer' si AutoCloseWindow est défini à false).
Exemple:
Function un.onUninstSuccess MessageBox MB_OK "Bravo, vous l'avez viré." FunctionEnd
Cette fonction est appelée juste après la fermeture de la désinstallation. Utilisez-la pour libérer, si besoin est, tous les plug-ins relatifs à l'interface utilisateur.
Cette fonction est appelée lorsque l'utilisateur appuye sur le bouton 'Annuler', alors que l'installation n'est pas encore réellement arrêtée. Si cette fonction appelle Abort, l'installation ne sera pas abandonnée.
Exemple:
Function un.onUserAbort MessageBox MB_YESNO "Abandonner la désinstallation ?" IDYES NoCancelAbort Abort ; fait que la désinstallation ne s'arretera pas NoCancelAbort: FunctionEnd
Les commandes ci-dessous vous toutes ajuster des attributs de l'installation. Ces attributs contrôlent l'apparence et les fonctions de l'installation, ceci incluant autant les pages affichées durant l'installation que les textes affichés dans chaque partie de chaque page, le nom de l'installation, l'icône utilisée, le répertoire d'installation par défaut, le fichier généré, et bien plus. Notez que ces attributs peuvent être définis n'importe ou dans le fichier, exception faite dans une Fonction ou bien dans une Section. A l'exception de InstallDir, aucun de ces attributs n'autorisent l'utilisation de variables autres que $\r et $\n dans leur valeurs.
Les valeurs par défaut sont en gras
(left|right|top|bottom) (largeur|hauteur) [décalage]
Ajoute une image de marque en haut, en bas, à gauche, à droite dans l'installation. Sa taille est fixée suivant la largeur/hauteur spécifiée, la largeur/hauteur de l'installation et la police utilisée. La taille finale ne sera pas toujorus celle que vous aurez demandé. Jetez un oeil au résultat pour connaitre la taille utilisée. Comme cela dépend de la police, vous devriez utiliser SetFont avant AddBrandingImage. La valeur par défaut du décalage est 2.
true|false
Contrôle si les installations sont autorisées dans le répertoire racine d'un lecteur, ou directement dans un dossier réseau. Définissez-le en 'true' (vrai) pour modifier le comportement par défaut (sans risque), qui empêche les utilisateurs de sélectionner C:\ ou \\serveur\partage comme dossier d'installation (et plus tard, de désinstallation). Pour personnaliser plus en détails la page de sélection du répertoire, voir .onVerifyInstDir.
true|false
Définit si oui ou non la fenêtre d'installation se ferme automatiquement à la fin de l'installation. Peut être 'false' (faux) ou 'true' (vrai). C'est modifiable dans une section en utilisant SetAutoClose.
[off|(couleur_haut couleur_bas [couleur_texte|notext])]
Spécifit si l'on utilise ou pas une fenêtre dégradée en arrière-plan. Si l'option est en 'off' (désactivée), l'installation n'affichera pas d'arrière-plan, si aucun paramètre n'est spécifié, un dégradé noir vers bleu est utilisé, sinon, les couleur_haut et couleur_bas serviront à constituer le dégradé. Couleur_haut et couleur_bas sont spécifié sous forme RRGGBB (en hexadécimal, comme en HTML, en enlevant le '#' précédant, depuis que # peut être utilisé pour les commentaires). 'couleur_texte' peut être spécifié de la même manière, ou 'notext' (sans texte) peut être spécifié pour désactivé le gros texte mis sur arrrière-plan.
/TRIM(LEFT|RIGHT|CENTER) texte
Définit le texte affiché (par défaut, 'Nullsoft Install System vX.XX fr') en bas de la fenêtre d'installation. Si vous spécifiez une chaîne vide (""), la valeur par défaut sera utilisée (mais pouvez utiliser " " pour obtenir une chaîne vide). Si cela vous importe peu, laissez la valeur par défaut, afin que tout le monde sache pourquoi l'installation tue. héhé. Utilisez /TRIMLEFT, /TRIMRIGHT ou /TRIMCENTER pour adapter la taille du contrôle à celle de la chaîne.
titre
S'il est utilisé en dehors d'un bloc PageEx, il définit le texte dans la barre de titre de l'installation. Par défaut, il s'agit de 'Installation de Nom', ou Nom est définie par la commande Name. Il est possible de la redéfinir en 'MonApp Installation' ou n'importe quoi.Si vous spécifiez une chaîne vide (""), la valeur par défaut sera utilisée (mais pouvez utiliser " " pour obtenir une chaîne vide).
S'il est utilisé dans un bloc PageEx, il définit le sous-titre de la page courante.
fenêtre fichier_ui.exe
Remplace la fenêtre (IDD_LICENSE, IDD_DIR, IDD_SELCOM, IDD_INST, IDD_INSTFILES, IDD_UNINST ou IDD_VERIFY) par une fenêtre possédant le même ID de ressource dans fichier_ui.exe. Vous pouvez aussi spécifier 'all' comme fenêtre, si vous désirez modifier toutes les fenêtres en une seule fois depuis le même fichier UI. Vous trouverez quelques exemples d'UIs dans le répertoire Contrib\UIs du dossier d'installation de NSIS.
image.bmp
Défini l'image qui définira chaque état dans l'arborescence des composants.
Cette image doit avoir une taille de 96x16 pixels, pas plus de 8bpp (256 couleurs) et contenir six images en 16x16 pour les différents états (dans l'ordre : masque de sélection, non cochée, cochée, grisée, décochée & lecture-seule, cochée & lecture-seule). Utilisez du magenta comme couleur de masque (cette zone sera transparente).
texte_terminer
Remplace le texte par défaut ("Terminer") qui est affiché à la fin de l'installation si le paramètre est spécifié. Sinon, la valeur par défaut est utilisée.
[texte] [soustexte] [soustexte2]
Utilisé pour modifier le texte par défaut dans la page des composants.
texte : Texte au dessus des contrôles, à droite de l'icône d'installation.
soustexte : Texte près de la sélection du type d'installation.
soustexte2 : Texte à gauche de la liste des composants, en dessous des types d'installation.
Le texte par défaut sera utilisé si la chaîne spécifiée est vide ("").
on|off|force
Spécifie si ou pas l'installation doit effectuer un CRC (contrôle d'erreur) sur elle-même avant d'autoriser l'installation. Les options correctes sont 'on' (actif), 'force' (forcer) et 'off' (inactif). Notez que si l'utilisateur utilise /NCRC (sauf si vous utilisez 'force') en ligne de commande lors de l'execution , le CRC ne s'effectuera pas, et l'utilisateur sera autorisé à utiliser une installation (potentiellement) corrompue.
texte_afficher_détails
Remplace le texte du bouton "Détails", si le paramètre est spécifié (sinon, la valeur par défaut est utilisée).
[texte] [soustexte] [texte_bouton_parcourir] [texte_fenetre_parcourir]
Utilisé pour modifier les textes par défaut sur la page de sélection du répertoire d'installation.
texte : Texte au-dessus des contrôles, à droite de l'icône d'installation.
soustexte : Texte dans la zone de sélection du répertoire.
bouton_parcourir : Texte du bouton "Parcourir...".
texte_fenetre_parcourir : Texte dans la fenêtre "Sélectionner un dossier", apparaissant après avoir cliqué sur le bouton "Parcourir".
Le texte par défaut sera utilisé si la chaîne spécifiée est vide ("").
variable_utilisateur(répertoire entrée/sortie)
Spécifie quelle variable doit être utilisée pour contenir le répertoire sélectionné. Cette variable doit aussi contenir la valeur par défaut. Cela vous permet de créer facilement deux pages de sélection de répertoires, sans vous demander de gérer la variable $INSTDIR dans tous les sens. Cela ne peut être utilisé que dans une PageEx, ainsi que pour les pages directory et uninstConfirm.
auto|leave
Si `DirVerify leave' est utilisé, le bouton Suivant ne sera pas désactivé si le répertoire d'installation n'est pas valide ou bien qu'il n'y a pas suffisement d'espace libre disponible. Un flag que vous pourrez lire dans la fonction leave en utilisant GetInstDirError sera par contre défini.
texte_erreur_fichier
Remplace le texte par défaut, apparaissant lorsque survient une erreur d'écriture dans un fichier. Cette chaîne peut contenir une référence à $0, qui sera le nom du fichier ($0 est temporairement modifié en cette valeur). Exemple: "Tu veux écrire dans le fichier $0 ? $\r$\nTiens, bouffe !".
[path\]icone.ico
Définit l'icône de l'installation. Chaque icône dans le fichier sera inclu dans l'installation. Notez que si vous utilisez des icônes différentes pour l'installation et la désinstallation, les tailles des fichiers et les structures des icônes doivent correspondrent ; Dans le cas contraire, la génération échouera.
texte_bouton_installer
Modifie le texte du bouton qui affiche normalement "Installer". Si aucun paramètre n'est spécifié, le texte par défaut sera utilisé.
/windows | (avant-plan arrière-plan)
Défini les couleurs à utiliser pour l'écran d'information (par défaut : 00FF00 000000. Utilisez le modèle RRGGBB (en hexadécimal, comme en HTML, en enlevant le '#' de tête, puisque # peut être utilisé pour les commentaires). Notez que si "/windows" est spécifié comme seul paramètre, les couleurs des fenêtres par défaut seront utilisées.
rep_install_defaut
Définit le répertoire d'installation par défaut. Voir la section Variables pour les variables pouvant être utilisée pour faire cette chaîne (et spécialement $PROGRAMFILES). Notez que la partie de cette chaîne suivant le dernier \ sera utilisé si l'utilisateur sélectionne 'Parcourir', et peut être ajouté dans la chaîne au moment de l'installation (pour le désactiver, terminez le nom du répertoire par un \ (ce qui requiert un paramètre entier entre guillemets)). Si cela n'a aucun sens pour vous, jouez un peu avec le bouton Parcourir pour voir !
clé_racine sous-clé clé
Cet attribut indique à l'installation de vérifier l'existence d'une chaîne en registre, et l'utiliser comme répertoire d'installation si celle ci est valide. Si l'attribut est présent, il écrasera l'attribut InstallDir si la clé de la base de registre est valide, sinon, il laissera la valeur de InstallDir par défaut. Lors de la vérification dans le registre, cette commande enlèvera automatiquement les guillements. Si la chaîne se termine par ".exe", il enlevera automatiquement le nom de fichier dans la chaîne(ex. si la chaîne est "C:\program files\poop\poop.exe", il se servira de "C:\program files\poop"). Pour une configuration plus avancée du répertoire d'installation, définissez $INSTDIR dans .onInit.
[flag [...]]
Les valeurs correctes pour le flag sont "smooth" (adoucir la barre de progression) ou "colored" (colorer la barre de progression avec les couleurs définies par InstallColors). Exemples: "InstProgressFlags" (avec le look de la vielle école Windows), "InstProgressFlags smooth" (nouveau look doux), "InstProgressFlags smooth colored" (un look doux et coloré). Note: ni "smooth", ni "colored" ne fonctionnent avec XPStyle lorsque l'installation fonctionne sous Windows XP avec un thème moderne.
nom_type_install | /NOCUSTOM | /CUSTOMSTRING=texte | /COMPONENTSONLYONCUSTOM
Ajoute une type d'installation dans la liste, ou désactive le type d'installation "Personnalisée". Il peut y avoir jusqu'à 32 types, chacun avec son propre nom. Au lieu d'avoir des noms "définis en dur", vous pouvez utiliser des variables utilisateurs qui seront défini à l'exécution. Cela vous permet de modifier InstType dynamiquement. Un autre moyen de modifier InstType à l'exécution est la commande InstTypeSetText. La différence est que avec InstTypeSetText, vous n'avez pas besoin d'utiliser vos précisues variables utilisateurs. Le premier type est celui par défaut (généralement 'Normale'). Chaque type est numéroté, en commencant par 1. Voir SectionIn pour plus d'informations sur comment ces nombres sont utilisés. Si l'option /NOCUSTOM est spécifiée, alors le type "Personnalisée" sera désactivé, et l'utilisateur devra choisir l'un des types pré-définis. Ainsi, si l'option /CUSTOMSTRING est spécifié, le paramètre écrasera le texte "Personnalisée". De même, si l'option /COMPONENTSONLYONCUSTOM est spécifiée, la liste des composants ne sera affichée que si le type "Personnalisée" est sélectionné.
couleur | /gray | /windows
Définit la couleur d'arrière-plan de la licence. La couleur spécifiée est de la forme RRVVBB (en héxadecimal, ou en HTML avec le '#' de tête en moins, puisque # peut être utilisé pour les commentaires). La valeur par défaut es '/gray'. Vous pouvez aussi utiliser la couleur définie par Windows en utilisant '/windows'.
donnees_licence.(txt|rtf)
Spécifie un fichier texte ou RTF qui contiendra la licence que lira l'utilisateur. Omettez-le pour ne pas afficher le licence. Notez que le fichier doit être au format diabolique "Texte MSDOS" (\r\n, super!). Pour définir une licence multilingue, utilisez LicenseLangString.
Si vous créez votre fichier de licence au format RTF, il est recommandé que vous l'éditiez avec WordPad, et non avec MS Word. L'utilisation de WordPad vous permettra d'avoir des fichiers plus légers.
(checkbox [texte_accepter] | radiobuttons [texte_accepter] [décliner] | off)
Spécifit si la licence affichée doit être explicitement acceptée ou pas. Cela peut être fait, soit par l'intermédiaire d'une case à cocher, soit par des boutons radio. Par défaut, le "bouton suivant" est désactivé et ne sera activé que si la case est cochée, ou que le bouton de droite est sélectionné. Si désactivé est spcifié, le "bouton suivant" est activé par défaut.
[ texte [texte_bouton]]
Utilisé pour modifier les textes par défaut de la page de la licence.
texte : Texte au-dessus des contrôles, à droite de l'icône d'installation.
texte_bouton : Texte du bouton "J'accepte".
Le texte par défaut sera utilisé si la chaîne spécifiée est vide ("").
[texte_bouton_retour [texte_bouton_suivant] [texte_bouton_annuler] [texte_bouton_fermer]]
Remplace les chaînes par défaut des quatres boutons (< Retour, Suivant >, Annuler et Fermer). Si vous spécifiez une chaîne vide (""), la valeur par défaut sera utilisée (vous pouvez utiliser " " pour obtenir une chaîne vide).
nom [nom_avec_double_et_commerciaux]
Défini le nom de l'installation. Le nom est souvent simplement le nom du produit, tel que 'MonApp' ou 'CrapulSoft MonApp'. Si vous avez plusieurs et commerciaux (&) dans le nom, définissez le second paramètre avec le même nom, avec des et commerciaux doublés. Par exemple, si votre nom de produit est "Mur & Paix", utilisez:
Name "Mur & Paix" "Mur && Paix"
Si vous avez des et commerciaux dans le nom et utilisez un LangString pour le nom, vous devrez en créer un second avec des et commerciaux doublés à utiliser en second paramètre.
[chemin\]installation.exe
Spécifit le fichier qui sera utilisé par MakeNSIS pour y créer l'installation. Il s'agit juste du fichier dans lequel MakeNSIS va écrire, sans affecter l'installation en elle-même.
police taille
Définit la police de l'installation. Souvenez-vous que la police choisit devra être présente sur la machine utilisée. N'utilisez pas de police rares que vous êtes les seuls à posséder.
hide|show|nevershow
Définie si les détails de l'installation sont montrés ou pas. Peut être 'hide' (caché), par défaut, pour chacher les détails, autorisant l'utilisateur à pouvoir les afficher, 'show' (affiché) pour les afficher, ou bien 'nevershow' (toujours cachés), pour empecher l'utilisateur à les voir. Notez que les sections peuvent écraser ce paramètres à l'aide de SetDetailsView.
hide|show|nevershow
Définit si les détails de la désinstallation sont montrés ou pas. Peut être 'hide' (caché), par défaut, pour chacher les détails, autorisant l'utilisateur à pouvoir les afficher, 'show' (affiché) pour les afficher, ou bien 'nevershow' (toujours cachés), pour empecher l'utilisateur à les voir. Notez que les sections peuvent écraser ce paramètres à l'aide de SetDetailsView.
normal|silent|silentlog
Spécifie si oui ou non l'installation sera silencieuse. Dans le cas de 'silent' (silencieux) ou de 'silentlog' (silencieux, avec journal), toutes les sections possédant le flag SF_SELECTED seront installées silencieusement (vous pouvez définir ce flag en utilisant SectionSetFlags), sans écran de sortie (les boites de dialogues seront tout de même affichées en cas d'erreur, et le script peut toujours afficher ce qu'il voudra). Notez que si cela est défini en 'normal' et que l'utilisateur lance l'installation avec un /S (respectez la casse) en ligne de commandes, cela reviendra au même que s'il avait utilisé SilentInstall 'silent'. Note : voir aussi LogSet
Voir section 4.12 pour plus d'informations.
normal|silent
Spécifit si oui ou non la désinstallation sera silencieuse. Dans le cas de 'silent' (silencieux) ou de 'silentlog' (silencieux, avec journal), toutes les sections seront désinstallées automatiquement, sans écran de sortie (les boites de dialogues seront tout de même affichées en cas d'erreur, et le script peut toujours afficher ce qu'il voudra). Notez que si cela est défini en 'normal' et que l'utilisateur lance la désinstallation avec un /S en ligne de commande, cela reviendra au même que s'il avait utilisé SilentInstall 'silent'. Note : voir aussi LogSet.
Voir section 4.12 pour plus d'informations.
[texte_requis [texte_dispo]]
Si les paramètres sont spécifiés, cela écrase les valeurs par défaut ("Espace requis: " et "Espace disponible: "). Si "none" est spécifié, aucun texte ne sera affiché.
[numero_page sous-titre]
Ecrase les sous-titres de chaque page d'installation (0=": Acceptation de la licence",1=": Options d'installation",2=": Répertoire d'installation", 3=": Installation des fichiers", 4=": Terminé"). Si vous spécifiez une chaîne vide (""), le texte par défaut sera utilisé (vous pouvez par contre spécifier " " pour obtenir une chaîne vide).
Vous pouvez aussi définir un sous-titre (ou écraser celui par défaut) en utilisant Caption dans un bloc PageEx.
texte_bouton
Modifit le texte du bouton qui affiche normalement "Désinstaller". Si aucun paramètre n'est spécifié, le texte par défaut sera utilisé. Voir aussi WriteUninstaller (en remplacement de UninstallEXEName).
titre
Définit ce qu'afficheront les barres de titre pendant la désinstallation. Par défaut, ce sera 'Désinstalation de Nom', ou Nom est spécifié par la commande Name. Vous pouvez aussi le remplacer par 'Pour virer mon appli' ou n'importe quoi d'autre. Si vous spécifiez une chaîne vide (""), la valeur par défaut sera utilisée (vous pouvez utiliser " " pour obtenir une chaîne vide).
[chemin\]icone.ico
Définit l'icône de la désinstallation. Ce fichier icône doit avoir la même structure que le fichier icône de l'installation.
numero_page sous-titre
Ecrase les sous-titres de chaque page de la désinstallation (0=": Confirmation",1=": Désinstallation des fichiers",2=": Terminé"). Si vous spécifiez une chaîne vide (""), la valeur par défaut sera utilisée (vous pouvez utiliser " " pour obtenir une chaîne vide).
Vous pouvez aussi définir un sous-titre (ou écraser celui par défaut) en utilisant Caption dans un bloc PageEx.
texte [soustexte]
Spécifit les textes surla première page de la désinstallation.
on|off
Défini si oui ou nom l'icône de l'installation est affichée
on|off
Défini si un manifeste XP sera ou pas ajouté à l'installation. Un manifeste XP permettent aux contrôles de l'installation d'utiliser le nouveau style d'XP lorsque l'utilisateur fonctionne sous Windows XP. Ceci affecte aussi la désinstallation.
Les commandes suivantes modifient le code généré et la méthode de compression du compilateur. Ces commandes sont valides n'importe ou dans le script, et affectent les lignes après la commande (à moins d'être surchargé par un autre appel à la commande).
on|off
Cette commande spécifie si l'utilisateur peut être capable ou pas de sauter un fichier. Un utilisteur a la possibilité de sauter un fichier si SetOverwrite on est utilisé (par défaut) and et que l'installation ne peut pas ouvrir un fichier en écriture lorsqu'il essaye d'extraire un fichier (voir la commande File). Si off est utilisé, la bouton Ignorer qui permet à l'utilisateur de sauter le fichier ne sera pas affiché et l'utilisateur n'aura la possibilité que d'abandonner l'installation (bouton Annuler) ou bien de réessayer d'ouvrir le fichier en écriture (bouton Réessayer). Si on est utilisé, l'utilisateur aura la possibilité de sauter le fichier (le flag d'erreur sera levé - voir SetOverwrite).
taille_tampon_en_mo
Cette commande définit la taille des tampons de fichiers internes du compilateur. Cette commande vous autorise à contrôler l'utilisation mémoire du compilateur en limitant la part d'un fichier donné sera chargé en mémoire à la fois. Puisque le compilateur nécessite à la fois une entrée et une sortie, le double de la taille mémoire spécifiée pourra être utilisé pour les tampons de fichiers. Cette commande ne limite pas le tampons de compression qui peuvent utiliser plusieurs autres Mo, et ne limite pas non plus les autres tampons internes du compilateur, qui eux doivent au plus atteindre 1 Mo. Spécifier une petite valeur peut décroitre les performances. Spécifier un nombre important peut paralyser les ressources systèmes et forcer le compilateur à annuler le processus de compilation. La valeur par défaut est 32Mo.
auto|force|off
Cette commande défini l'option de compression utilisée par l'installation pour déterminé si oui ou non les données sont compressées. Typiquement, l'option SetCompress sera effective sur les commandes suivantes, et le dernier SetCompress contenu dans un fichier déterminera aussi si oui ou non la section d'information de l'installation est compressée. Si l'option est en 'auto' (auto), alros les fichiers sont compressés si la taille compressée est inférieure à la taille décompressée. Si l'option est en 'force' (forcer), alors la compression est utilisée tout le temps. Si l'option est en 'off' (désactivée), alors la compression n'est pas utilisée (ce qui peut être plus rapide).
Notez que cette option n'a aucun effet lorsqu'une compression solide est utilisée, ce qui est paramètré par défaut pour BZIP2 et LZMA.
zlib|bzip2|lzma
Cette commande définit l'algorithme de compression utilisé pour compresser les fichiers/données de l'installation.
Trois méthodes de compression sont proposées : ZLIB, BZIP2 et LZMA.
ZLib (par défaut) utilise une compression de "dégonflage" qui est très simple et efficace. Avec le niveau de compression par défaut, il utilise environ 300 Ko de mémoire.
BZIP2 donne souvent un meilleur ration de compression que ZLIB, mais est un peu plus lent et utilise plus de mémoire. Avec le niveau de compression par défaut, il utilise environ 4 Mo de mémoire.
LZMA est une nouvelle méthode de compression donnant de très bons ratios de compression. La vitesse de décompression est élevée (10-20 Mo/s avec un processeur cadencé à 2 GHz), mais la vitesse de compression est plus basse. La taille mémoire utilisée lors de la décompression est la taille du dictionnaire plus quelques Kos, et est par défaut de 8 Mo.
taille_dict_mo
Définit la taille du dictionnaire en Mo utilisé par le compresseur LZMA (par défaut de 8 Mo).
on|off
Cette commande demande au compilateur d'optimiser ou pas les blocs de données. L'optimisation des blocs de données font que le compilateur va vérifier si une donnée qui va être ajoutée dans le bloc de données n'est pas déjà présente, et si tel est le cas, va simplement la référencer, contrairement à ajouter (peut diminiuer la taille de quelques bits). Il est recommandé de laisser cette option activée.
on|off
Cette commande définit l'heure/date du fichier utilisée par la commande File pour déterminer si l'on doit ou pas garder la dernière heure/date écrite dans le fichier. Les paramètres correctes sont 'on' (activé) et 'off' (désactivé). 'on' est la valeur par défaut.
on|off|try|ifnewer|ifdiff|lastused
Cette commande défini l'option d'écrasement, utilisée par la commande File pour déterminer si le fichier peut écraser un fichier déjà existant. Si l'option est en 'on' (activée), les fichiers seront écrasés (valeur par défaut). Si l'option est en 'off' (désactivée), les fichiers déjà présents ne seront pas écrasés. Si l'option est en 'try' (essayer), les fichiers sont, si possible, écrasés (ce qui signifit que s'il est impossible d'écraser le fichier, il est passé, sans aucune interaction de l'utilisateur). Si l'option est en 'ifnewer' (si nouveau), alors les fichiers ne sont remplacés que dans le cas ou le fichier existant est plus ancien que le fichier installé. Si l'option est à 'ifdiff', alors les fichiers ne sont écrasés que si le fichier existant est plus vieux ou plus récent que le nouveau fichier. Notez qu'en mode 'ifnewer' ou 'ifdiff', la date du fichier de destination est défini sans tenir compte de la commande SetDateSave)
manual|alwaysoff
Cette commande lève le flag de libération des plugins après un CallInstDLL et un appel de fonction du plugin (dll::fonct). Le paramètrer à toujours_désactivé/alwaysoff fera qu'il se comportera comme si ous aviez ajouté /NOUNLOAD à chaque CallInstDLL et appel de plugin. Le mettre en manuel/manual ne le déchargera pas que si vous avez spécifié /NOUNLOAD.
[/LANG=id_langue] clé valeur
Ajoute un champ dans l'onglet Version de la fenêtre Propriétés du fichier. Cela peut être soit un champs fournit par le système, soit un champ personnalisé. Les champs suivants sont fournis par le système :
Les noms de ces champs sont traduits sur le système cible, alors que les champs utilisateurs resteront intraduits.
[chaine_version_X.X.X.X]
Ajoute la version du produit en haut de la liste des Informations de version.
Les instructions utilisées par NSIS dans ses scripts sont une sorte de croisement entre le PHP et l'assembleur. Il n'y a aucune construction réelle de language de haut niveau, mais les instructions en elles-mêmes sont (dans leur majeure partie) de haut niveau, et vous avez de solides possibilités de traitement des chaines de caractères (ex. vous n'avez plus besoin de vous inquiéter lors de la concaténation de chaînes de caractères, etc). Vous avez en gros 25 registres (20 généralistes, 5 spéciaux), ainsi qu'une pile.
[/REBOOTOK] fichier
Supprime fichier (qui peut être un fichier ou bien un filtre, mais doit être spécifié à l'aide d'un nom de répertoire complet) sur le système cible. Si /REBOOTOK est sépcifié, et que le fichier ne peut être supprimé, alors le fichier sera supprimé au reboot (redémarrage) du système -- si le fichier doit être supprimé au redémarrage, le flag de reboot est levé. Le flag d'erreur est levé si les fichier sont trouvés, mais ne peuvent être supprimés. Le flag d'erreur n'est pas levé si l'on essaye de supprimé un fichier qui n'existe pas.
commande
Execute le programme spécifié et continue immédiatement. Notez que le fichier spécifié doit existersur le système cible, et non sur le système utilisé à la compilation. $OUTDIR est utiisé comme répertoire de travail. Le flag d'erreur sera levé si le processus ne peut pas être lancé. Notez que, si la commande contient des espaces, vous devrez la faire contenir dans des guillemets délimitateurs pour ne pas la confondre avec les paramètres. ex.: Exec '"$INSTDIR\commande.exe" parametres'. Si vous n'utilisez pas les guillemets, cela ne fonctionnera pas sous 9x avec ou sans paramètres.
action commande [parametres] [SW_SHOWNORMAL | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED]
Execute le programme spécifié en utilisant ShellExecute. Notez que l'action est très souvent "open" (ouvrir), "print" (imprimer), etc, mais peut être une chaîne vide (action par défaut). Les paramètres et le type d'affichage sont optionnels. $OUTDIR est utilisé comme répertoire de travail. Le flag d'erreur est levé dans le cas ou le processus ne peut être lancé.
commande [var_utilisateur(code de sortie)]
Execute le programme spécifié et attend que le processus executé se termine. Voir Exec pour plus d'informations. Si aucune variable n'est spécifié, ExecWait lève un flag d'erreur si le programme retourne un code d'erreur différent de zéro, ou s'il se produit une erreur. Si une variable est spécifiée, ExecWait placera le code de retour dans la variable (et ne lèvera de flag d'erreur que si une erreur survient; si une erreur survient, le contenu de la variable utilisateur sera indéfini). Notez que, si la commande intègre des espaces, vous devrez la mettre entre guillemets pour les séparer. ex : ExecWait '"$INSTDIR\commande.exe" parametres'. Si vous n'utilisez pas les guillemets, cela ne fonctionnera pas sous 9x avec ou sans paramètres.
[/nonfatal] [/a] ([/r] (fichier|caract_spéciaux) [...] | /oname=fichier.dat dansFichier.dat)
Ajoute un(des) fichier(s) a extraire dans le répertoire de destination courant ($OUTDIR).
[/REBOOTOK] fichier_source fichier_dest
Renomme le fichier_source en fichier_dest. La fonction est similaire à l'API win32 MoveFile, ce qui signifit que vous pouvez déplacer un fichier situé n'importe où sur le système, vers un emplacement n'importe où sur le système, et que vous pouvez déplacer un répertoire vers un autre emplacement du lecteur. Si /REBOOTOK est spécifié, et que le fichier ne peut être écrit, alors le fichier sera déplacé au reboot (redémarrage) du système -- si le fichier doit être déplacé au redémarrage, le flag de reboot sera levé. Le flag d'erreur est levé si le fichier ne peut être renommé (et que /REBOOTOK n'est pas utilisé) ou que le fichier source n'existe pas.
[/nonfatal] [/r] fichier [fichier...]
Réserve un fichier dans le bloc de données pour une utilisation ultérieure. Comme les fichiers sont ajoutés dans l'ordre ou il sont appeklés dans le script, les fichiers utilisés dans la fcontion .onInit, par exemple, peuvent être ajoutés en dernier et ralentir le chargement de l'instalaltion. D'où l'utilité de cette commande qui vous autorise à accélérer le processus de chargement en incluant le fichier en haut du bloc de données, et n'obligera pas NSIS à le rechercher dans tout le bloc de données compressé.
Voir File pour plus d'informations sur le paramètre.
[/r/REBOOTOK] répertoire
Supprime le répertoire spécifié (qui doit être un nom de répertoire complet). Sans /r, le répertoire ne sera supprimé que s'il est vide. Si /r est spécifié, la suppression sera récursivement : ainsi, tous les fichiers et sous-répertoires seront supprimés. Si /REBOOTOK est spécifié que le répertoire ne peut pas être écrasé, alors le répertoire sera supprimé au redémarrage du système -- si le répertoire est supprimé au redémarrage, le flag de redémarrage est levé. Le flag d'erreur est levé si le répertoire ne peut pas être supprimé.
destination
Défini le répertoire de destination ($OUTDIR) et le créé (récursivement, si nécessaire), s'il n'existe pas. Doit etre un chemin complet et est habituellement $INSTDIR (vous pouvez spécifier $INSTDIR si vous êtes trop fainéants pour un "-").
Dans toutes les instructions registre ci-dessous, utilisez une chaîne vide (symbolisée par deux guillemets sans rien entre - "") comme le nom de la clé affichée comme "Par défaut" dans regedit.exe.
fichier_ini section
Supprime une section entière [section] dans fichier_ini. Si la section ne peut pas être supprimée du fichier ini, le flag d'erreur est levé. Le flag d'erreur n'est pas levé si la section n'a pas pu être trouvée.
fichier_ini section nom
Supprime chaîne de la section section [section] dans fichier_ini. Si la chaîne ne peut être supprimée du fichier ini, le flag d'erreur est levé. Le flag d'erreur n'est pas levé si la chaîne n'a pas pu être trouvée.
[/ifempty] clé_racine sous-clé
Supprime une clé du registre. Si /ifempty (si vide) est spécifié, la clé du registre ne sera supprimée que si elle ne contient aucune sous-clé (sinon, l'arborescence entière du registre sera supprimée). Les valeurs valides pour clé_racine sont listées dans l'aide de WriteRegStr. Le flag d'erreur est levé si la clé ne peut être supprimée du registre (ou si elle n'existe tout simplement pas).
clé_racine sous-clé clé
Supprime une valeur dans le registre. Les valeurs valides pour clé_racine sont listées dans l'aide de WriteRegStr. Le flag d'erreur est levé si la valeur ne peut être supprimée du registre (ou si elle n'existe pas).
var_utilisateur(destination) clé_racine sous-clé index
Défini la variable utilisateur $x avec le nom de la clé de registre 'index' ième dans clé_racine\sousclé. Les valeurs valides pour clé_racine sont listées dans l'aide de WriteRegStr. Retourne une chaîne vide s'il n'existe plus d'autres clés, et retourne une chaîne vide et lève le flag d'erreur en cas d'erreur.
var_utilisateur(destination) clé_racine sous-clé index
Défini la variable utilisateur $x avec le nom de la valeur de registre 'index' ième dans clé_racine\sousclé. Les valeurs valides pour clé_racine sont listées dans l'aide de WriteRegStr. Retourne une chaîne vide s'il n'existe plus d'autres clés, et retourne une chaîne vide et lève le flag d'erreur en cas d'erreur.
var_utilisateur(destination) chaîne
Développe les variables d'environnement de "chaîne" dans la variable utilisateur $x. Si une erreur survient lors de la lecture de la chaîne, la variable utilisateur reste vide, et le flag d'erreur est levé.
fichier_ini
Met à jour le fichier INI. Windows 9x garde toutes les modifications du fichier INI en mémoire. Cette commande permet de forcer l'écriture des modifications sur le disque. Utilisez-la si vous modifiez le fichier INI manuellement, le supprimez, le déplacez ou le copiez juste après l'avoir modifié avec WriteINIStr, DeleteINISec ou DeleteINStr.
var_utilisateur(destination) nom
Lit depuis la chaîne d'environnement "nom" et stocke la valeur dans la variable utilisateur $x. Si une erreur survient lors de la lecture de la chaîne, la variable utilisateur reste vide, et le flag d'erreur est levé.
var_utilisateur(destination) fichier_ini section entrée
Lit depuis entrée dans [section] de fichier_ini est stocke la valeur dans la variable utilisateur $x. Le flag d'erreur est levé et $x prendra la valeur chaîne vide si l'entrée n'est pas trouvée.
var_utilisateur(destination) clé_racine sous-clé nom
Lit un DWORD de 32 bits depuis le registre vers la variable utilisateur $x. Les valeurs valides pour clé_racine sont listées dans l'aide de WriteRegStr. Le flag d'erreur est levé et $x comprendra une chaîne vide ("", soit 0) si le DWORD n'est pas présent. Si la valeur est présente, mais n'est pas de type DWORD, elle sera lue comme une chaîne de caractères et le flag d'erreur sera levé.
var_utilisateur(destination) clé_racine sous-clé nom
Lit depuis le registre dans la variable utilisateur $x. Les valeurs valides pour clé_racine sont listées dans l'aide de WriteRegStr. Le flag d'erreur est levé et $x comprendra une chaîne vide ("") si la chaîne n'est pas présente. Si la valeur est présente, mais est de type REG_DWORD, elle sera lue, convertie en chaîne de caractères et le flag d'erreur sera levé.
fichier_ini section entré valeur
Ecrit entrée=valeur dans [section] de fichier_ini. Le flag d'erreur est levé si la chaîne ne peut être écrite dans le fichier ini.
clé_racine sous-clé nom valeur
Cette commande écrit un bloc de données binaires dans le registre. Les valeurs correctes sont listées dans l'aide de WriteRegStr. Valeur est en héxadecimal (ex. DEADBEEF01223211151). Le flag d'erreur est levé si la données binaire ne peut être écrite dans le registre. Si la clé n'existe pas, elle sera créée.
clé_racine sous-clé nom valeur
Cette commande écrit un dword (entier de 32 bits) dans le registre (une variable utilisateur peut être spécifiée). Les valeurs valides pour clé_racine sont listées dans l'aide de WriteRegStr. Le flag d'erreur est levé si le dword ne peut être écrit dans le registre. Si la clé n'existe pas, elle sera créée.
clé_racine sous-clé nom valeur
WriteRegExpandStr clé_racine sous-clé nom valeur
Ecrit une chaîne dans le registre. Clé_racine doit être :
Le flag d'erreur est levé si la chaîne ne peut être écrite dans le registre. Le type de chaîne sera REG_SZ pour WriteRegStr, ou REG_EXPAND_STR pour WriteRegExpandStr. Si la clé n'existe pas, elle sera créée.
fichier_dll [/NOUNLOAD] nom_fonction
Appelle une fonction dans l'extension DLL de NSIS. Voir Contrib\ExDLL pour un exemple. Les extensions DLL peuvent accéder à la pile et aux variables. Utilisez /NOUNLOAD pouv forcer l'installation à laisser une DLL chargée en mémoire. Note : Pour extraire automatiquement et appeler des DLLs de plugins, utilisez une commande de plugin au lieu de CallInstDLL.
[/SILENT] [/FILESONLY] fichiers_sur_sys_distant destination [taille_des_fichiers_en_ko]
Copie des fichiers depuis la source vers la destination du système d'installation. Utile avec $EXEDIR si vous désirez copier le medium d'installation, ou bien vous copier depuis un emplacement vers un autre du système. Utilise SHFileOperation, ainsi, l'utilisateur pourra voir une fenêtre d'état sur l'opération de copie, si celle-ci est importante (pour le désactiver, utilisez /SILENT). Le dernier paramètre spécifie la taille de la copie (en kilo octets), afin que l'installation puisse calculer l'espace disque nécessaire. En cas d'erreur, ou si l'utilisateur annule la copie (seulement possible si /SILENT a été omis), le flag d'erreur est levé. Si /FILESONLY est spécifié, seuls les fichiers sont copiés.
Si aucun répertoire absolu n'est spécifié, le répertoire courant sera utilisé. Le répertoire courant est le dossier définit par la dernière instruction SetOutPath appelée. Si vous n'avez pas encore appelé SetOutPath, le répertoire courant est $EXEDIR.
rep_a_creer
Créé (récursivement, si nécessaire) le répertoire spécifié. Le flag d'erreur est levé si le répertoire ne peut pas être créé.
Vous devez toujours spécifier un répertoire absolu.
lien.lnk cible.ext [parametres [icone.ext [index_icone [options_execution [raccourci_clavier [description]]]]]]
Créé un raccourci 'lien.lnk' qui est relié à 'cible.ext', avec comme paramètre optionnel 'parametres'. L'icône utilisée pour ce raccourci est 'icone.ext,index_icone'; pour une icone par défaut, utilisez des chaînes vides pour icone.ext et index_icone. options_execution peut être: SW_SHOWNORMAL (fenêtre normale), SW_SHOWMAXIMIZED (fenêtre maximisée), SW_SHOWMINIMIZED (fenêtre minimisée) ou bien une chaîne vide. raccourci_clavier peut être de la forme 'flag|c' ou flag peut être une combinaison (utilisation de |) de: ALT, CONTROL, EXT, ou SHIFT. c est le caractère à utiliser (a-z, A-Z, 0-9, F1-F24, etc). Notez qu'aucun espace n'est autorisé pour cette chaîne. Un bon exemple serait "ALT|CONTROL|F8". $OUTDIR est utilisé comme répertoire de travail. Vous pouvez le modifier en utilisant SetOutPath avant de créer le raccourci. description doit être la description du raccourci, ou le commentaire sous XP. Le flag d'erreur est levé si le raccourci ne peut pas être créé (ex. le répertoire n'existe pas, ou toute autre erreur).
fichier var_utilisateur(dword haut de destination) var_utilisateur(dword bas de destination)
Récupère les informations de version de la DLL (ou de n'importe quel executable contenant les informations de versions) dans "fichier". Défini les variables utilisateur avec les dwords haut et bas par les informations de version en cas de succès; en cas d'echecles variables sont vides et le flag d'erreur est levé. L'exemple suivant lit la version d'une DLL et la copie dans une version lisable par un humain dans la variable $0 :
GetDllVersion "$INSTDIR\MaDLL.dll" $R0 $R1 IntOp $R2 $R0 / 0x00010000 IntOp $R3 $R0 & 0x0000FFFF IntOp $R4 $R1 / 0x00010000 IntOp $R5 $R1 & 0x0000FFFF StrCpy $0 "$R2.$R3.$R4.$R5"
fichier_local var_utilisateur(dword haut de destination) var_utilisateur(dword bas de destination)
C'est identique à GetDLLVersion, mais n'agit que sur le système sur lequel a été créé l'installation (il ne se compile que dans deux commandes StrCpy). Définit les deux variables avec les informations de version des DLL du système de compilation.
fichier var_utilisateur(dword haut de destination) var_utilisateur(dword bas de destination)
Récupère la date de dernière modification de "fichier". Stocke les dwords haut et bas de la date dans les variables utilisateurs en cas de succès; en cas d'echec, les variables sont vides, et le flag d'erreur est levé.
fichier_local var_utilisateur(dword haut de destination) var_utilisateur(dword bas de destination)
Identique à GetFileTime, mais n'agit que sur le système sur lequel a été créé l'installation (il ne se compile que dans deux commandes StrCpy). Définit les deux variables avec la date du fichier du système de compilation.
[/SHORT] var_utilisateur(destination) rep_ou_fichier
Assigne à la variable utilisateur $x, le répertoire complet du fichier spécifié. Si la partie répertoire du fichier n'est pas retrouvée, le flag d'erreur est levé et $x sera vide. Si /SHORT est spécifié, le réperoire est converti en forme courte (8+3).
var_utilisateur(destination) [rep_base]
Assigne à la variable utilisateur $x, le nom d'un fichier temporaire. Le fichier sera créé, et vous pourrez l'utilisez comme bon vous semble. Le nom du fichier temporaire à la garantie d'être unique. Si vous voulez que le fichier temporaire soit créé dans un autre répertoire que le répertoire temporaire de Windows, spécifiez un rep_base. Supprimez le fichier après l'avoir utilisé.
var_utilisateur(destination) fichier
Assigne à lavariable utilisateur $x, le répertoire complet d'un fichier passé en second paramètre. Le flag d'erreur sera levé et $x sera vide si le fichier ne peut etre trouvé. Utilisez SearchPath() pour rechercher sur le système des répertoires de ce fichier.
fichier attribut1|attribut2|...
Définit les attributs de 'fichier'. Les attributs valides peuvent être combinés à l'aide de | et sont:
Le flag d'erreur sera levé si les attributs ne peuvent être modifiés (ex. le fichier n'existe pas, ou vous ne possédez pas les permissions adéquates). Vous ne pouvez que définir des attributes. Il n'est pas possible de les retirer. Si vous voulez supprimer un attribut, utilisez NORMAL. De cette manière, tous les attributs sont supprimés. Cette commande ne gère pas les caractères spéciaux.
fichier_dll [nom_point_d_entrée]
Charge la DLL spécifiée et appelle DllRegisterServer (ou nom_point_d_entrée si spécifié). Le flag d'erreur est levé si une erreur se produit (ex. impossibilité de charger la DLL, d'initialiser OLE, de trouver le point d'entrée, ou la fonction a retourné autre chose que ERROR_SUCCESS (=0)).
Utilisez SetOutPath le répertoire courant des DLLs dépendant d'autres DLLs qui sont désormais dans le path ou dans le répertoire Windows. Par exemple, si tout_follette.dll dépend de bar.dll qui est situé dans $INSTDIR, utilisez :
SetOutPath $INSTDIR RegDLL $INSTDIR\tout_follette.dll
fichier_dll
Enlève de la mémoire la DLL sépcifiée et appelle DllUnregisterServer. Le flag d'erreur est levé si une erreur survient (ex. impossibilité de charger la DLL, d'initialiser OLE, de trouver le point d'entrée, ou une fonction a retourné autre chose que ERROR_SUCCESS (=0)).
message_utilisateur
Annule l'installation, arrête l'execution du script, et affiche message_utilisateur dans l'affichage de l'état. Note: vous pouvez l'utiliser depuis des fonctions d'interaction à des fins spécifiques. Les fonctions d'interactions associées aux pages utiliseront aussi Abort à des fins spécifiques.
nom_fonction | :nom_label
Appelle la fonction nommée nom_fonction. En utilisation dans une section de désinstallation, Call ne pourra être utilisé qu'avec des noms de fonctions débutant par "un.". Si le paramètre commence par un ':' il sera traité comme un label (on pourra alors appeler un label dans une fonction - mais cela ne sera pas utilisé la plupart du temps).
Efface le flag d'erreur.
var_utilisateur(destination)
Obtient l'adresse de l'instruction en cours (GetCurrentAddress) et la stocke dans la variable utilisateur. Cette variable utilisateur peut être passée par Call ou Goto.
var_utilisateur(destination) fonction
Obtient l'adresse de la fonction et la stocke dans la variable utilisateur. Cette variable utilisateur peut être passée par Call ou Goto. Notez que si vous faites un Goto une adresse qui est la le résultat de GetFunctionAddress, votre fonction ne sera jamais retournée (lorsque la fonction appelée par Goto retourne une valeur, vous retournez une valeur instantanement).
var_utilisateur(destination) titre
Obtient l'adresse du label et la stocke dans la variable utilisateur. Cette variable utilisateur peut être passée par Call ou Goto. Note que vous ne pourrez que l'appeler que pour des labels accessibles depuis votre fonction, mais vous pourrez l'appeler de n'importe où ensuite (ce qui peut être potentiellement dangereux). Notez que si vous appelez la valeur de retour de GetLabelAddress, le code sera executé jusqu'à ce qu'il revoit une valeur (explicitement ou implicitement à la fin de la fonction), et alors vous reviendrez à l'état après l'appel.
label_a_atteindre | +pos| pos| var_utilisateur(cible)
Si le label est spécifié, aller au label 'label_a_atteindre:'.
Si +pos ou -pos est spécifié, le saut est relatif aux instructions de position. Goto +1 va à l'instruction suivante, Goto -1 retourne à l'instruction précédente, etc.
Si une variable utilisateur est spécifiée, on saute vers une adresse absolue (genéralement, vous obtiendrez la valeur depuis la fonction GetLabelAddress). Les instructions de compilation et les SectionIn ne sont pas des instructions et les sauter n'auront aucun effet.
aller_a_si_abandon [aller_a_si_non_abandon]
Si abort est appelé, il "retournera" vrai. CEla peut arriver si l'utilisateur choisit d'abandonner si un fichier ne peut pas être créé (ou écraser) ou si l'utilisateur a annulé de lui-même. Cette focntion ne peux être appelée que depuis une fonction leave de la page instfiles.
aller_a_si_erreur [aller_a_si_pas_erreur]
Vérifit et efface le flag d'erreur, et, s'il est levé, il effectuera un goto aller_a_si_erreur , sinon, il effectuera un goto aller_a_si_pas_erreur. Le flag d'erreur est levé par une autre instruction lorsqu'une erreur récupérable survient (tel qu'essayer de supprimer un fichier en cours d'utilisation).
fichier_a_vérifier saut_si_présent [saut_sinon]
Vérifit l'existence de fichier(s) fichiers_a_vérifier (qui peut aussi être un filtre, ou un répertoire), et Goto saut_si_présent si le fichier existe, sinon, Goto saut_sinon. Si vous voulez vérifier pourvoir si un fichier est un répertoire, utilisez IfFileExists REPERTOIRE\*.*
[saut_si_present] [saut_sinon]
Vérifit la présence du flag de redémarrage, et saute à saut_si_present si le flag de redémarrage est levé, sinon, saute à saut_sinon. Le flag de redémarrage peut être levé par Delete et Rename, ou manuellement par SetRebootFlag.
[saut_si_silencieux] [saut_sinon]
Au moins un paramètre est requis. Vérifit le flag du mode silencieux, et saute vers saut_si_silencieux si l'installation est silencieuse, sinon saute vers saut_sinon. Le flag du mode silencieux peut être définit par SilentInstall, SilentUninstall, SetSilent ainsi que par l'utilisateur en passant /S en ligne de commandes.
val1 val2 saut_si_egal [saut_si_val1_inf] [saut_si_val1_sup]
Compare deux entiers val1 et val2. Si val1 et val2 sont égaux, Goto saut_si_egal, sinon, si val1 < val2, Goto saut_si_val1_inf, sinon, si val1 > val2, Goto saut_si_val1_sup.
val1 val2 saut_si_egal [saut_si_val1_inf] [saut_si_val1_sup]
Compare deux entiers non signés val1 et val2. Si val1 et val2 sont égaux, Goto saut_si_egal, sinon, si val1 < val2, Goto saut_si_val1_inf, sinon, si val1 > val2, Goto saut_si_val1_sup. La comparaison est effectuée comme sur des entiers non signés.
liste_options_mb texte_messagebox [/SD return] [verif_retour aller_à] [verif_retour_2 aller_à_2]
Affiche une boite de dialogue contenant le texte "texte_messagebox". liste_options_mb doit être une ou plusieurs des options suivantes, délimitées par | (ex. MB_YESNO|MB_ICONSTOP).
verif_retour peut être 0 (ou vide, ou laissé de côté), ou l'une des valeurs suivantes:
Si la valeur de retour de la boite de dialogue est verif_retour, l'installation effectuera un Goto aller_à.
Utilisez le paramètre /SD avec une des valeurs verif_retour aller_à pour spécifier l'option utilisée lorsque l'installation est silencieuse. Voir section 4.12 pour plus d'informations.
Retour d'une fonction ou d'une section.
Force l'installation à quitter aussitôt que possible. Après l'appel de Quit, l'installation quittera (aucune fonction ne pourra être exécutée alors).
Lève le flag d'erreur.
str1 str2 saut_si_egal [saut_si_inégal]
Compare (insensible à la casse) txt1 à txt2. Si txt1 et txt2 sont égaux, aller à saut_si_egal, sinon, Goto saut_si_inégal.
index_fichier
Ferme un fichier ouvert avec FileOpen.
var_utilisateur(index_fichier) fichier mode_ouverture
Ouvre un fichier nommé "fichier", et défini l'index_fichier avec son identifiant. Le mode_ouverture doit être l'un des suivants : "r" (lecture),"w" (écriture, le contenu du fichier étant détruit) ou "a" (append, signifiant à la fois lecture et écriture, le contenu restant préservé). Dans tous les modes, le pointeur de fichier est placé au débaut du fichier. Si le fichier ne peut être ouvert, l'index_fichier est vide et le flag d'erreur est levé.
Si aucun chemin absolu n'est spécifié, le dossier courant est utilisé. Le dossier courant est le dossier défini par la dernière instruction SetOutPath. Si vous n'avez pas utilisé SetOutPath, le dossier courant est $EXEDIR.
index_fichier var_utilisateur(destination) [taille_max]
Lit une chaîne de caractères depuis un fichier ouvert à l'aide de FileOpen. La chaîne est lue jusqu'à une nouvelle ligne (ou un paire retour chariot nouvelle ligne), jusqu'à un octet null, ou même jusqu'à ce que taille_max soit atteinte (si spécifié). Les chaînes sont limitées à 1024 caractères. Si la fin de fichier est lue et qu'une données ne soit plus disponible, la chaîne sera vide, et le flag d'erreur sera levé.
index_fichier var_utilisateur(destination)
Lit un octet depuis le fichier ouvert avec FileOpen. L'octet est sotcké dans la variable utilisateur comme un entier (entre 0 et 255). Si la fin de fichier est atteinte, et qu'aucune donnée ne soit plus disponible, retour sera vide et le flag d'erreur sera levé
index_fichier pos [mode] [var_utilisateur(nvll_pos)]
Déplace le pointeur d'un fichier ouvert à l'aide de FileOpen. Si mode est omis ou spécifié comme SET, le fichier est positionné en "pos". Si mode est spécifié comme CUR, alors le pointeur est déplacé de pos. Si mode est spécifié comme END, le pointeur sera positionnera en relatif à EOF (Fin Du Fichier). Si le paramètre final "nvll_pos" est spécifié, la nouvelle position du fichier sera stockée dans cette variable.
index_fichier chaîne
Ecrit une chaîne dans un fichier ouvert à l'aide de FileOpen. Si une erreur apparait, le flag d'erreur est levé.
index_fichier chaîne
Ecrit l'interprétation entière de 'chaîne' dans une fichier ouvert à l'aide de FileOpen. Bien entendu, vous pouvez entrer une valeur entière directement. Le code suivant écrit un "retour chariot / saut de ligne" - Entree dans le fichier.
FileWriteByte index_fichier "13" FileWriteByte index_fichier "10"
Si une erreur apparait, le flag d'erreur sera levé. Notez que l'octet bas de l'entier est utilisé, ex. ecrire 256 est identique à écrire 0, etc.
index_fichier
Ferme une recherche lancée par FindFirst.
var_utilisateur(index_recherche) var_utilisateur(fichier) spec_fichier
Effectue la recherche de 'spec_fichier', placant le premier fichier trouvé dans fichier (variable utilisateur). Il place aussi l'index de la recherche dans index_recherche (variable utilisateur). Si aucun fichier n'est trouvé, les deux variables sont vides, et le flag d'erreur est levé. A utiliser de préférence avec FindNext et FindClose. Notez que fichier ne contient pas l'arborescence.
index_recherche var_utilisateur(fichier)
Continue une recherche débutée avec FindFirst. index_recherche doit être le même retourné par FindFirst. Si la recherche est terminée (plus de fichiers), fichier est vidé, et le flag d'erreur est levé. Notez que fichier ne contient pas le chemin.
[chemin\]executable.exe
Génère une désinstallation dans le fichier (et occasionnellement le répertoire) spécifié. Seulement valide dà l'intérieur d'une section ou fonction d'installation, et requiert que vous possédiez la section de désinstallation dans votre script. Voir aussi Configuration de la désinstallation. Vous pouvez l'appeler une ou plusieurs fois pour écrire autant de copie du désinstalleur que vous le voulez.
variable_utilisateur(erreur)
Utilisez dans la fonction leave ou sur la page directory. Vérifit si le flag est défini si 'DirVerify leave' est utilisé. Les valeurs possibles sont :
0 : Aucune erreur
1 : Répertoire d'installation incorrect
2 : Pas assez d'espace disque sur le lecteur d'installation
Définit le répertoire des plugins ($PLUGINSDIR) s'il n'a pas été préalablement initialisé.
current|all
Définit le contexte de $SMPROGRAMS et de d'autres dossiers systèmes. S'il est défini comme 'current' (courant), par défaut, les dossiers systèmes de l'utilisateur courant seront utilisés. S'il est défini en 'all' (tous), les dossiers systèmes communs à tous les utilisateurs ('all users') seront utilisés. Les dossiers communs peuvent ne pas être supportés par tous les systèmes d'exploitation. Si ces dossiers ne sont pas trouvés, alors les dossiers de l'utilisateur courant seront utilisés. Veuillez prendre en considértion qu'un "utilisateur normal" n'a pas la possibilité d'écrire dans la zone all users. Seuls les admistrateurs possèdent les droits d'accès complets dans la zone all users. Vous pouvez vérifier cela en utilisant le plugin UserInfo. Voir Contrib\UserInfo\UserInfo.nsi pour un exemple.
temps_en_ms
Gèle l'execution de l'installation de temps_en_ms millisecondes. temps_en_ms peut être une variable, ex. "$0" ou un nombre (ex. "666").
var_utilisateur(destination) chaîne [taillemax] [pos_depart]
Défini la variable utilisateur $x avec chaîne. Notez que chaîne peut contenir d'autres variables, ou la variable utilisateur elle-même (la concaténation des chaînes est possible de cette manière, etc). Si taillemax est spécifié, a chaîne aura un nombre de caractères maximum de taillemax (si taillemax est négatif, la chaîne sera tronquée de val_abs(taillemax) caractères depuis la fin). Si pos_depart est spécifié, la source s'y positionne (si pos_offset est négatif, ce sera val_abs(pos_depart) depuis la fin de la chaîne).
var_utilisateur(taille) chaîne
Défini la variable utilisateur $x avec la taille de chaîne.
[var_utilisateur] | index_pile
Lorsque qu'aucun paramètre n'est spécifié, échange les deux premier éléments de la pile. Lorsqu'un paramètre est spécifié, et que celui ci est la variable utilisateur, échange l'élément en haut de la pile avec le paramètre. Lorsqu'un paramètre est spécifié, et que celui ci est en entier positif, le paramètre Spécifie quel élément de la pile doit être échangé avec le haut de la pile. S'il n'y a pas assez d'éléments dans la pile pour accomplir cet échange, une erreur fatale se produira (pour vous aider à débugger votre code :).
var_utilisateur(destination)
Dépile une chaîne et la place dans la variable utilisateur $x. Si la pile est vide, le flag d'erreur est levé.
chaîne
Place une chaîne en haut de la pile. La chaîne pourra ensuite être dépilé.
var_utilisateur(destination) format chaîne_nombre
Formate le nombre "chaîne_nombre" en utilisant le format "format", et stocke le résulat dans la variable utilisateur $x. Exemple de formats : "%08X" "%u" etc.
var_utilisateur(destination) valeur1 OP [valeur2]
Combine valeur1 et (selon OP) valeur2 dans la variable utilisateur $x. OP est défini comme :
Redémarre l'ordinateur. Soyez attentif avec cette fonction. S'il y a une erreur en redémarrant, cette fonction lève le flag d'erreur et continue. Si le redémarrage est un succès, cette fonction ne retourne rien.
true|false
Définit le flag de redémarrage par true (vrai) ou false (faux).
on|off
Définit si oui ou non l'installation créera un journal en $INSTDIR\install.log. $INSTDIR doit avoir une valeur avant d'appeler cette fonction, ou cela ne marchera pas. Notez que NSIS_CONFIG_LOG doit être définit dans le fichier de configuration de la compilation (config.h), lors de la compilation (ce qui n'est pas fait par défaut) pour le supporter. Voir Compilation des sources de NSIS pour plus d'informations sur la recompilation de NSIS.
texte
Si le journal d'installation est activé, insère le texte "texte" dans le fichier journal.
index_section flags_section
Définit les flags de la section. Le premier bit (le plus bas) indique si la section est ou pas activée, le second bit indique si la section est ou pas une sous-section (ne pas modifier à moins de vraiment savoir ce que vous faites), le troisième bit indique si la section est ou pas une fin de sous-section (là encore, ne pas modifier), le quatrième bit indique si la section est affichée en gras ou pas, le cinquième indique si la section est ou pas en lecture seule et le sixième bit indique si la sous-section est ou pas automatiquement développée. Le flag d'erreur est levé si une section hors limite est spécifiée.
Pour un exemple d'utilisation, voir le script one-section.nsi.
index_section var_utilisateur(destination)
Recherche le flags de la section. Voir SectionSetFlags pour la description des flags. Le flag d'erreur est levé si index_section n'est pas un index de section.
index_section texte_section
Définie la description pour la section index_section. Pour définir une sous-section, vous devez utiliser - au début du texte. Si le texte est "" alors la section sera cachée. Le flag d'erreur est levé si index_section n'est pas un index de section.
index_section var_utilisateur(destination)
Stocke la description de la section index_section dans la variable utilisateur. Si la section est invisible, la variable contiendra une chaîne vide. Le flag d'erreur est levé si index_section n'est pas un index de section.
index_section types_install
Définie les types d'installation pour lesquels la section spécifiée par index_section sera automatiquement activée. Notez que l'index des sections commence à zéro. Chaque bit de types_install est un flag indiquant si la section est ou pas dans ce type d'installation. Par exemple, si vous avez 3 types d'installation et que vous voulez que la première section soit inclue dans les types d'installation 1 et 3, alors la commande ressemblera à :
SectionSetInstTypes 0 5
car la valeur binaire de 5 est "00000101". Le flag d'erreur est levé si l'index de la section est hors limite.
index_section var_utilisateur(destination)
Retrouve le tableau des types d'installation associés à une section. Voir ci-dessus pour l'explication de SectionSetInstTypes pour avoir une description sur ce que contiendra la sortie. Le flag d'erreur est levé si l'index de la section est hors limite.
index_section nouvelle_taille
Définit la taille de la section spécifiée par index_section. Notez que l'index de la première section est zéro. La valeur de la taille doit être en kilo octets et ne doit contenir que des nombres.
index_section var_utilisateur
Récupère la taille de la section spécifiée par index_section et stocke dans la valeur dans la variable utilisateur fournie. Notez que l'index de la première section est zéro.
index_section
Définit le InstType courant. Le flag d'erreur n'est pas levé si un index hors limite a été spécifié.
SetCurInstType ne fonctionne que si la page des composants est présente.
var_utilisateur
Récupère le InstType courant et le stocke dans la valeur dans la variable utilisateur fournie. La valeur de ${NSIS_MAX_INST_TYPES} (32 par défaut) signifit que le type installation personnalisée a été sélectionné.
index_installtypetexte
Défini le texte de l'InstType spécifié. Si le texte est vide, alors l'InstType est enlevé. En utilisant un nombre index_installtype non utilisé précédement, vous pouvez en créer de nouveaux. Pour ajouter/supprimer des sections à ces types d'installation, voir SectionSetInstTypes. Contrairement à SectionIn, l'index commence à 0, ce qui signifit que le premier type d'installation a comme index 0.
index_installtype var_utilisateur
Récupère le texte du type d'instalaltion spécifié.
Fait que la fenêtre d'installation soit visible et se trouve au-dessus de totues les autres fenêtres (ex. si une commande est executée et qui se place au-dessus de l'installation, un BringToFront redonnera le focus à l'installation).
De récentes versions de Windows empêchent de placer une fenêtre en avant-plan. Si l'utilisateur travaille avec une autre application pendant l'installation, l'utilisateur sera informé en utilisant une autre méth ode.
var_utilisateur(destination) police [hauteur] [largeur] [/ITALIC] [/UNDERLINE] [/STRIKE]
Créé une police et la place dans var_utilisateur. Pour plus d'informations sur les différents paramètres, allez voir la page MSDN à propos de la fonction CreateFont() de l'API Win32.
message_utilisateur
Ajoute la chaîne "message_utilisateur" dans l'affichage des détails de l'installation.
hwnd (1|0)
Active ou désactive l'entrée souris et clavier sur la fenêtre ou contrôle spécifié. Les états possibles sont 0 (désactivé) ou 1 (activé).
var_utilisateur(destination) classe_fenêtre [titre_fenêtre] [fenêtre_parent] [fils_après]
Recherche une fenêtre. Réagit comme l'API win32 FindWindowEx(). Recherche par classe_fenêtre (et/ou titre_fenêtre si spécifié). Si fenêtre_parent ou fille_après sont spécifiés, la recherche sera réstrictive d'autant. Si classe_fenêtre ou titre_fenêtre sont spécifiés comme "", ils ne seront pas utilisés par la recherche. Si la fenêtre n'est pas trouvée, la variable utilisateur retrounée est 0. Pour obtenir le comportement du vieux FindWindow, utilisez FindWindow avec SendMessage.
var_utilisateur(destination) fenêtre id_elt
Recheche le handle d'un contrôle identifié par id_elt dans la boite de dialogue spécifiée fenêtre. Si vous voulez obtenir l'handle du contrôle à l'interieur de la fenêtre, utilisez d'abord FindWindow var_utilisateur(destination) "#32770" "" $HWNDPARENT pour obtenir l'handle de la fenêtre en cours.
Cache l'installation.
HWND saut_si_fenêtre [saut_si_pas_fenêtre]
Si HWND est une fenêtre, Goto saut_si_fenêtre, sinon, Goto saut_si_pas_fenêtre (si spécifié).
HWND msg wparam lparam [var_utilisateur(valeur_retour)] [/TIMEOUT=temps_en_ms]
Envoit un message à HWND. Si la variable utilisateur $x est spécifiée comme dernier paramètre(ou l'avant-dernier sur vous utilisez /TIMEOUT), la valeur de retour de SendMessage y sera stockée. Notez que lors de la spécification de 'msg', vous ne devrez utiliser que la valeur entière du message. Si vous voulez envoyer des chaînes de caractères, utilisez "STR:texte" comme wParam / lParam, ou vous en avez besoin.
Incluez ${NSISDIR}\Examples\WinMessages.nsh pour obtenir tous les messages Windows définis dans votre script.
Pour envoyer une chaine en paramètre, placez STR: avant le paramètre, par exemple: "STR:Une chaîne".
Utilisez /TIMEOUT=temps_en_ms pour spécifier la durée en millisecondes de la période de time-out.
true|false
Ecrase le flag de fermeture automatique de la fenêtre par défaut (spécifié pour l'installation en utilisant AutoCloseWindow, et à false pour la désinstallation). Mettez 'true' (vrai) pour que la fenêtre d'installation disparaisse immédiatement à la fin de l'installation, ou 'false' (faux) qui requiera une fermeture manuelle.
[/IMGID=id_element_dans_fenetre] [/RESIZETOFIT] chemin_vers_image.bmp
Définit le fichier image comment image de marque. Si aucun IMGID n'est spécifié, le premier contrôle d'image trouvé sera utilisé, ou bien le contrôle d'image créer par AddBrandingImage. Notez que cette image doit être présente sur la machine de l'utilisateur. Utilisez tout d'abord File pour l'y placer. Si /RESIZETOFIT est spécifié, l'image sera automatiquement retaillée (très pauvrement) à la taille du contrôle d'image. Si vous utilisez AddBrandingImage, vous pourrez obtenir la taille : en compilant votre script et regardez le retour de AddBrandingImage, il vous indiquera la taille. SetBrandingImage ne fonctionnera pas s'il est appelé depuis .onInit!
show|hide
Affiche (show) ou cache (hide) les détails, ceci dépendant du paramètre passé. Cela écrase l'affichage par défaut des détails, défini par ShowInstDetails.
none|listonly|textonly|both|lastused
Définit le mode utilisé par les commande pour afficher leur état. None (aucune) fait taire les commandes, listonly (listage seul) fait que seul le texte d'état est ajouté à la liste, textonly (texte seul) fait que le texte d'état n'est affiché que dans la barre d'état, et both (les deux) active les deux (par défaut). Pour extraire beaucoup de petits fichiers, textonly est recommandé (spécialement sous win9x avec un défilement souple activé).
hwnd [/BRANDING] [couleur_texte] [transparent|couleur_arrplan]
Définit une couleur d'arrière-plan et de texte pour un contrôle statique, d'édition, un bouton ou une fenêtre. Utilisez GetDlgItem pour obtenir l'handle (HWND) du contrôle. Pour rendre le contrôle transparent, spécifiez "transparent" comme couleur d'arrière-plan. Vous pouvez aussi spécifier /BRANDING avec ou sans couleur de texte ou d'arrière-plan pour rendre le contrôle totalement gris (ou toute autre couleur spécifiée). C'est utilisé par le texte de du contrôle de marque dans MUI.
silent | normal
Définit l'installation en mode silencieux ou normal. Voir SilentInstall pour plus d'informations sur les installations silencieuses. Ne peut être utilisé que dans .onInit.
hwnd état
Définit la visibilité d'une fenêtre. Les états possibles sont les mêmes que ceux de la fonction ShowWindow de Windows. Les constantes SW_* sont définis dans Include\WinMessages.NSH.
fichier_langue.nlf
Charge un fichier de langue pour la construction d'une table de langue. Tous les fichiers de langue livrés avec NSIS sont placés dans Contrib\Language Files
Après avoir inséré le fichier de langue, ${LANG_langfile} sera défini comme identifiant delangue (par exemple, ${LANG_FRENCH} sera défini comme 1036). Utilisez le avec LangString, LicenseLangString, LangDLL et VIAddVersionKey.
nom id_langue chaîne
Définit une chaîne multilingue. Cela signifit que sa valeur sera différente (ou pas, c'est vous qui voyez) pour chaque langue. Cela vous permet de facilement rendre votre installation multilingue sans avoir à ajouter nombre de switchs à votre script.
Chaque chaîne de langue possède un nom qui l'identifit et une valeur par langue utilisée par l'installation. Elle peut être utilisée par n'importe quelle chaîne dans le script. Pour utiliser une chaîne de langue, tout ce que vous avez besoin d'ajouter à la chaîne est $(nom_LangString_ici) ou vous voulez que la LangString soit insérée.
Notes:
Exemple d'utilisation :
LangString message ${LANG_ENGLISH} "English message" LangString message ${LANG_FRENCH} "Message français" LangString message ${LANG_KOREAN} "**y a du coréen dans l'air**" MessageBox MB_OK "Traduction Google $(message)"
nom id_langue répertoire_licence
Identique à LangString, il charge les chaînes depuis un fichier texte/RTF file et définit un LangString spécial ne pouvant être utilisé que par LicenseData.
Depuis la version 2, NSIS supporte pleinement plusieurs langues. Une installation peut ainsi avoir plus d'une langue.
Utilisez LoadLanguageFile pour chaque langue dont il faille charge les textes de l'interface et les propriétés de la langue.
Les textes de l'interface par défaut peuvent être facilement modifiés en utilisant des instructions commen ComponentText etc.
Vous pouvez aussier utiliser le contenu des chaînes de langue standards dans votre propres chaînes (par exemple, $(^Name) contient le nom de l'installation définit par l'instruction Name). Les noms de toutes les chaînes de langue sont listés en commentaire juste au-dessus des chaînes dans les fichiers de langue. Les fichiers de langue sont situés dans Contrib\Language Files.
Pour créer vos propres chaînes de langue, utilisez LangString.
Pour un exemple d'installation comprenant plusieurs langues, voir languages.nsi.
Lorsque l'installation démarre, elle passe par trois étapes pour sélectionner la langue de l'interface :
Le plugin LangDLL vous permet de donner la possibilité à l'utilisateur de choisir la langue de l'installation. Placez (Push) simplement l'identifiant de la variable (${LANG_langfile}) et son nom pour chaque langue de votre installation, puis le nombre de langues et ensuite le texte demandant à l'utilisateur de sélectionner la langue. Appelez la fonction du plugin nommée LangDialog, récupérez la valeur de retour dans $LANGUAGE et vous êtes bons pour continuer. Si l'utilisateur clique sur Annuler, la valeur de retour sera "cancel".
Pour un exemple d'utilisation, voir languages.nsi.
Les langues RTL sont des langues écrites de droite à gauche (comme l'arabe et l'hébreux). NSIS supporte totalement les langues RTL. Dans le ficheir de langue, il y a un endroit pour spécifier si la langue est ou pas RTL. Pour savoir si la langue courante est RTL, vérifiez la valeur de la chaîne de langue $(^RTL). Elle doit être à 1 si la langue est RTL et 0 sinon. Cela peut être utile pour les plugins qui créés des fenêtres, et qui ont souvent aussi un paramètre RTL.
Les possibilités du language de script NSIS peuvent être étendues en utilisant des fonctionnalités proposées par des fichiers DLL. Le meilleur exemple de cela est probablement InstallOptions.dll fourni à chaque distribution de NSIS.
Lorsque le compilateur de NSIS démarre, il scanne le répertoire des plugins à la recherche de DLLs et génère la liste des plugins trouvés, ainsi que des fonctions dispoibles. Pendant la phase de compilation, si une séquence telle que fred::pierrafeu est rencontrée alors que le ciompilateur s'attendait à un mot clé du language, celui-ci va regarder dans la liste. Si une entrée de cette liste spécifit que fred.dll exporte bien la fonction pierrafeu, NSIS va empaqueter le fichier fred.dll dans le code binaire de l'installation générée.
Pendant l'execution de l'installation, si une commande de plugin est executée, NSIS va décompresser le fichier DLL requis dans le répertoire $TEMP, va placer sur la pile tous les arguments spécifiés (de droite à gauche), puis executer la fcontino du plugin. Si l'option /NOUNLOAD est spécifiée, la DLL ne sera pas déchargée lorsque l'installation se terminera et la prochaine fois que vous utiliserez une DLL sans /NOUNLOAD. Veuillez noter que le dernier appel à un plugin de doit pas spécifier /NOUNLOAD ou bien le plugin ne sera pas supprimé de $PLUGINSDIR, de fait que des restes seront toujours sur l'ordinateur de l'utilisateur.
Un appel de plug-in ressemble à cela :
InstallOptions::dialog "emplacement_fichier_ini.ini"
Tous les paramètres sont placés dans la pile (dans ce cas, la fonction plugin ne nécessite qu'un paramètre). Certains plugins ne nécessitent aucun paramètre dans la pile, d'autres plusieurs. Pour utiliser une commande de plugin, vous devrez lire la documentation du plugin afin de connaitre les paramètres de chaque fonction.
Si vous ne voulez pas décharger la DLL après l'appel de la fonction, utilisez /NOUNLOAD comme premier paramètre. Par exemple :
dll:fonction /NOUNLOAD "param"
Vous pouvez aussi utiliser SetPluginUnload alwaysoff pour éviter d'écrire /NOUNLOAD chaque fois que vous utilisezle même plugin.
Si vous voulez appeler un plugin stocké sur le répertoire de l'utilisateur (ou tout autre part), utilisez CallInstDLL. Presque tous les plugins proposent des fonctionnalités d'installation, ainsi l'utilisattion de commandes de plugins est bien plus simple. Utilisez CallInstDLL peut être utile lorsque vous avez créé des plugins liés à une certaine version de votre application et qui sont copiés dans le répertoire d'installation.
Les installations silencieuses sont des installations ne demandant aucune action de l'utilisateur, et n'utilisant aucune interface graphique. L'utilisateur ne voit aucune fenêtre et aucune question ne lui est posé. Cela est particulierement utile pour les administrateurs réseaux voulant installer ou désinstaller quelques chose sans intervention de l'utilisateur, afin d'accomplir l'opération rapidement et sur plusieurs ordinateurs. C'est aussi utile pour les développeurs voulant intégrer une autre installation dans la leur, sans pour autant afficher deux installations.
Les installations et désinstallations NSIS peuvent être à la fois silencieuses et non silencieuses. Lorsqu'une installation ou désinstallation est silencieuse, toutes les fonctions d'interaction ne sont pas appelées. .onGUIInit, .onGUIEnd, leur équivalents pour la désinstallation et toute fonction d'interaction associée à une page spécifique ou ) un type de page ne sera pas appelée.
Il existe plusieurs méthodes pour rendre une installation ou une désinstallation silencieuse :
Pour vérifier sir l'installation/désinstallation est silencieuse, utilisez IfSilent.
Pour être certain que votre installation sera silencieuse lorsque ce sera nécessaire, vous devrez le vérifier avec IfSilent avant chaque commande demandant une action à l'utilisateur ou création d'une fenêtre. La commande MessageBox, qui est le plus génant dans une installation silencieuse, possède l'option /SD pour définir la réponse par défaut pour les installations silencieuses. Si vous voulez que votre installation/désinstallation soit capable d'être totalement silencieuse, vous devrez utiliser cette option. Toutes les boîtes de dialogues internes de NSIS possède une valeur par défaut pour les installations silencieuses. L'exemple silent.nsi démontre tous les aspects de ce sujet.
Puisque la page de sélection du répertoire ne peut pas être affichée lors d'une installation silenciuse, l'utilisateur peut définir le répertoire d'installation à partir de la ligne de commandes (cela fonctionne aussi avec les installations/désinstallations non silencieuses). Pour cela, l'utilisateur utilise l'option /D comme dans l'exemple suivant :
magnolia_forever.exe /S /D=C:\Program Files\Foreeeeeeever
Si votre installation/désinstallation nécessite d'autres installations qui ne peuvent être fournies en mode silencieux, vous pouvez autoriser l'utilisateur à spécifier ces informations en ligne de commandes et à les traiter dans .onInit. Par exemple :
Function .onInit Call GetParameters Pop $2 # Recherche de /USERNAME entre guillemets StrCpy $1 '"' Push $2 Push '"/USERNAME=' Call StrStr Pop $0 StrCpy $0 $0 "" 1 # on passe les guillemets StrCmp $0 "" "" next # Recherche de /USERNAME non entre guillemets StrCpy $1 ' ' Push $2 Push '/USERNAME=' Call StrStr Pop $0 next: StrCmp $0 "" done # copie de la valeur après /USERNAME= StrCpy $0 $0 "" 10 # Recherche du paramètre suivant Push $0 Push $1 Call StrStr Pop $1 StrCmp $1 "" done StrLen $1 $1 StrCpy $0 $0 -$1 done: FunctionEnd
L'exemple ci-dessus va copier la valeur que l'utilisateur passera après /USRNAME= dans $0. Cela permet à l'utilisateur de sépcifier l'information requise en ligne de commandes, au lieu d'utiliser une interface interactive. L'utilisateur peut utiliser :
magnolia_forever.exe /S /USERNAME=BarTapas /D=C:\Program Files\Foreeeeeeever
ou :
magnolia_forever.exe /S "/USERNAME=dans l'espace" /D=C:\Program Files\Foreeeeeeever
GetParameters et StrStr peuvent être trouvés dans appendice B.
Si votre installation nécessite trop d'informations et que vous voulez pouvoir la rendre silencieuse, vous devriez autoriser l'utilisateur à spécifier un fichier de réponses. Cela sera alors bien plus confortableque de tout écrire en ligne de commandes.