Az NSIS szkriptvezérelt telepítőkészítő rendszer

Utasítások

Az NSIS rendszer alapesetben (kiegészítők használata nélkül) nem támogat semmilyen különösebb vezérlési szerkezetet, prograozási stílusa talán az Assembly-hez áll a legközelebb. Az elágazások például flag-eket állító utasításokkal és ugrásokkal (Jump) oldható meg.

Címkék

A címkék a Goto utasítások, vagy a különböző elágazási utasítások (például IfErrors, MessageBox, IfFileExists és StrCmp). A címkéknek szekción vagy függvényen belül kell elhelyezkednie. A címkék láthatósága lokális, tehát csak az őket körülvevő függvényben, vagy szekcióban használhatóak. Egy címke deklarálása a következőképpen lehetséges:

SajatCimke:

A címkéke nem kezdődhetnek -, +, !, $ vagy számokat. Címkék használatakor - azok hivatkozásakor - az üres szöveg ("") és a 0 címkék a következő utasítást jelölik (tehát Goto 0 azt jelenti, mintha nem is lenne ugrás). A - jellel kezdődő címkék globálisak, így bármely függvényből vagy szekcióból oda lehet ugrani (ez alól van egy kivétel: nem lehet telepítő szakcióból eltávolító szekcióba ugrani és fordítva).

Relatív ugrások

A címkékkel ellentétben a relatív ugrások - ahogy a név is sugallja - relatívak a hívásuk helyéhez. Ilyen ugrások bárhol használhatóak, ahol címkék is. A relatív ugrások számokkal jelölhetőek: +1 a következő utasításra ugrik (a futás normál haladása), +2 átugrik egy utasítást, és a futás az azt követő utasítással folytatódik. A -2 kettő utasítással hátrébb ugrik (így kialakíthatóak ciklusok is).

Utasításnak számít minden, ami futásidőben ténylegesen lefut. Ilyenek például a MessageBox, Goto, GetDLLVersion, FileRead. Az AddSize, Section, SectionGroup, SectionEnd, SetOverwrite, Name, SetFont, LangString, valamint minden fordítói flag nem számít utasításnak, mert fordításidőben hajtódnak végre.

Példa:

Goto +2 MessageBox MB_OK "You will never ever see this message box" MessageBox MB_OK "The last message was skipped, this one should be shown" Goto +4 MessageBox MB_OK "The following message will be skipped" Goto +3 MessageBox MB_OK "You will never ever see this message box" Goto -3 MessageBox MB_OK "Done"

További hasznos utasítások

A File utasítás:

[/nonfatal] [/a] ([/r] [/x file|wildcard [...]] (file|wildcard) [...] | /oname=file.dat infile.dat)
A parancs a telepítőkészletbe becsomagolja a megadott kifejezésre illeszkedő fájlokat, mappákat, és telepítés közben a megadott helyre kicsomagolja őket.

Az Abort paranccsal megszakíthatjuk a telepítési folyamatot. Az utasításnak megadható egy argumentum is, mely a felhasználó tájékoztatására szolgál, az itt megadott üzenet a telepítői felületen megjelenik.

A MessageBox utasítás egy üzenetablakot mutat a felhasználó számára. Az utasítással megadható a megjelenő üzenetablak stílusa (például a rajta megjelenő ikon: hiba, információ...), a megjelenített gombok, valamint megadható, hogy a lenyomott gomb alapján hol folytatódjon a kód futása. Példa:

MessageBox MB_OK "simple message box" MessageBox MB_YESNO "is it true?" IDYES true IDNO false true: DetailPrint "it's true!" Goto next false: DetailPrint "it's false" next: MessageBox MB_YESNO "is it true? (defaults to yes on silent installations)" /SD IDYES IDNO false2 DetailPrint "it's true (or silent)!" Goto next2 false2: DetailPrint "it's false" next2:
Az utasítás paramétereinek részletes leírása, és a megadható tulajdonságok listája megtalálható a rendszer dokumentációjának ezen utasításra vonatkozó részében.

A Return utasítás visszatér az adott szekcióból, függvényből.

Function func StrCmp $0 "return now" 0 +2 Return # do stuff FunctionEnd Section Call func ;"Return" will return here SectionEnd

Mivel a rendszer rengeteg utasíátst tartalmaz a telepítés közbeni teendőkkel kapcsolatosan (léteznek például beépített utasítások a rendszerleíró adatbázis, illetve INI fájlok manipulálására is), itt csak a legfontosabbak kerültek bemutatásra. Az összes beépített funkció leírása megtalálható az NSIS dokumentációjában.