Създаване на инсталационна програма с InnoSetup
Въведение
Inno Setup е прекрасен безплатен инструмент за изграждане на професионални инсталиращи програми чрез скриптове. Получените инсталатори се състоят по ваш избор от един или няколко файла, използват стандартен интерфейс тип "wizard", могат да инсталират шрифтове, да регистрират библиотеки DLL, да изтриват и стартират файлове, да работят скрито (вкл. при деинсталиране), да поставят препратки навсякъде – в менюто Start, на работния плот и т.н. – и поддържат пълно деинсталиране. Можете да задавате типове инсталация – минимална, пълна, потребителска и т.н., да включвате незадължителни елементи и да изграждате многоезични инсталатори.
За по-сложни инсталации е възможно използването на скриптовия език IPS (Innerfuse Pascal Script) на основата на Pascal, чрез който в инсталатора могат да се добавят допълнителни страници, да се извършват изчисления, включващи стойностите на свързаните с инсталацията променливи и др.
Можете да изтеглите Inno Setup от сайта на програмата
Начало на работата
Структурата на Inno Setup скрипта много наподобява структурата на един INI файл – разделен е на раздели и във всеки раздел се описва различна част.
Има няколко помощни програми, които предлагат възможността да се създаде скрипт за Inno Setup. Една от най-известните е ISTool. Можете да откриете още подобни помощни инструменти в Third-Party Files раздела от сайта на програмата.
Основни понятия
Константи
Ето и някои от основните константи, които ще използваме:
- {pf} C:\Program Files\
- {app} директорията, където ще бъде инсталирана програмата
- {sys} C:\Windows\system32\
- {win} C:\Windows\
- {tmp} временната директория, в която инст. Програма ще поставя своите временни файлове
- {fonts} директорията с шрифтовете
- {group} директорията на програмата в Start Menu папката
- {userdesktop} път до работния плот (Desktop)
Флагове
- ignoreversion – инсталаторът не проверява версията между файловете (ако има съществуващи файлове и вие искате да сложите нови на тяхно място), а директно замества старите файлове с новите
- isreadme – указва, че файлът е README; само един файл от пакета може да притежава този флаг
- recursesubdirs – инсталаторът проверява и поддиректориите на дадена директория
- deleteafterinstall – указва на инсталатора да изтрие файла веднага след като инсталацията е завършила или прекратена; това е много полезно, ако искате да използвате временно някои файлове
- restartreplace – замества файла след рестартиране на компютъра; много полезно, когато искате да инсталирате някаква библиотека например, но в момента на инсталацията тя е недостъпна
- uninsneveruninstall – указва, че файлът няма да бъде премахнат, когато програмата бъде деинсталирана
- sharedfile – указва, че файлът може да бъде използван от много приложения едновременно; повечето файлов в системната директория на Windows трябва да имат този флаг (вкл. OCX, BPL и DPL файловете)
- regtypelib – регистрира TLB файлове
- regserver – регистрира ActiveX контроли
- noregerror – не показва грешка (ако има такава) при регистриране на библиотека или ActiveX контрол
- onlyifdoesntexist – инсталира файла, само ако той не съществува вече
- postinstall – операцията се извършва след като инсталационният процес приключи
- runhidded – процесът се извършва прикрито (без потребителя да вижда това)
Секции
Setup
Тази е основната част от скрипта. В нея си описва поведението на инсталационната програма. Ще ви покажа основните променливи, които се указват тук, но имайте в предвид, че има още такива, които указват различни допълнителни неща за самата програма.
- Compression
- вид на компресията на файловете; обикновено се използва т.н. LZMA компресия
- Compression=lzma
- OutputDir
- път до директорията, където ще бъде записана инсталационната програма
- OutputDir=C:\myprogram\install
- SourceDir
- път до директорията с необходимите файлове
- SourceDir=C:\myprogram
- OutputBaseFilename
- име на изходния файла на инсталационната програма
- OutputBaseFilename=myprogram_setup
- VersionInfoVersion
- версия на вашата програма
- VersionInfoVersion=3.0
- VersionInfoCompany
- име на вашата компания
- VersionInfoCompany=Lil John Company
- VersionInfoDescription
- описание на вашата програма
- VersionInfoDescription=My Program Description
- VersionInfoCopyright
- информация за запазени права
- VersionInfoCopyright=2006 My Program Copyright
- AppName
- име на вашата програма
- AppName=My Program
- AppVerName
- име на вашата програма и нейната версия
- AppVerName=My Program 3.0
- AppCopyright
- информация за запазени права върху вашата програма
- AppCopyright=Copyright © 2004-2006 Lil John Company
- AppPublisher
- издател (разпространител)
- AppPublisher=Lil John Company
- AppPublisherURL
- интернет сайт на издателя
- AppPublisherURL=http://dortikum.net
- AppSupportURL
- интернет сайт на подръжката
- AppSupportURL=http://dortikum.net
- AppUpdatesURL
- интернет сайт за сваляне на ъпдейти
- AppUpdatesURL=http://dortikum.net
- EnableDirDoesntExistWarning
- дали инсталационната програма да показва съобщение, ако потребителят е избрал директория, която не съществува
- EnableDirDoesntExistWarning=no
- DefaultDirName
- директория по подразбиране за инсталиране на вашата програма
- DefaultDirName={pf}\My Program
- DefaultGroupName
- група по подразбиране за вашата програма
- DefaultGroupName=My Program
- AllowNoIcons
- дали потребителя може да избира дали инсталационната програма да създаде икони в Start менюто и работния плот
- AllowNoIcons=yes
- AllowRootDirectory
- дали потребителя може да въведе главна директория (напр. C:\) за инсталиране на програмата
- AllowRootDirectory=yes
- SetupIconFile
- път до икона за инсталационната програма
- SetupIconFile=C:\myprogram\icon.ico
Files
В този раздел се описват всички файлове, които ще бъдат включени в инсталационната програма. Ето как изглежда описанието на един файл.
- Source: fileName.exe; DestDir: {app}; Flags: flag1 .. flagN
В Source се указва името на файла или пътя до него. Позволява се и използването на .т.н wildcards (* заменя няколко знака, ? заменя един знак).
- Source: "file*а.exe"; DestDir: {app};
DestDir указва къде да бъде инсталиран файла.
Flags указва допълнителни инструкции за инсталирането на файла.
Ето и няколко примера:
- Source: myprogram.exe; DestDir: {app}
- Source: My Help.hlp; DestDir: {app}
- Source: ReadMe.txt; DestDir: {app}; Flags: isreadme
- Source: *.wav; DestDir: {app}\sound
- Source: *.jpg; DestDir: {app}\gallery
- Source: data\*; DestDir: {app}\data; Flags: recursesubdirs
- Source: dojob.exe; DestDir: {app}; Flags: deleteafterinstall
- Source: website.url; DestDir: {app}
Ако вашата програма е писана на езика Visual Basic 6 ще са ви необходими няколко файла, за да работи вашето приложение на компютър, на който не е инсталиран Visual Basic. Тези файлове можете да изтеглите от сайта на Inno Setup. Ето и как трябва да бъдат инсталирани самите те.
- Source: vbfiles\stdole2.tlb; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile regtypelib
- Source: vbfiles\msvbvm60.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile regserver
- Source: vbfiles\oleaut32.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile regserver
- Source: vbfiles\olepro32.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile regserver
- Source: vbfiles\asycfilt.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile
- Source: vbfiles\comcat.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile regserver
При инсталирането на ActiveX контрол, също има няколко особености. Ето как е препоръчителният начин за извършване на това:
- Source: "SomeFile.ocx"; DestDir: "{sys}"; Flags: restartreplace sharedfile regserver
Dirs
Ако искате да създадете директории в директорията, където ще бъде инсталирана програмата ви, ще трябва да ги опишете в този раздел. Ето как става това.
- Name: {app}\data Flags: uninsneveruninstall
- Name: {app}\img
Icons
Тук се описват всички икони, които искате да бъдат създадени.
- Name: {group}\My Program; Filename: {app}\MyProgram.exe
- Name: {group}\View Readme; Filename: {app}\ReadMe.txt
- Name: {group}\Visit Program Website; Filename: {app}\website.url
- Name: {group}\Uninstall My Program; Filename: {uninstallexe}
- Name: {group}\View Help; Filename: {app}\My Help.hlp
- Name: {userdesktop}\My Program; Filename: {app}\My Program.exe; Tasks: desktopicon
Tasks
Т.н. задачи за инсталатора. Например, ако искате след като целият процес приключи да попитате потребителя дали иска да създаде иконка на програмата върху своя десктоп, трябва да направите следното:
- Name: desktopicon; Description: "Създай икона върху десктопа"; GroupDescription: "Допълнителни икони"
Не забравяйте да укажете името на задачата в раздела [Icons], както е показано в примера.
Run
Ако искате след като инсталацията приключи да стартирате някакво приложение.
- Filename: {app}\MyProgram.exe; Description: "Стартирай програмата"; Flags: postinstall
- Filename: {sys}\net.exe; Parameters: "start SomeServiceName"; Flags: runhidden
UninstallRun
Същото като предишния раздел, като приложението се стартира при деинсталиане на програмата ви.
- Filename: {sys}\net.exe; Parameters: "stop SomeServiceName"; Flags: runhidden
Финал
Със самата програма вървят и няколко примерни файла, където са показани различни похвати. От файловете към тази статия можете да видите как изглежда един примерен скрипт за Inno Setup.
Източници
- Файлове, към тази статия:
- articles/example.iss
Коментари
- Браво, юнак! Много полезна статия. Желая ти крепко здраве и още много по-големи успехи...
- Калин Младенов @ 09.07.2008 13:39

