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

Software 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


 

  Aktivity (1)

Článek pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Jak se ti líbí článek?
Celkem (5 hlasů) :
4.84.84.84.84.8


 


Miniatura
Všechny články v sekci
Software

 

 

Komentáře
Zobrazit starší komentáře (5)

Avatar
...
Redaktor
Avatar
...:

A co mam robit ked chcem uninstall ?

Odpovědět 14.6.2013 15:53
Nehovor čo vieš, ale snaž sa vedieť, čo hovoríš...
Avatar
WOťas
Člen
Avatar
WOťas:

Super tohle sem hledal :)

 
Odpovědět 11.8.2013 10:37
Avatar
Tol
Neregistrovaný
Avatar
Tol:

Supr clanek, Inno Setup je opravdu vynikajici. Ja bych jeste upozornil na dalsi plug-in pro Inno Setup: Visual & Installer (www.visual-installer.com), ktery umozni pracovat s Inno Setupem primo z Visual Studia a umozni vytvaret pekne skinovane instalatory.

 
Odpovědět 15.8.2013 8:00
Avatar
sisolpes
Člen
Avatar
Odpovídá na ...
sisolpes:

Můžeš program odinstalovat třeba v ovládacích panelech -> Přidat nebo odebrat programy :-).

Editováno 6.11.2013 20:48
Odpovědět 6.11.2013 20:48
Alt + 2
Avatar
joci
Člen
Avatar
joci:

Je k tomu skriptovaciemu jazyku aj nejaky manuál, resp. referenčná príručka? Dá sa overiť či je na PC nainštalovaný JVM(Java)a prip. ponúknuť stiahnutie, tak ako to tu uvádzaš pri .NET? :)

Odpovědět 30.7.2014 20:23
Svet patrí tím, ktorí sa neposerú.
Avatar
x10102.ot
Člen
Avatar
x10102.ot:

Já mám stále radši programy bez instalace. Když spouštíš instalátor tak nikdy nevíš, co se v tom skrývá,
když máš jen zazipované soubory, tak si je můžeš všechny prohlédnout, než cokoliv spustíš.

 
Odpovědět 24.10.2015 8:23
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na x10102.ot
Milan Křepelka:

Ten tvůj argument nedává elementární logiku. Bojíš se toho, že by v tom instalátoru mohlo něco být. Ale program pohozený v zipu bys klidně spustil. To je fakt hodně úsměvný.

 
Odpovědět  +1 24.10.2015 13:41
Avatar
Odpovídá na x10102.ot
Michal Štěpánek:

A k čemu ti je, že si ty soubory prohlídneš? Podle názvu poznáš, co v nich je?

Když spouštíš instalátor tak nikdy nevíš, co se v tom skrývá,...

Když pustíš rozzipovaný *.exe, tak víš, co se v něm skrývá? Hmmm, zřejmě slušnej oddíl...

Odpovědět 24.10.2015 21:13
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Michal Štěpánek
Martin Dráb:

Pokud by se jednalo o instalátor ovladačů, tak by to dávalo smysl. Tam člověk moc .exe nepotká. Je samozřejmě otázka, jestli se ti pak podaří ty ovladače nainstalovat ručně (často ale jo).

Ale uznávám, že je to dost specifický případ.

Odpovědět 24.10.2015 21:37
2 + 2 = 5 for extremely large values of 2
Avatar
50P
Člen
Avatar
50P:

Inno setup používám a jsem s ním spokojen. Umí toho fakt spoustu. Jsou na netu dohledatelné návody, např.: jak udělat script pro zjišťování nové verze aplikace ap.?

 
Odpovědět 14. srpna 17:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 15. Zobrazit vše