Създаване на инсталационна програма с 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

В този раздел се описват всички файлове, които ще бъдат включени в инсталационната програма. Ето как изглежда описанието на един файл.

  1. Source: fileName.exe; DestDir: {app}; Flags: flag1 .. flagN

В Source се указва името на файла или пътя до него. Позволява се и използването на .т.н wildcards (* заменя няколко знака, ? заменя един знак).

  1. Source: "file*а.exe"; DestDir: {app};

DestDir указва къде да бъде инсталиран файла.

Flags указва допълнителни инструкции за инсталирането на файла.

Ето и няколко примера:

  1. Source: myprogram.exe; DestDir: {app}
  2. Source: My Help.hlp; DestDir: {app}
  3. Source: ReadMe.txt; DestDir: {app}; Flags: isreadme
  4. Source: *.wav; DestDir: {app}\sound
  5. Source: *.jpg; DestDir: {app}\gallery
  6. Source: data\*; DestDir: {app}\data; Flags: recursesubdirs
  7. Source: dojob.exe; DestDir: {app}; Flags: deleteafterinstall
  8. Source: website.url; DestDir: {app}

Ако вашата програма е писана на езика Visual Basic 6 ще са ви необходими няколко файла, за да работи вашето приложение на компютър, на който не е инсталиран Visual Basic. Тези файлове можете да изтеглите от сайта на Inno Setup. Ето и как трябва да бъдат инсталирани самите те.

  1. Source: vbfiles\stdole2.tlb; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile regtypelib
  2. Source: vbfiles\msvbvm60.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile regserver
  3. Source: vbfiles\oleaut32.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile regserver
  4. Source: vbfiles\olepro32.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile regserver
  5. Source: vbfiles\asycfilt.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile
  6. Source: vbfiles\comcat.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile regserver

При инсталирането на ActiveX контрол, също има няколко особености. Ето как е препоръчителният начин за извършване на това:

  1. Source: "SomeFile.ocx"; DestDir: "{sys}"; Flags: restartreplace sharedfile regserver

Dirs

Ако искате да създадете директории в директорията, където ще бъде инсталирана програмата ви, ще трябва да ги опишете в този раздел. Ето как става това.

  1. Name: {app}\data Flags: uninsneveruninstall
  2. Name: {app}\img

Icons

Тук се описват всички икони, които искате да бъдат създадени.

  1. Name: {group}\My Program; Filename: {app}\MyProgram.exe
  2. Name: {group}\View Readme; Filename: {app}\ReadMe.txt
  3. Name: {group}\Visit Program Website; Filename: {app}\website.url
  4. Name: {group}\Uninstall My Program; Filename: {uninstallexe}
  5. Name: {group}\View Help; Filename: {app}\My Help.hlp
  6. Name: {userdesktop}\My Program; Filename: {app}\My Program.exe; Tasks: desktopicon

Tasks

Т.н. задачи за инсталатора. Например, ако искате след като целият процес приключи да попитате потребителя дали иска да създаде иконка на програмата върху своя десктоп, трябва да направите следното:

  1. Name: desktopicon; Description: "Създай икона върху десктопа"; GroupDescription: "Допълнителни икони"

Не забравяйте да укажете името на задачата в раздела [Icons], както е показано в примера.

Run

Ако искате след като инсталацията приключи да стартирате някакво приложение.

  1. Filename: {app}\MyProgram.exe; Description: "Стартирай програмата"; Flags: postinstall
  2. Filename: {sys}\net.exe; Parameters: "start SomeServiceName"; Flags: runhidden

UninstallRun

Същото като предишния раздел, като приложението се стартира при деинсталиане на програмата ви.

  1. Filename: {sys}\net.exe; Parameters: "stop SomeServiceName"; Flags: runhidden

Финал

Със самата програма вървят и няколко примерни файла, където са показани различни похвати. От файловете към тази статия можете да видите как изглежда един примерен скрипт за Inno Setup.

Източници

Файлове, към тази статия:
articles/example.iss

Коментари

Браво, юнак! Много полезна статия. Желая ти крепко здраве и още много по-големи успехи...
Калин Младенов @ 09.07.2008 13:39
обратно към всички статии