IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Tvoríme inštalácie k programom v Inno Setup Compiler

Ak ste vytvorili nejaký program alebo hru a chcete ho publikovať na webe, určite ste premýšľali o tom, že k nemu vytvoríte inštaláciu. K tvorbe inštalácií je veľa rôznych programov - niektoré sú zadarmo, niektoré platené, niektoré nefungujú na Viste a W7, niektoré obsahujú reklamy. Jeden program ale výrazne vyčnieva z radu a to Inno setup compiler.

"Softvér ":img/wizard.png Inno setup compiler je voľne šíriteľný a plne prispôsobiteľný program k tvorbe inštalácií pre systém Windows. Je extrémne jednoduchý na ovládanie a obsahuje veľa možností. Preto je to najpoužívanejší inštalačný program, ktorý využívajú ako voľne šíriteľné, tak platené programy aj hry (napr. Skype).

V Inno Setup sa programuje pomocou skriptu, ktorý sa tiež môže automaticky vygenerovať jednoduchým sprievodcom. Okrem všetkých základných operácií ako vloženie zástupcu na plochu, ponúk štart či rýchleho spustenia obsahuje mnoho vychytávok.

V tejto chvíli ma napadá možnosť vloženia vlastných textov a obrázkov do installeru, zabezpečenie práv vo windows Vista a Windows 7, podpora viacerých jazykov, kontrola bežiaceho programu pomocou mutexu (aby užívateľ program najskôr vypol, keď ho preinštalovávať novou verziou), zobrazenie a potvrdenie licenčných podmienok, podpora skinov, vďaka možnosti zvolenia vysokej kompresie má inštalácia veľmi malú veľkosť (len pár KB navyše). Pre pokročilejších užívateľov nie je problém vďaka zabudovanému skriptovaciemu jazyku podobnému Pascalu naprogramovať najrôznejšie kontroly a funkcie (napríklad sťahovanie potrebných balíčkov alebo kontrolu přtomnosti .NET frameworku).

Skript Inno setupu vyzerá nasledovne:

"Softvér ":img/innodog.png

Teraz malé zamyslenie nad tým, prečo k programu inštalácii pridať ...

5 dôvodov, prečo by mal program obsahovať inštaláciu


- Jednoduchosť a prehľadnosť. Sprievodca inštaláciou je plne prispôsobiteľný, jednoduchý a prehľadný. Je navrhnutý tak, aby sedel každému užívateľovi. Pohodné nainštaluje vašu aplikáciu, zaradí ju do zoznamu nainštalovaných aplikácií, podľa voľby používateľa vytvorí ikonu na ploche, v ponuke štart alebo v rýchlom spustení. Samozrejme tiež obsahuje rovnako rýchlu odinštaláciu.
  • Početnejšie používanie - Vďaka tomu, že je program uvedený v zozname nainštalovaných aplikácií, v ponuke štart a prípadne aj ako ikona na ploche, užívateľ dotyčný program nielen nezabudne používať, ale tiež ho používa častejšie. Najhoršie, čo môže byť, je program bez inštalácie zahrabaný v priečinku na ploche, pomenované "Nová zložka 5". Ďalšou výhodou je, že sa váš program neobjaví niekde na stiahnutie nejako osekaný v zipsu, ako to majú portable verzie zvykom. Každý si stiahne originálnu inštaláciu a to poväčšinou z vášho webu.
  • Dostupnosť - Nepotrebujete žiadny winzip ani winrar, nemusíte pre nič vytvárať zložku, program je dostupný každému.
  • Spätná väzba cez web - Po inštalácii je u vašej aplikácie v ponuke štart odkaz na internetové stránky, veľmi jednoduchá cesta pre spokojného používateľa dostať sa k vám pre ďalší softvér či informácie. Možno namietate, že môžem dať adresu do nejakého about dialógu priamo v aplikácii. Iste, že môžem, ale ako už som sa zmienil - veľmi veľa ľudí je zvyknutých hľadať link tu, pretože väčšina softvéru ho tam jednoducho má.
  • Windows je na to navrhnutý - Všetci, ktorí odsudzujete inštalácie, si uvedomte, že Microsoft Windows je systém, navrhnutý pre inštalácie. Takto sa do neho jednoducho programy dostávajú. Ten, kto inštalácia nepoužíva, sa ochudobňuje o možnosti systému Windows, ktoré pre nainštalované aplikácie ponúka (mám na mysli ponuku štart, nainštalované aplikácie a podobne, divili by ste sa, koľko ľudí toto používa).

Niet divu, že každý komerčný softvér má inštaláciu ;-) Inštalácia nie je väčšinou len u menej obľúbených freewarových aplikácií alebo pri programoch, ktorým nezáleží na popularite a stahovanosti.

Mýty o inštaláciách


Necháva to bordel v počítači, každá inštalácia mi počítač spomalí - Inno Setup je kvalitný program, ktorý za sebou nezanecháva žiadny "bordel" v počítač, ako si mnohí anti-Inštalátor myslí. Niekedy sa pozrite, čo vám nechávajú v registroch někteé programy bez inštalácie.

Inštalácia zdržujú - Tento argument som nikdy nepochopil. Je predsa rýchlejší 3x kliknúť na tlačidlo "Ďalej" a raz na "Spustiť", než vytvárať novú zložku -> napísať názov programu -> otvoriť zips a rozbaliť ho. Väčšina programov totiž v zipsu nemá zložku, ale rovno jej obsah, čiže zložka sa musí vytvoriť. Niektoré "zipsovacie" programy síce ponúka možnosť rozbaliť do zložky, ale keď zips otvárame napr. Zo správcu sťahovania Firefoxu, nevyvolajú pravý klik pre ropzbalení do zložky. Nehľadiac na to, že keď tam zložka už náhodou je, rovnako musím program znova presunúť. O dialógoch ak nemáme registrovaný Winrar radšej vôbec nehovorím :)

Program s inštaláciou je väčší a dlhšie sa sťahuje - Opäť nie je pravda, vďaka spomínanej vysokej kompresii veľkosť súboru nadobudne naozaj len o pár KB, čiže súbor sa môže sťahovať pomalšie len o zlomok sekundy, čoho si človek nikdy nemôže ani všimnúť.

Ukážkové skripty


Tu som pripravil niekoľko skriptov, ktoré najviac používam. Skripty sa píšu (pokiaľ nie je spomenuté inak) do osobitného bloku [Code], ktorý je nutné vytvoriť na konci inštalačného skriptu.

Nastavenie vlastného obrázku pri inštalácii:

Určite si prajete, aby sa pri inštalácii zobrazilo logo vašej aplikácie, ktoré môže vyzerať nasledovne:

Softvér

kód:

WizardImageFile=c:\vasobrazek.bmp

Skript vložte do bloku [Setup]
Veľkosť obrázka musí byť 164x314 px.
Je možné upraviť aj menšie obrázok vyššie a to príkazom WizardSmallIma­geFile. Jeho veľkosť musí byť 55x55 px.

Kontrola prítomnosti .NET frameworku:

Ak programujete pre .NET Framework (napr. V C #) a potrebujete zabezpečiť, aby mal používateľ pred spustením vašej aplikácie nainštalovaný .NET Framework V 2.0, môžete využiť nasledujúci skript, ktorý overí existenciu .Net a prípadne vyvolá výzvu na jeho stiahnutie:

[Code]
function InitializeSetup(): Boolean;
var
    ErrorCode: Integer;
    NetFrameWorkInstalled : Boolean;
    Result1 : Boolean;
begin
    NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramework\policy\v2.0');
    if NetFrameWorkInstalled =true then
    begin
        Result := true;
    end;

    if NetFrameWorkInstalled = false then
    begin
        NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramework\policy\v2.0');
        if NetFrameWorkInstalled =true then
        begin
            Result := true;
        end;

        if NetFrameWorkInstalled =false then
            begin
                //Result1 := (ExpandConstant('{cm:dotnetmissing}'), mbConfirmation, MB_YESNO) = idYes;
                Result1 := MsgBox('Tento program vyžaduje .NET Framework minimální verze 2.0, který nebyl na Vašem počítači nalezen, pravděpodobně kvůli neaktuálnímu systému. Přejete si ho nyní stáhnout?',
                        mbConfirmation, MB_YESNO) = idYes;
                if Result1 =false then
                begin
                    Result:=false;
                end
                else
                begin
                    Result:=false;
                    ShellExec('open',
                    'http://www.sdraco.cz/dotnet20.htm',
                    '','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
                end;
            end;
    end;
end;

Kontrola spusteného programu:

Pokiaľ si užívateľ inštaluje novú verziu vášho programu, nemala by byť stará verzia spustená. Keď sa jej súbory používajú, nemôžu byť prepísané za nové. Inno setup compiler disponuje kontrolou tzv. Mutex, ktorý sa používa na kontrolu bežiacich aplikácií. Mutex každej aplikácie má svoje unikátne meno "napr. Mutex_me_aplikace" a je veľmi ľahké ho do aplikácie vložiť. Do Inno Setup sa vkladá do bloku [Setup] a to nasledujúcim príkazom:

AppMutex=Mutex_me_aplikace,Global\Mutex_me_aplikace

Uloženie jazyka zvoleného pri inštalácii pre neskoršie využitie v našej aplikácii

Docela dlho mi trvalo, než som prišiel na spôsob, ako svoju aplikáciu pri prvom spustení prepnúť do toho jazyka, ktorý užívateľ zvolil pri jej inštalácii. Sprvu som si myslel, že bude jazyk zapísaný v registroch, údajne tam je, ale nepodarilo sa mi ho nájsť. Rozhodol som sa teda využiť súboru, do ktorého uložím obsah konštanty {language}, kde je uložený zvolený jazyk. Nižšie uvedený príkaz vytvorí súbor v adresári aplikácie a ak už existuje, jeho obsah prepíše. Mal by sa vykonať až po inštalácii. Ako na to je popísané v ďalšom tipe nižšie.

SaveStringToFile(ExpandConstant('{app}')+'\language.dat', ExpandConstant('{language}'), False);

****

Prevedenie skriptu pred inštaláciou a po inštalácii

Nasledujúci kód obsahuje dve procedúry, z ktorých jedna sa vykoná pred inštaláciou (kopírovaním súborov) a druhá tesne po nej. Na zistenie stavu inštalácie sa využíva udalosť CurStepChanged.

procedure DoPreInstall();
begin
  MsgBox('Před instalací.', mbInformation, MB_OK);
end;

procedure DoPostInstall();
begin
  MsgBox('Po instalaci.', mbInformation, MB_OK);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then begin
    DoPreInstall();
  end else if CurStep = ssPostInstall then begin
    DoPostInstall();
  end;
end;

Stiahnutie


Program Inno setup compiller nájdete na stiahnutie na adrese http://www.jrsoftware.org

 

Všetky články v sekcii
Softvér
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity