Pentru a crea un pachet de instalare se scriu randuri de cod intr-un editor, randuri in care se specifica tot felul de detalii precum:
Numele programului, folderul principal, grupul din start menu, tot felul de iconite, limbi de instalare, chei pentru registri si multe multe altele.
Fisierul care contine aceste randuri instructiuni este simplu text, are extensia .ISS.
Fisierul seamana oarecum cu unul .INI, sunt mai multe sectiuni definite intre paranteze drepte, precum: [Setup], [Languages], [Files], [Registry], [run], [Icons] etc.
Pun mai jos un astfel de fisier de configurare, cel pe care l-am creat pentru jocul Pontes Escape.
Dupa exemplul acesta, mai scriu si alte informatii generale:
Cod: Selectaţi tot
; Prima sectiune defineste informatii de baza, le comentez cu ";" (punct si virgula):
[Setup]
; Un id unic al aplicatiei, poate fi generat automat unul din optiuni:
AppId={{6988E549-D821-4267-BCDC-DC9132D228AD}
; Numele aplicatiei
AppName=Pontes Escape
; Numele si versiunea:
AppVerName=Pontes Escape 1.1
; Folderul de baza, la el ne vom referi apoi cu [app], ramane o constanta:
DefaultDirName={pf}\Pontes Games\Pontes Escape
AppPublisher=Asociatia Pontes
AppPublisherURL=http://www.pontes.ro/
AppSupportURL=http://www.games.pontes.ro/
AppUpdatesURL=http://www.games.pontes.ro/
; Sa nu intrebe unde vrem sa instalam, am vrut fortat in Program Files\Pontes Games::
DisableDirPage=yes
; Sa nu intrebe ce grup vrem in Start Menu:
DisableProgramGroupPage=yes
; Care sa fie grupul din Start Menu:
DefaultGroupName=Pontes Games\Pontes Escape
; Continutul unui fisier care sa apara la inceput, inainte de a da un Next:
InfoBeforeFile=Inainte.txt
; Iconita fisierului installer.exe:
SetupIconFile=Pontes.ico
; Fisierul rezultat in urma compilarii:
OutputBaseFilename=Pontes_Escape_Ro_Installer
; Tipul compresiei:
Compression=none
SolidCompression=no
; Sectiunea pentru limbi, daca sunt definite mai multe, apare un combo la inceputul instalarii:
[Languages]
Name: "Romana"; MessagesFile: "compiler:Languages\Romanian.isl"
; Mesaje care sa apara pe parcursul instalarii, sectiunea [messages]:
[Messages]
BeveledLabel=www.pontes.ro DIT
: Fisierele de instalare, de unde sa le ia si unde sa le puna.
; In general le punem in [app], adica in folderul din {pf} (constanta pentru Program Files):
[Files]
Source: "Pontes Escape.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "Pontes.ico"; DestDir: "{app}"; Flags: ignoreversion
Source: "Sigla.jpg"; DestDir: "{app}"; Flags: ignoreversion
Source: "sounds.dat"; DestDir: "{app}"; Flags: ignoreversion
Source: "Ajutor Pontes Escape.html"; DestDir: "{app}"; Flags: ignoreversion;
Source: "*.dll"; DestDir: "{app}"; Flags: ignoreversion;
Source: "NVDA_License.txt"; DestDir: "{app}"; Flags: ignoreversion;
; Alte taskuri care sa apara, precum intrebarea daca se doreste crearea unei iconite pe Desktop:
[Tasks]
Name: desktopicon; Description: "Creare iconiţă pe Desktop "
; Sectiune apentru iconite:
[Icons]
Name: "{group}\Pontes Escape"; Filename: "{app}\Pontes Escape.exe"; IconFilename: "{app}\Pontes.ico"
; Randul urmator se refera la iconita de pe Desktop, i se atribuie acel task definit mai sus pentru a fi optionala:
Name: "{commondesktop}\Pontes Escape"; Filename: "{app}\Pontes Escape.exe"; IconFilename: "{app}\Pontes.ico"; Tasks: desktopicon
Name: "{group}\Ajutor Pontes Escape"; Filename: "{app}\Ajutor Pontes Escape.html"
Name: "{group}\Donaţie către Asociaţia Pontes"; Filename: "http://www.pontes.ro/ro/contact/donatie.php"
Name: "{group}\Site-ul Asociaţiei Pontes"; Filename: "http://www.pontes.ro/"
Name: "{group}\Dezinstalare Pontes Escape"; Filename: "{uninstallexe}"
; Sectiunea care specifica ce sa se intample in momentul dezinstalarii:
[UninstallDelete]
; Am pus o singura linie care sa spuna sa fie sters folderul [app], chiar daca am pus in el altceva dupa instalare:
Type: filesandordirs; Name: "{app}\*"
; Sectiune care specifica ce sa se intample la instalare:
[InstallDelete]
; Am setat sa fie stearsa orice iconita de pe Desktop care incepe cu Pontes Escape
; Asta pentru ca poate apare un numar in plus, precum 1.1 si era 1.0:
Type: files; Name: "{commondesktop}\Pontes Escape*"
; Sa stearga folderul [app] daca era deja, asta pentru ca sunt pachete diferite in functie de limbi si nu vroiam sa ramana resturi daca cumva nu a fost dezinstalata o versiune anterioara:
Type: filesandordirs; Name: "{app}\*"
; Sa fie sters si grupul din Start Menu:
Type: files; Name: "{group}\*"
; Sectiune care specifica ce sa fie lansat in timpul sau dupa instalare:
[run]
; Check box pentru citirea fisierului ajutor inainte de Finish:
Filename: "{app}\Ajutor Pontes Escape.html"; Description: "Citeşte fişierul Ajutor Pontes Escape"; Flags: postinstall shellexec skipifsilent
; Check box care intreaba daca se doreste lansarea imediata dupa Finish a jocului:
Filename: "{app}\Pontes Escape.exe"; Description: "Lansează Pontes Escape"; Flags: postinstall nowait skipifsilent unchecked
Pe langa flags se pot seta la fiecare instructiune care scrie fisier sau creaza iconita si permissions precum: "everyone_full".
In caz ca am setat mai multe limbi, si le-am denumit in sectiunea [Languages] ca "Romana", "English" si "Italiano", putem specifica la un rand de instructiune "languages: Italiano", astfel acea instructiune se va intampla doar daca a fost ales din combo box-ul de la inceput Italiano ca limba.
Inno Setup are fisiere pentru toate limbile.
Intr-o sectiune [Registry] se pot specifica unde si ce chei sa se puna, daca se doreste stergerea lor automata la dezinstalare, de asemenea permisiunile si altele.
Pentru a prelua o mie de fisiere cu extensia .JPG, putem folosi wildcards: "*.jpg" se refera la toate fisierele de acest tip.
Daca toate aceste setari care sunt de ordinul sutelor nu sunt suficiente pentru ca se doreste ceva si mai complex, precum cautarea in calculator a unui fisier x.txt, de existenta lui depinzand instalarea cu succes sau nu a programului sau a unei singure componente, putem scrie cod in Pascal, cod care poate fi inclus in pachetul de instalare pentru a fi executat pentru o anume instructiune.
manualul este de tip .CHM, deci usor de citit: cuprins in tree view.
In caz ca e cineva interesat, putem in topicul acesta sa vorbim despre setari mai avansate, sa mai dam exemple si altele.
Mie mi se pare o unealta excelenta, practic pastrezi fisierul .ISS pentru un program, i se pot aduce modificari ulterioare, oricand poate fi recreat pachetul de instalare cu optiunea Compile din meniul Run sau din meniul context al fisierului .ISS.