IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Tvoříme instalace k programům v Inno Setup Compiler

Pokud jste vytvořili nějaký program nebo hru a chcete ho publikovat na webu, určitě jste přemýšleli o tom, že k němu vytvoříte instalaci. K tvorbě instalací je mnoho různých programů - některé jsou zadarmo, některé placené, některé nefungují na Vistách a W7, některé obsahují reklamy. Jeden program ale výrazně vyčnívá z řady a to Inno setup compiler.

Inno setup compiler je volně šiřitelný a plně uzpůsobitelný program k tvorbě instalací pro systém Windows. Je extrémně jednoduchý na ovládání a obsahuje mnoho možností. Proto je to nejpoužívanější instalační program, který využívají jak volně šiřitelné, tak placené programy i hry (např. Skype).

V Innosetupu se programuje pomocí skriptu, který se také může automaticky vygenerovat jednoduchým průvodcem. Kromě všech základních operací jako vložení zástupce na plochu, nabídek start či rychlého spuštění obsahuje mnoho vychytávek.

V tuto chvíli mě napadá možnost vložení vlastních textů a obrázků do installeru, zajištění práv ve windows Vista a Windows 7, podpora více jazyků, kontrola běžícího programu pomocí mutexu (aby uživatel program nejdříve vypnul, když ho přeinstalovává novou verzí), zobrazení a potvrzení licenčních podmínek, podpora skinů, díky možnosti zvolení vysoké komprese má instalace velmi malou velikost (jen pár KB navíc). Pro pokročilejší uživatele není problém díky zabudovanému skriptovacímu jazyku podobnému Pascalu naprogramovat nejrůznější kontroly a funkce (například stahování potřebných balíčků nebo kontrolu přtomnosti .NET frameworku).

Skript Inno setupu vypadá následovně:

Nyní malé zamyšlení nad tím, proč k programu instalaci přidat...

 

5 důvodů, proč by měl program obsahovat instalaci


  • Jednoduchost a přehlednost. Průvodce instalací je plně přizpůsobitelný, jednoduchý a přehledný. Je navržený tak, aby seděl každému uživateli. Pohodně nainstaluje vaši aplikaci, zařadí ji do seznamu nainstalovaných aplikací, podle volby uživatele vytvoří ikonu na ploše, v nabídce start nebo v rychlém spuštění. Samozřejmě také obsahuje stejně rychlou odinstalaci.

  • Četnější používání - Díky tomu, že je program uveden v seznamu nainstalovaných aplikací, v nabídce start a případně i jako ikona na ploše, uživatel dotyčný program nejen nezapomene používat, ale také ho používá častěji. Nejhorší, co může být, je program bez instalace zahrabaný ve složce na ploše, pojmenované "Nová složka 5". Další výhodou je, že se váš program neobjeví někde ke stažení nějak osekaný v zipu, jak to mají portable verze zvykem. Každý si stáhne originální instalaci a to povětšinou z vašeho webu.

  • Dostupnost - Nepotřebujete žádný winzip ani winrar, nemusíte pro nic vytvářet složku, program je dostupný každému.

  • Zpětná vazba přes web - Po instalaci je u vaší aplikace v nabídce start odkaz na internetové stránky, velmi jednoduchá cesta pro spokojeného uživatele dostat se k vám pro další software či informace. Možná namítáte, že mohu dát adresu do nějakého about dialogu přímo v aplikaci. Jistě, že mohu, ale jak již jsem se zmínil - velmi mnoho lidí je zvyklých hledat link zde, protože většina softwaru ho tam prostě má.

  • Windows je na to navržený - Všichni, kteří odsuzujete instalace, si uvědomte, že Microsoft Windows je systém, navržený pro instalace. Takto se do něj prostě programy dostávají. Ten, kdo instalace nepoužívá, se ochuzuje o možnosti systému Windows, které pro nainstalované aplikace nabízí (mám na mysli nabídku start, nainstalované aplikace a podobně, divili byste se, kolik lidí toto používá).

Není divu, že každý komerční software má instalaci ;-) Instalace není většinou jen u méně oblíbených freewarových aplikací nebo u programů, kterým nezáleží na popularitě a stahovanosti.

 

Mýty o instalacích


Nechává to bordel v počítači, každá instalace mi počítač zpomalí - Innosetup je kvalitní program, který za sebou nezanechává žádný "bordel" v počítač, jak si mnozí anti-instalátoři myslí. Někdy se podívejte, co vám nechávají v registrech někteé programy bez instalace.

Instalace zdržují - Tento argument jsem nikdy nepochopil. Je přeci rychlejší 3x kliknout na tlačítko "Další" a jednou na "Spustit", než vytvářet novou složku -> napsat název programu -> otevřít zip a rozbalit ho. Většina programů totiž v zipu nemá složku, ale rovnou její obsah, čili složka se musí vytvořit. Některé "zipovací" programy sice nabízí možnost rozbalit do složky, ale když zip otevíráme např. ze správce stahování Firefoxu, nevyvoláme pravý klik pro ropzbalení do složky. Nehledě na to, že když tam složka již náhodou je, stejně musím program znovu přesunout. O dialozích pokud nemáme registrovaný Winrar raději vůbec nemluvím :)

Program s instalací je větší a déle se stahuje - Opět není pravda, díky zmiňované vysoké kompresi velikost souboru nabyde opravdu jen o pár KB, čili soubor se může stahovat pomaleji jen o zlomek vteřiny, čehož si člověk nikdy nemůže ani všimnout.

 

Ukázkové skripty


Zde jsem připravil několik skriptů, které nejvíce používám. Skripty se píší (pokud není zmíněno jinak) do zvláštního bloku [Code], který je nutno vytvořit na konci instalačního skriptu.

Nastavení vlastního obrázku při instalaci:

Určitě si přejete, aby se při instalaci zobrazilo logo vaší aplikace, které může vypadat následovně:

Kód:

WizardImageFile=c:\vasobrazek.bmp

Skript vložte do bloku [Setup]
Velikost obrázku musí být 164x314 px.
Je možné upravit i menší obrázek výše a to příkazem WizardSmallIma­geFile. Jeho velikost musí být 55x55 px.

 

Kontrola přítomnosti .NET frameworku:

Pokud programujete pro .NET Framework (např. v C#) a potřebujete zajistit, aby měl uživatel před spuštěním vaší aplikace nainstalovaný .NET Framework V 2.0, můžete využít následující skript, který ověří existenci .NETu a případně vyvolá výzvu k jeho stažení:

[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 spuštěného programu:

Pokud si uživatel instaluje novou verzi vašeho programu, neměla by být stará verze spuštěna. Když se její soubory používají, nemohou být přepsány za nové. Inno setup compiler disponuje kontrolou tzv. Mutexu, který se používá ke kontrole běžících aplikací. Mutex každé aplikace má své unikátní jméno "např. Mutex_me_aplikace" a je velmi snadné ho do aplikace vložit. Do innosetupu se vkládá do bloku [Setup] a to následujícím příkazem:

AppMutex=Mutex_me_aplikace,Global\Mutex_me_aplikace

 

Uložení jazyka zvoleného při instalaci pro pozdější využití v naší aplikaci

Docela dlouho mi trvalo, než jsem přišel na způsob, jak svou aplikaci při prvním spuštění přepnout do toho jazyka, který uživatel zvolil při její instalaci. Zprvu jsem si myslel, že bude jazyk zapsán v registrech, údajně tam je, ale nepodařilo se mi ho najít. Rozhodl jsem se tedy využít souboru, do kterého uložím obsah konstanty {language}, kde je uložený zvolený jazyk. Níže uvedený příkaz vytvoří soubor v adresáři aplikace a pokud již existuje, jeho obsah přepíše. Měl by se provést až po instalaci. Jak na to je popsáno v dalším tipu níže.

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


Provedení skriptu před instalací a po instalaci

Následující kód obsahuje dvě procedury, z nichž jedna se provede před instalací (kopírováním souborů) a druhá těsně po ní. Ke zjištění stavu instalace se využívá událost 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;

Stažení


Program Inno setup compiller naleznete ke stažení na adrese http://www.jrsoftware.org


 

Všechny články v sekci
Tipy a triky na další software
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
7 hlasů
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 se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity