Ces commandes sont similaires à celles du pré-processeur C en terme de fonctionnalités et d'utilisation. ELles autorisent l'inclusion de fichiers, la compilation conditionelle, la compression de l'en-tête de executable et permet l'execution pendant le processus de création. Note : aucune de ces commandes n'autorise l'utilisation de variables.
fichier
Cette commande va inclure 'fichier' tout comme s'il faisait partie du script original. Notez que si le script est inclus depuis un autre répertoire, le répertoire de travail sera toujours celui d'où le script est compilé (et non celui du fichier inclus). Si le compilateur ne peut pas trouver le fichier, il chercher dans tous les répertoires d'inclusion. Voir !addincludedir pour plus d'informations.
repertoire
Ajoute un autre répertoire d'inclusion dans la liste des répertoires d'inclusion. Cette liste est utilisée lorsque !include est utilisé. La valeur initiale de cette liste est ${NSISDIR}\Include.
repertoire
Indique au compilateur NSIS de scaner dans le répertoire spécifié des dlls pour les plugins.
nv_rep
Cette commande va modifier le répertoire de la compilation. nv_rep peut être un chemin relatif ou absolu.
message
Cette commande affichera un message à l'utilisateur durant la compilation.
[message]
Cette commande générera une erreur pour le compilateur, et arrêtera le traitement du script. Vous pouvez aussi ajouter un message à cette erreur.
fichier_temp commande
Cette option permet au compilateur d'utiliser un packer d'EXE externe (tel que Petite ou UPX) pour compresser l'en-tête executable. Spécifiez un nom de fichier temporaire (comme "temp.dat") ainsi qu'une ligne de commande (comme "C:\program files\upx\upx -9 temp.dat") pour compresser l'en-tête.
commande [comparaison valeur_comparaison]
Cette commande executera 'commande' en utilisant un appel de system(), et si la valeur de retour comparée (en utilisant 'comparaison') à 'valeur_comparaison' est fausse, l'éxecution s'arrêtera. 'comparaison' peut être '<' ou '>' ou '<>' ou '=' ou 'ignore' (ignorer).
[message]
Cette commande alertera le compilateur. Vous pouvez aussi ajouter un message à cette avertissement.
niveau | push | pop
Cette commande va définir le niveau verbeux. 4=tout, 3=pas de script, 2=pas d'infos, 1=pas d'avertissement, 0=rien
Passer push amène !verbose à placer le niveau verbeux courant dans une pile spéciale. Passer pop amène !verbose à récupérer le niveau verbeux courant depuis la même pile et à l'utiliser.
Vous pouvez utiliser ces pré-définitions standards pour automatiquement ajouter l'heure de la compilation au titre des versions de développement, ajouter la date au numéro de version, etc.
Nom du script courant.
Numéro de ligne courant.
Date, suivant les paramètres locaux prédéfinis.
Heure, suivant les paramètres locaux prédéfinis.
Date & heure, suivant les paramètres locaux prédéfinis.
$%nomVarEnv% sera remplacé lors de la compilation par la variable d'environnement nomVarEnv.
Le compilateur stocke une liste de symboles définis, qui peuvent être défini en utilisant !define ou l'option de ligne de commande /D. Ces sumboles définis peut être utilisés pour faire de la compilation conditionnelle (en utilisant !ifdef) ou bien pour remplacer des symboles (une simple forme de macros). Pour remplacer un symbole par sa valeur, utilisez ${SYMBOLE} (si SYMBOLE n'est pas défini, aucune translation ne se fera). La translation suit la règle simple du premier-arrivé-premier-servi, ce qui signifit que si vous faites:
!define symbole1 ${symbole2}
Si symbole2 est défini lors de la lecture de la ligne, il sera remplacé. Sinon, tout remplacement se fera lorsque ${symbole1} sera référencé.
Commandes relatives aux defines et à la compilation conditionelle:
gflag [valeur]
Cette commande va ajouter 'gflag' dans la liste des define globaux. Ceci aura un effet similaire que l'utilisation de l'option /D en ligne de commande (mais le define ne sera ici effectif qu'après la commande !define).
gflag
Enlève un élément de la liste générale des définitions. Notez que ${SYMBOLE} ou SYMBOLE est indéfini sera traduit en "${SYMBOL}".
gflag [bverif [gflag [...]]]
Cette commande, si combinée avec une commande!endif, va indiquer au compilateur de compiler ou pas les lignes entre ces deux lignes. Si gflag est défini en global (en utilisant !define ou l'option /D), alors les lignes contenues seront compilées. Sinon, elles seront ignorées. 'bverif' peut être spécifié comme & (et bouléen) ou | (ou bouléen) avec plus de gflags -- la vérification se fait de la gauche vers la droite.
gflag [bverif [gflag [...]]]
Cette commande est l'opposée de !ifdef (si 'gflag' n'est pas défini en global, les lignes contenue seront compilées).
gflag [bverif [gflag [...]]]
Cette commande, lorsqu'elle est couplée avec une commande !endif, indiquera au compilateur de compiler ou pas les lignes entre ces deux commandes. Si la macro existe, alors les lignes contenues seront compilées. Dans le cas contraire, elles seront sautées. 'bverif' peut être spécifié comme & (et bouléen) ou | (ou bouléen) avec d'autres gflags -- la vérification se fait de la gauche vers la droite.
gflag [bverif [gflag [...]]]
L'inverse de !ifmacrodef. Les lignes seront compilées si la macro gflag n'existe pas.
[ifdef|ifndef|ifmacrodef|ifmacrondef [...]]
Cette commande permet de facilement insérer des codes différents suivant qu'un define ou une macro est défini ou pas. Vous pouvez créer des blocs comme !ifdef/!else/!endif, !ifdef/!else ifdef/!else/!endif etc.
Cette commande ferme un block débuté par !ifdef, !ifndef, !ifmacrodef ou !ifmacrondef.
nom_macro [parametre] [...]
Insère le contenu d'une macro créee par !macro. Si la macro a été créée avec des paramètres, alors vous devrez passer autant de paramètres à la macro qu'elle le requiert.
nom_macro [parametre][...]
Créé une macro nommée 'nom_macro'. Toutes les lignes entre !macro et !macroend seront enregistrées. Pour insérer une macro par la suite, on utilisera !insertmacro. Les définitions de !macro peuvent avoir un ou plusieurs paramètres définis. Les paramètres seront accédés de la même manière que le serait un !define (ex. ${NOMPARAM}) depuis l'intérieur de la macro.
Termine une macro démarrée par !macro.