NSIS

84
Nullsoft Scriptable Install System Copyright © 2003, Mathias Simmack Version 1.7.1.090215

description

NSIS

Transcript of NSIS

Nullsoft Scriptable Install SystemCopyright 2003, Mathias SimmackVersion !"!!0#02$Nullsoft Scriptable Install System%ber &ieses 'okument'iese'okumentationist keineprofessionelle(nleitung, &ie&en(nsprucherhebt, )irklich*e&e +unktion ,on NSIS -u erkl.ren! Ich habe mich auf &ie grun&legen&en +unktionen beschr.nkt, &amit Sie eine lauff.hige Installation erstellen k/nnen!Mein 'ank f0r &ie (nregung un& 1nterst0t-ung, so)ie f0r 2ritik un& 3ob geht anChristopher 4armsMarkus +uchs2Nullsoft Scriptable Install SystemInhaltGrundlagen......................................................................................................................................4Eine Beispielinstallation..................................................................................................................5(llgemeine Vorbereitungen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!56run&einstellungen im Skript!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5'as 3i-en-abkommen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"'ateien hin-uf0gen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"Shell78r)eiterungen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#Spe-ielle Sektionen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!01ntergeor&nete Sektionen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0'ie 1ninstall7Sektion!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2omponentenaus)ahl beim 8ntfernen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9Installationstypen &efinieren!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$Verkn0pfungen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5Sprungmarken...............................................................................................................................19Spracheinstellungen.....................................................................................................................20'ie Sprache f0r &ie mo&erne 61I .n&ern!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2Das Skript kompilieren..................................................................................................................214in)eis -u b-ip2 un& -ur mo&ernen :berfl.che!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!22Die moderne GU............................................................................................................................22'as 3i-en-abkommen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!23Symbole un& ;itmaps tauschen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!29

Die !egistr"....................................................................................................................................29'ateitypen registrieren!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2#'=:?'s un& bin.re 'aten!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3'ie ?echtefrage unter =in&o)s N@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3Selbst aufr.umen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!32#$Dateien......................................................................................................................................%%Upgrades........................................................................................................................................%4&ehr'enut(er$Umge'ungen.........................................................................................................%)Die einge'aute Skriptsprache......................................................................................................%*'as ;etriebssystem ermitteln!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3>Sektionen &eakti,ieren un& ,ersch)in&en lassen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3>;in ich (&ministrator, o&er )asA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!90'ialogboBen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9'ie NSIS7Variablen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!920Dateien do4nloaden......................................................................................................................12@imeout!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>3'as Interface auf 'eutsch!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>34Nullsoft Scriptable Install System6run&lagenNSIS ist ein Skriptbasiertes Installationssystem! Im 6egensat- -u Inno Setup fan& ich &ie SyntaB aberanfangset)asge)/hnungsbe&0rftig! 'asmag-)arlet-tlich(nsichtssachesein, aberich muss gestehen, &ass ich &och h.ufiger in &ie 'okumentation schauen musste, als &ies bei Inno Setup &er +all )ar!NSIS gef.llt mir aber in ;e-ug auf &ie 6r/De &er Setup&ateien, )eil &iese relati, klein sin&! 8in typisches Setup liegt El.sst man &ie -u installieren&en 'ateien mal auDen ,orF im ;ereich ,on 30 bis$02ilobytes! 'ash.ngt auch,on&enSymbolenun&;itmapsab, &ieSie,er)en&en! Ge auf).n&iger un& farbintensi,er, &esto gr/Der )ir& es nat0rlich!(m ;eispiel &es beim &u,ru, von 3E%c&32 -eisen Sie einen un7ltien -ert zu, erhalten Sie eine 1ehlermeldun2Strings'ie Ku)eisung ,on =erten geschieht bei NSIS haupts.chlich mit CStrCp9C! :b)ohl es sich &abei haupts.chlichumeineStringroutinehan&elt,kannmansieauch-urKu)eisung,onInteer7=erten benut-en! %blicher)eise aber )ir& man )ohl so arbeitenStrCp9 %@ "NSIS-Dokumentation"StrLen %> "%@"*e""ae!ox *!F'B \"%\"%@%\" enthlt %> Meichen"44Nullsoft Scriptable Install Systemnt*e""ae!ox *!F'B "%@"'ass es aber auch anspruchs,oller sein &arf, -eigt &as folgen&e kleine ;eispiel! =ir benut-en &as 8rgebnis unserer (&&ition un& multipli-ieren es mit 2! 'ann &i,i&ieren )ir es -uerst &urch $ un& )eisen &as 8rgebnis einer neuen Variable -u! 8ine &ritte Variable muss f0r eine modulo7:peration herhalten, &amit )ir &en ?est &er 'i,ision ermitteln k/nnenInt'p %@ %@ 0 >KInt'p %> %@ 5 IInt'p %K %@ S I*e""ae!ox *!F'B \"%@ di8idiert durch I 6 %> -X &e"t %K"-eitere In,ormationen ,inden Sie in der !okumentation im /apitel E unter dem Stich$ort3Inteer Support3.Mit CIntCmpC k/nnen Sie Integer7=erte ,ergleichen! 'abei steht an erster Stelle &er Sprung, f0r &en+all, &ass&ie=ertei&entischsin&! (n-)eiter Stellefolgt &er Sprung, )enn&er erste 0bergebene =ert kleiner ist! 1n& -ulet-t folgt &er Sprung, )enn &er erste =ert gr/Der ist!Not)en&ig ist &abei eigentlich nur Sprung im +all &er 6leichheit! 'ie bei&en an&eren Spr0nge sin& optionale (ngaben!StrCp9 %@ ">"StrCp9 %> "K"IntCmp %@ %> @ RJ RI*e""ae!ox *!F'B "%@ i"t leich %>"oto done*e""ae!ox *!F'B "%@ i"t kleiner al" %>"oto done*e""ae!ox *!F'B "%@ i"t rUYer al" %>"doneESie ,inden all diese kleinen Spielereien im beilieenden Skript 3s'ac(.nsi3.45Nullsoft Scriptable Install System!egistr"schl2ssel au,listenIn&iesem2apitel m/chte ich kur- -eigen,)ieman Schl0ssel in &er?egistryauflisten un& &er ?eihenach&urchsuchenkann! 'a-u,er)en&eich&ie3iste&er installiertenSoft)are, &ie&er Installer Em/glichst mit &em 2larnamen aus &er SystemsteuerungF an-eigen soll! 1m &en Kugriff einfacher -u gestalten habe ich -un.chst ein Symbol &eklariert;define :NINST&,(B,C \"Soft3are\*icro"oft\?indo3"\CurrentDer"ion\:nin"tall"'ann set-en )ir -un.chst &en K.hler Ein &er Variablen C%@CF auf Null un& &eklarieren eine Sprung7marke,StrCp9 %@ @LoopE'as(uflisten&er Schl0ssel erfolgt mit &er +unktionC,num&eBe9C, &ie-uerst eineVariable er)artet, &ie &en gefun&enen Schl0sselnamen -uge)iesen bekommen soll! 'anach folgen ?oot un& Schl0ssel in &er ?egistry! (m Schluss steht &ann &er In&eBU Ouasi &er eben er-eugte K.hler,num&eBe9 %> ABL* "%P "PK))T-+>P,->>D.-!DKC--TOD!K!J)+TK="Im Setup benut-e ich nun &ie MSI7+unktion C*"i4uer9ProductStateC, um -u ermitteln, ob &as +.D>>D!CKT-DOK!J!+)KTIn &iesem Schl0ssel fan& sich u!a! &ie aktuelle Versionsnummer im +ormat @x@>@P@@@@!SoeinenSchl0ssel m0ssen)ir nunauch er-eugen! Ku beachtenist&abeialler&ings,&assein bereits benut-ter >J!@J@@@@C>>@-)!CC )ir&!'iese (ngabe )ir& unter CABC:\Soft3are\*icro"oft\In"taller\:pradeCode"C gespeichert un& enth.lt le&iglich &en o!g! C,er&rehtenC ";define *IN'& "-";define &,L,)S, "@";define !:ILD "@"Die 6ersionsin,ormationen speichern;eginnen )ir mit &em logischen ersten SchrittL &em Speichern &er Versionsinformationen! 'a-u benut-en )ir &as Makro CP&'D:CTF?&IT,FD,&SI'NIN+'C, &as als