Umíme to s Delphi: 85. díl – tvorba instalačních balíků prakticky

Dnešní díl navazuje na článek z minulého týdne, v němž jsme si vysvětlili problematiku tvorby instalačních balíků a nainstalovali jeden z možných nástrojů – InstallShield Express. Dnes se společně naučíme používat tento instalátor k vytvoření instalačního balíku z aplikace napsané v Delphi.
Před týdnem jsme se úspěšně přenesli přes mnohé teoretické nástrahy tvorby instalačních balíků a nainstalovali jsme si nástroj, který použijeme: InstalsShield Express (i když je samozřejmé, že volba tohoto nástroje není rozhodně podmínkou). Skončili jsme založením nového projektu (nového instalačního balíku). Dnes bezprostředně navážeme: začneme popisovat jednotlivé kroky, které jsou více nebo méně nutné k vytvoření komplexního a funkčního instalačního balíku.

Prohlédneme-li si dobře spuštěný InstallShield Express, spatříme v jeho levé části posloupnost činností, které po nás pravděpodobně budou vyžadovány, viz obrázek:

Jednotlivé kroky budou vysvětleny v následujících kapitolách.

Organize Your Setup

V etapě Organize Your Setup se zadávají základní údaje potřebné pro instalační proces, jako informace o produktu (verzích, autorovi, podpoře apod.) a informace o stavebních blocích používaných pro jednotlivé druhy instalace (Minimální, Typická, Uživatelská).

Organize Your Setup: General Information

V tomto kroku je možné nastavit všechny požadované obecné informace o projektu, jeho názvu, autorovi, klíčových slovech, verzi, telefonních číslech apod. Zde je též možné zadat umístění souboru ReadMe apod. Některé informace, které zadáme v tomto kroku, se zobrazí v dialogu Support Information Dialog – Informace o odborné pomoci – v panelu Přidat nebo odebrat programy ve Windows (jisté je to u Win2000:)). Jiné (např. jméno autora) slouží pouze pro interní účely a nikdy nebudou zobrazeny koncovým uživatelům programu.

Organize Your Setup: Features

Tento krok slouží k nastavení různých vlastností instalace. Jistě jste už u mnoha instalací patřili možnost „automatická instalace“ a „uživatelská instalace“, při níž je možné vybírat jednotlivé položky, které se mají, resp. nemají instalovat. Položku Features tedy použijeme v případě, že takovou možnost hodláme využít i pro svou aplikaci.

Implicitně je přítomna pouze jedna složka – Always Install. TA nemůže být odebrána nebo přejmenována, ani do ní nemohou být přidány žádné podvlastnosti. Tato položka slouží jako zajištění alespoň jedné (funkční) konfigurace, která povede k úspěšné instalaci a používání aplikace.

Klíčové pojmy v tomto kroku jsou vlastnosti (features) a podvlastnosti (subfeatures). Vlastnosti jsou stavební bloky aplikace (z uživatelského úhlu pohledu). Obsahují tedy určitou (uzavřenou, ohraničenou) množinu funkčnosti. Jako příklad vlastnosti si lze představit třeba nápovědu, kterou uživatel buď chce nebo nechce instalovat. Plyne z toho, že celá aplikace může být „rozdělena“ do jakýchsi bloků (vlastností), z nichž si uživatel při instalace zvolí ty, které hodlá využívat. Pokud chcete přidat do instalačního balíku takovouto novou vlastnost, klepněte pravým tlačítkem na slovo „Features“, které je umístěné v prostředním okně na obrazovce, a zvolte New Feature. Vlastnost bude přidána, viz obrázek:

„Podvlastnosti“ následně slouží jako členění vlastností. Uživatel si tak může dále volit podrobnější funkční bloky, které chce instalovat. Přidání nové podvlastnosti se provádí analogicky jako u vlastností – klepněte pravým tlačítkem na vlastnost (např. na nově přidanou New Feature 1) a zvolte New.

Organize Your Setup: Setup Types

Zde se nastavují druhy instalace, které chcete uživatelům zpřístupnit. K dispozici jsou standardně známé tři druhy instalace:

  • typická (typical)
  • minimální (minimal)
  • uživatelská (custom)

Pro každou z těchto druhů instalace je možné nastavit vlastnosti, které se při dané instalaci budou instalovat, a tak např. pro minimální instalaci zvolíme jen „Always Install“ (této vlastnosti se nelze zbavit) a pro další instalace vybereme i různé další vlastnosti.

Organize Setup: Upgrade Paths

Aktualizace cest je vhodná např. v případě, že jsme před časem uvolnili předchozí verzi své aplikace, nyní dodáváme novou verzi a chceme zajistit přechod na novou verzi (bez nutnosti odebrat starou verzi a nainstalovat novou). Kód produktu (Product Code) a číslo verze – údaje zadávané v kroku Organize Setup: General Information – se musí v obou verzích lišit.

O aktualizaci verzí se ovšem nemusíme příliš zajímat, neboť vlastnosti související s touto činností jsou k dispozici pouze v plné verzi programu InstallShield Express (na CD je pouze Borland Limited Edition, která je poněkud „ořezaná“).

Tímto krokem také končí první etapa tvorby instalačního balíku – etapa Organize Setup.

Specify Application Data

Etapa Specify Application Data slouží především k zadání dat (souborů, modulů) a závislostí, z nichž má být instalační balíček vytvořen.

Specify Application Data: Files

Tento krok je základním místem, kde se do instalačního balíčku přidávají data. Prostředí v tomto kroku je velmi podobné Průzkumníku Windows a umožňuje operaci drag-and-drop (jednoduché přetahování potřebných souborů do instalačního balíku). Je samozřejmě možné zvolit, které vlastnosti mají být asociovány s kterými soubory.

Celé prostředí je rozděleno do dvou částí: zdrojový počítač (tj. náš počítač, na němž vytváříme instalační balíček a na němž nám běží požadovaná aplikace) a cílový počítač (fiktivní zástupce počítačů, na nichž se bude později aplikace instalovat).

V poli Zdrojový počítač tedy vybereme požadované soubory a přesuneme je do požadovaného umístění na cílovém počítači. Klepnete-li pravým tlačítkem na Destination Computer a vyberete-li Show Predefined Folder, zobrazí se seznam předdefinovaných adresářů (jejichž existence se předpokládá na cílovém počítači), např. Program Files Folder. Nejčastěji budeme chtít instalovat aplikaci asi právě do Program Files/Naše složka, takže si zobrazíme tuto složku (Program Files Folder), klepneme na ni pravým tlačítkem, zvolíme Add, vytvoříme cílovou složku (např. Naše aplikace) a do této fiktivní složky přetáhneme z horního okna všechny požadované soubory (na následujícím obrázku je přetažen pouze spustitelný soubor a soubor ctimne.txt):

Všimněte si také prosím, že v horní části obrazovky (viz též předchozí obrázek) je seznam vlastností zadaných v kroku Organize Your Setup: Features. Pro každou vlastnost je samozřejmě možné vybrat jiné soubory, které s danou vlastností mají být instalovány.

Specify Application Data: Files and Features

V tomto kroku je možné ještě jednou provést úpravy souborů a vlastností: pro každou vlastnost lze zvolit související soubory. Chcete-li zkopírovat soubor z jedné vlastnosti do jiné, použijte mechanismus schránky: klepněte na soubor pravým tlačítkem, zvolte Copy, pak se přepněte do požadované cílové vlastnosti, klepněte opět pravým tlačítkem a zvolte Paste.

Dodejme, že pokud jste nastavení všech souborů a vlastností provedli v předchozím kroku, můžete tento krok směle přeskočit.

Specify Application Data: Objects/Merge Modules

Tento krok je zcela klíčový v případě, že potřebujeme, aby naše aplikace disponovala jakoukoliv „nadstandardní“ funkčností, přičemž použití databází (včetně BDE) je samozřejmě typickým příkladem.

Protože celý proces je trochu delší, budeme dnes předpokládat, že vytváříme instalátor pro aplikaci, která nevyžaduje žádné nadstandardní zacházení. O tom, jak zajistit funkčnost instalačních balíků pro databázové aplikace, si povíme za týden.

Nebudeme tedy vybírat žádný modul a přejdeme rovnou k dalšímu kroku.

Specify Application Data: Dependencies

V tomto kroku dokáže InstallShield Express nalézt dva druhy závislostí:

  • statické závislosti – InstallShield Express projde všechny soubory *.exe, *.sys, *.dll, *.ocx, *.scr, *.com a další, vyhledá případné závislosti a přidá je do projektu.
  • dynamické závislosti – InstallShield si v podstatě „spustí“ aplikaci a monitoruje, které DLL a OCX soubory aplikace používá; pak je automaticky přidá do projektu.

Tento popis vypadá až příliš skvěle na to, aby mohl bez problémů fungovat – a přesně taková je realita: krok Dependencies je opět k dispozici je v plné verzi produktu, takže se s ním můžeme rozloučit.

Tímto krokem jsme zároveň ukončili etapu Specify Application Data a přesouváme se do etapy další – konfigurace cílového systému.

Configure the Target System

Je zřejmé, že každá nově instalovaná aplikace trochu ovlivní systém, na němž je instalována. V nejjednodušším případě na něj pouze zkopíruje nějaké soubory, v obtížnějších situacích je výsledkem vytváření zástupců a složek, změny v registrech, změny v souborech *.ini apod.

Configure the Target System: Shortcuts/Folders

V tomto kroku říkáme, jací zástupci se mají vytvořit na cílovém počítači při instalaci aplikace a jaké se mají vytvořit složky. Na obrazovce vidíme „zajímavé“ složky, např. Taskar s nabídkou Start a položkami Programy a Po spuštění, stejně jako zástupce pro plochu. Chceme-li, aby aplikace při své instalaci v kterémkoliv umístění vytvořila novou složku nebo nového zástupce, klepneme na příslušné umístění pravým tlačítkem a zvolíme New Shortcut nebo New Folder.

V našem případě dejme tomu, že chceme vytvořit zástupce na ploše a složku se zástupcem v nabídce Start (to je asi nejčastější varianta). Při vytváření zástupců nezapomeňte v pravé části obrazovky zadat jejich cíl – jednoduše si rozbalte seznam možných umístění v poli Target; na konci tohoto seznamu naleznete soubory, které jste přidali do projektu v předchozí etapě, viz obrázek:

Configure the Target System: Registry

V tomto kroku je možné zvolit, které údaje se případně mají uchovávat v registrech na cílovém počítači. Nejprve je opět nutné vybrat vlastnost, které se celá operace týká. Změny v registrech, které náleží např. do vlastnosti Feature 1, nebudou provedeny v případě, že uživatel při instalaci vlastnost Feature 1 nebude chtít instalovat.

Nejjednodušší způsob, jak stanovit požadované změny v registrech na cílovém počítači, je přetáhnout odpovídající klíče z registrů na zdrojovém počítači. Pokud tedy máme aplikaci, která ovlivňuje klíč Key1 v HKEY_CURRENT_USER, najdeme požadovaný klíč na zdrojovém počítači a přetáhneme jej do téhož umístění v cílovém počítači.

Instalační program se poté při instalaci sám postará o to, aby požadované a potřebné změny v registrech byly provedeny. Pokud naše aplikace při svém běhu něco zapisuje do registrů, bude tedy fungovat jak na našem počítači (kde jsme příslušné klíče sami vytvořili), tak i na cílových počítačích (kde příslušné záznamy vytvoří instalační program).

Naše aplikace žádné změny v registrech neprovádí, proto tento krok opět přeskočíme.

Configure the Target System: ODBC Resources

Tento krok využijeme v případě, že naše aplikace pracuje s datovými zdroji ODBC. Pokud např. máme databázovou aplikaci, která využívá ODBC datový zdroj Oracle ODBC Driver, je nutné zaškrtnou zatrhávací pole vedle tohoto datového zdroje v zobrazeném seznamu datových zdrojů; datový zdroj pak bude zahrnut do instalace.

Po zatržení každého požadovaného datového zdroje je nutné v pravé části obrazovky označit vlastnosti (Features), pro které chceme příslušný ODBC zdroj zahrnout do instalace. Kromě toho je samozřejmě možné ve spodní části obrazovky modifikovat vlastnosti daného datového zdroje ODBC.

Raději opět zdůrazním, že pokud do instalace zahrneme datový zdroj ODBC Oracle, neznamená to, že by na cílovém počítači nemusel být instalován RDBMS Oracle. Databázový server musí být samozřejmě na cílovém počítači (nebo jinde) instalován: ODBC poskytne pouze přístup k datům tohoto serveru, ale v žádném případě nemůže nahradit jeho funkci.

Přidání ODBC datového zdroje do instalace nám ale samozřejmě usnadní práci s konfigurací aplikace na cílovém počítači. Stačí zajistit přístup k serveru Oracle a datový zdroj bude nainstalován současně s instalací aplikace – tedy automaticky.

V našem případě ovšem instalujeme pouze jednoduchou aplikaci, která žádný ODBC zdroj nevyžaduje – krok ODBC Resources můžeme přeskočit.

Na závěr

Dnešní díl seriálu byl zaměřen na první část dovedností, které je nutné mít za účelem vytvoření instalačního balíku. Prošli jsme si společně kroky, které se při tvorbě těchto balíků procházejí.

V příštím dílu si konečně předvedeme, jakým způsobem jsou podporovány databázové aplikace, především technologie jako BDE a další.

Váš názor Další článek: Miniaturní pevné disky – největší trend příštích let

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,