Précédent | Sommaire | Suivant

4.6 Sections

Chaque installation de NSIS contient une Section ou plus. Chacune d'elles sont créées, modifiées et terminées par les commandes suivantes.

  • Chaque section contient entre zéro et plusieurs instructions.
  • Elles sont exécutées dans l'ordre d'apparition dans le script, et si ComponentText est défini, l'utilisateur aura la possibilité d'activer/désactiver les différentes sections.
  • Si un nom de section est 'Uninstall', alors il s'agira d'une section spéciale de désinstallation.

4.6.1 Commandes des sections

4.6.1.1 AddSize

taille_ko

Indique à l'installation que la section courante nécessite une 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).

Section
AddSize 500
SectionEnd

4.6.1.2 Section

[/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 !defini 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.

Section "-section masquée"
SectionEnd

Section # section masquée
SectionEnd

Section "!section en gras"
SectionEnd

Section /o "optional"
SectionEnd

Section "installe quelque chose" SEC_IDX
SectionEnd

Pour accéder à l'inderx de section, des parenthèses doivent être utilisées et le code doit est situé après dans le script de section.

Section test1 sec1_id
SectionEnd

Section test2 sec2_id
SectionEnd

Function .onInit
  SectionGetText ${sec2_id} $0
  MessageBox MB_OK "name of ${sec2_id}:$\n$0" # will correctly display 'name of 1: test2'
FunctionEnd
Function .onInit
  SectionGetText ${sec2_id} $0
  MessageBox MB_OK "name of ${sec2_id}:$\n$0" # will incorrectly display 'name of ${sec2_id}: test1'
    # plus a warning stating:
    #   unknown variable/constant "{sec2_id}" detected, ignoring
FunctionEnd

Section test1 sec1_id
SectionEnd

Section test2 sec2_id
SectionEnd

4.6.1.3 SectionEnd

Cette commande ferme la section courante.

4.6.1.4 SectionIn

index_typeinstall [index_typeinstall] [RO]

Cette commande spécifie 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 signifie qu'elle sera toujours activée et installée.

InstType "complet"
InstType "minimal"

Section "une section"
SectionIn 1 2
SectionEnd

Section "une autre section"
SectionIn 1
SectionEnd

4.6.1.5 SectionGroup

[/e] nom_section_group [index_sortie]

Cette commande insère un groupe de section. Le groupe de section sera fermé avec SectionGroupEnd, 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 sections du groupe de section seront développées 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'un groupe de section de désinstallation.

SectionGroup "du matos"
Section "une section"
SectionEnd
Section "une autre section"
SectionEnd
SectionGroupEnd

4.6.1.6 SectionGroupEnd

Ferme un groupe de section ouvert avec SectionGroup.

4.6.2 Section de désinstallation

Une section spéciale nommée 'Uninstall' doit être créée afin qu'une désinstallation soit générer. 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 ; autosuppression (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.

Notez que dans le code de désinstallation, $INSTDIR contient l'emplacement où le désinstallateur se trouve. Il ne contient pas nécessairement la même valeur que dans l'installateur.

Précédent | Sommaire | Suivant


A propos | Contacts | Publicité | Info légales | © Todae 2006-2008

Sites partenaires : discount | avis rémunérés| sorties DVD | Winamp