Po pořádném záhulu z minulého dílu nyní trochu zvolníme a ukážeme si na reálném příkladě, jak by se vytvořil instalační archiv pro knihovnu v jazyce Java, kterou chceme pomocí WarpINu distribuovat. Tímto dílem také náš článek zakončíme.

Pouze bych znovu připomněl, že všechny podpůrné materiály najdete buď na CD z konference nebo v sekci Download serveru www.os2.cz, případně přímo na www.j-sim.zcu.cz.

Voilà:


Příklad archivu: Distribuce simulační knihovny J-Sim

Nyní už zbývá pouze ukázat si reálný příklad vytvoření instalačního skriptu a samotného archivu. V našem příkladě použijeme knihovnu J-Sim, psanou v Javě. Jelikož se nejedná o OS/2 aplikaci, nebudeme zapisovat žádná data do profilů. Budeme ovšem chtít vytvožit složku na pracovní ploše a do ní umístit pár objektů, například odkaz na HTML dokumentaci. Také musíme do proměnné CLASSPATH přidat adresář, kde jsou umístěné třídy knihovny.

Následující obrázek popisuje strukturu knihovny.

Struktura knihovny J-Sim

Struktura knihovny J-Sim verze 0.1.2. V kořenovém adresáři je pouze soubor Licence.TXT.

Je velmi vhodné připravit si všechny soubory přesně do těch adresářů, v jakých budou na cílovém systému po nainstalování. Také je vhodné dodržet pravidlo, že jednomu adresáři odpovídá jeden balík. Jednak je to přehlednější, jednak do jednoho balíku nelze umístit soubory z různých podadresářů, pokud to není balík jediný. Naopak to samozřejmě jde, soubory z jednoho podadresáře mohou být rozděleny do více balíků.

Popis balíků

Budeme mít tedy tyto balíky:

  1. Základní balík, který bude obsahovat pouze licenci. Při jeho instalaci se vytvoří složka na pracovní ploše a do ní se umístí odkaz na textový soubor s licencí. Zároveň bude tento balík udávat instalační adresář i ostatním balíkům, protože bude mít u sebe přepínač BASE. Balík bude povinně instalovatelný, jednak kvůli licenci, jednak také kvůli složce na ploše, kam mohou ostatní balíky přidávat objekty. Samozřejmě je také dobré označit základní balík jako povinně instalovatelný, a to prostě proto, že je základní.
    Kód balíku v hlavičce našeho skriptu bude vypadat takto:
    <PCK
    INDEX=1
    PACKAGEID="University of West Bohemia\J-Sim\Base\0\1\2"
    TARGET="$(WARPIN_DEFAULTAPPSPATH)\JSim-0.1.2"
    TITLE="Base files"
    BASE
    SELECT
    NODESELECT
    CREATEOBJECT="WPFolder|J-Sim 0.1.2|<WP_DESKTOP>|
    OBJECTID=<JSIM_FOLDER>;"
    CREATEOBJECT="WPProgram|Licence|<JSIM_FOLDER>|
    EXENAME=e.exe;PARAMETERS=$(1)\Licence.TXT;
    OBJECTID=<JSIM_LICENCE>;"
    >
    This package contains J-Sim base files.
    You MUST install this.
    </PCK>

    Všimněte si použití makra u druhého atributu CREATEOBJECT.

  2. Druhý balík bude obsahovat zkompilované třídy a bude implicitně instalován do podadresáře CLASSPATH. Počáteční část cesty souhlasí se základním balíkem, může se tedy případně automaticky měnit podle něj. Protože třídy jsou pro knihovnu nutné (knihovna vlastně není nic jiného než tyto třídy), označíme balík jako povinně instalovaný. Navíc v souboru CONFIG.SYS přidáme k proměnné CLASSPATH adresář, do kterého se třídy nainstalují. To může uživatel samozřejmě odmítnout a zařídit si nastavení po svém.
    Kód balíku následuje:
    <PCK
    INDEX=2
    PACKAGEID="University of West Bohemia\J-Sim\Classes\0\1\2"
    TARGET="$(WARPIN_DEFAULTAPPSPATH)\JSim-0.1.2\CLASSPATH"
    TITLE="Compiled classes (files *.class)"
    SELECT
    NODESELECT
    CONFIGSYS="SET CLASSPATH=$(2) | ADDRIGHT"
    >
    This package contains J-Sim compiled classes:
    Java packages cz.zcu.fav.kiv.jsim and
    cz.zcu.fav.kiv.jsim.gui.
    You MUST install this.
    </PCK>
  3. Třetí balík obsahuje zdrojové kódy knihovny. Již není povinný a není třeba pro něj nic nastavovat. Nainstaluje se do podadresáře Sources a počáteční část cesty se opět bude měnit se změnou adresáře hlavního balíku.
    <PCK
    INDEX=3
    PACKAGEID="University of West Bohemia\J-Sim\Sources\0\1\2"
    TARGET="$(WARPIN_DEFAULTAPPSPATH)\JSim-0.1.2\Sources"
    TITLE="Source code (files *.java)"
    SELECT
    >
    This package contains J-Sim source files:
    Java packages cz.zcu.fav.kiv.jsim and
    cz.zcu.fav.kiv.jsim.gui.
    </PCK>
  4. Čtvrtý balík obsahuje API dokumentaci ve formátu HTML. Opět není povinný a jeho cesta bude záviset na hlavním balíku. Povšimněte si vytvoření objektu HTML dokumentace ve složce, která byla vytvořena při instalaci hlavního balíku. Ve skutečnosti je vytvořený objekt typu program (startuje Netscape Navigator), který otevře soubor index.html v kořenovém adresáři dokumentace. Opět je použito makro pro určení tohoto adresáře. Lepším řešením by možná bylo použití stínového objektu souboru index.html, pak by se dokumentace otevírala programem, který je asociován s HTML soubory (například Mozilla).
    <PCK
    INDEX=4
    PACKAGEID="University of West Bohemia\J-Sim\API\0\1\2"
    TARGET="$(WARPIN_DEFAULTAPPSPATH)\JSim-0.1.2\API"
    TITLE="API documentation"
    SELECT
    CREATEOBJECT="WPProgram|J-Sim API|<JSIM_FOLDER>|
    EXENAME=netscape.exe;PARAMETERS=$(4)\index.html;OBJECTID=<JSIM_API>;"
    >
    This package contains J-Sim API documentation
    in HTML format, generated by javadoc.
    You might need this if you program applications
    for J-Sim and need a handbook for quick reference.
    </PCK>
  5. Pátý balík obsahuje uživatelskou dokumentaci a má ty samé vlastnosti jako předchozí balík. Opět instaluje odkaz na dokumentaci ve formátu HTML otevíranou Netscape Navigátorem, k tomu navíc ale vytváří stínový objekt té samé dokumentace ve formátu PostScript.
    <PCK
    INDEX=5
    PACKAGEID="University of West Bohemia\J-Sim\Documentation\0\1\2"
    TARGET="$(WARPIN_DEFAULTAPPSPATH)\JSim-0.1.2\Documentation"
    TITLE="Documentation"
    SELECT
    CREATEOBJECT="WPProgram|HTML Documentation|<JSIM_FOLDER>|
    EXENAME=netscape.exe;PARAMETERS=$(5)\HTML\index.html;OBJECTID=<JSIM_DOC_HTML>;"
    CREATEOBJECT="WPShadow|PostScript Documentation|<JSIM_FOLDER>|
    SHADOWID=$(5)\PostScript\JSimDocEnglish.PS;OBJECTID=<JSIM_DOC_PS>;"
    >
    This package contains J-Sim documentation
    in PostScript and HTML formats.
    You might need this if you want to learn
    how J-Sim works internally or
    if you want to get familiar with principles
    of discrete simulation.
    </PCK>
  6. Konečně šestý -- poslední -- balík obsahuje ukázkové příklady v adresáři Examples. Balík má opět ty samé vlastnosti jako předchozí. Do složky na pracovní ploše přidává stínový objekt adresáře, ve kterém jsou příklady umístěny. Stínové objekty tak nemusejí být omezeny pouze na soubory.
    <PCK
    INDEX=6
    PACKAGEID="University of West Bohemia\J-Sim\Examples\0\1\2"
    TARGET="$(WARPIN_DEFAULTAPPSPATH)\JSim-0.1.2\Examples"
    TITLE="Examples"
    SELECT
    CREATEOBJECT="WPShadow|Examples|<JSIM_FOLDER>|
    SHADOWID=$(6);OBJECTID=<JSIM_EXAMPLES>;"
    >
    This package contains examples on using J-Sim.
    You might need this if you want
    to learn quickly how to use the library.
    </PCK>

Popis obrazovek

Tak, a první část skriptu máme hotovou. Nyní již zbývá pouze popsat uživatelské obrazovky v bloku <BODY> ... </BODY>.

Jdeme na to!

  1. První obrazovka je úvodní textová obrazovka, na které uživateli poděkujeme, že si chce nainstalovat náš produkt. Po stisku tlačítka Next se přesuneme na druhou obrazovku.
    <PAGE INDEX=1 TYPE=TEXT>
    <NEXTBUTTON TARGET=2>~Next</NEXTBUTTON>
    <TEXT>
    Welcome!

    Thank you for downloading and installing J-Sim!

    J-Sim is ... (a tak dále)

    J-Sim is provided ...

    Select "Next" to continue.
    Select "Cancel" to abort installation.
    </TEXT>
    </PAGE>
  2. Druhá obrazovka není nic převratného, opět je textového typu a trochu více představuje daný produkt. Pokračuje se třetí obrazovkou (kdo by to tušil, že).
    <PAGE INDEX=2 TYPE=TEXT>
    <NEXTBUTTON TARGET=3>~Next</NEXTBUTTON>
    <TEXT>
    If you have any questions ...

    You can let the installation program ...

    Select "Next" to continue.
    Select "Cancel" to abort installation.
    </TEXT>
    </PAGE>
  3. Třetí obrazovka je už jiné kafe. Je typu README, obsahuje tedy posuvnou oblast s delším textem. V tomto případě je oblast typu HTML, můžeme tedy použít formátování pomocí omezené podmnožiny HTML značek. A samozřejmě stále můžeme zobrazit čistý text nad touto oblastí, který je uzavřen v bloku <TEXT> ... </TEXT>.
    <PAGE INDEX=3 TYPE=README>
    <NEXTBUTTON TARGET=4>~Next</NEXTBUTTON>
    <TEXT>
    Please read carefully the licence displayed below.
    If you accept ...

    Select "Next" to continue.
    Select "Cancel" to abort installation.
    </TEXT>

    <README FORMAT=HTML>
    <B><U>Licence for J-Sim version 0.1.2</U></B>
    <P>
    <B>COPYRIGHT</B>
    <P>
    J-Sim (source code, compiled classes, ...) is
    <P>
    <B>Copyright (c) 2000 - 2002</B>,<BR>
    <B>University of West Bohemia</B>,<BR>

    ...

    </README>
    </PAGE>
  4. Konečně na čtvrté obrazovce pustíme uživatele k tomu, aby si vybral balíky a zvolil cesty, kam se budou instalovat. Použijeme tedy obrazovku typu CONTAINER. Opět mu pomůže lehkou nápovědou v podobě textu a poté pokračujeme na pátou obrazovku.
    <PAGE INDEX=4 TYPE=CONTAINER>
    <NEXTBUTTON TARGET=5>~Next</NEXTBUTTON>
    <TEXT>
    On this page, you may deselect a package if it is already
    installed or change a package's target path.
    </TEXT>
    </PAGE>
  5. Zobrazíme ještě jednu textovou obrazovku, abychom uživatele informovali, že když stiskne tlačítko Install, už to opravdu začne. Povšimněte si, že u značky NEXTBUTTON je parametr TARGET roven nule. To znamená, že WarpIN začne s instalací. Jaksi jsme ovšem zapomněli na obrazovku typu CONFIGURE, kde uživatel může povolit nebo zakázat změny v CONFIG.SYSu. V příští verzi tam určitě bude :-)
    <PAGE INDEX=5 TYPE=TEXT>
    <NEXTBUTTON TARGET=0>I~nstall</NEXTBUTTON>
    <TEXT>
    Press "Install" to begin installing J-Sim 0.1.2
    on your computer.
    </TEXT>
    </PAGE>

Použití programu WIC.EXE

Nyní již máme i kompletní instalační skript. Zbývá pouze vytvořit distribuční archiv. To se provede následujícím ďábelským příkazem (pozor, vše je ve skutečnosti na jedné řádce):

D:\SW\WarpIN\wic.exe D:\Temp\JSim-0_1_2.WPI
-a
1 -cJSim-0.1.2 Licence.TXT
2 -cJSim-0.1.2\CLASSPATH -r *
3 -cJSim-0.1.2\Sources -r *
4 -cJSim-0.1.2\API -r *
5 -cJSim-0.1.2\Documentation -r *
6 -cJSim-0.1.2\Examples -r *
-s JSim.WIS

Spustíme program WIC.EXE a řekneme mu, že chceme pracovat s archivem JSim-0_1_2.WPI v adresáři D:\Temp. Archiv samozřejmě v tomto čase ještě neexistuje. Poté parametrem -a řekneme, že do archivu chceme něco přidávat.

Vytvoříme první balík a přepínačem -c se zanoříme do adresáře JSim-0.1.2. Tam vezmeme soubor Licence.TXT a přidáme ho do archivu. Pak vytvoříme druhý balík, zanoříme se do adresáře JSim-0.1.2\CLASSPATH a z něj rekurzivně přidáme všechny soubory. Postup u dalších balíků je už úplně stejný.

Nezapomeňte si ověřit, že žádný z adresářů nemá nastaven archivní atribut!

Nakonec přepínačem -s přidáme do archivu instalační skript JSim.WIS a jsme hotovi! Nyní již zbývá pouze umístit archiv JSim-0_1_2.WPI na WWW nebo na FTP, aby si ho uživatelé mohli stáhnout.

I zde je třeba opatrnosti. Z FTP je nutno archivy stahovat výhradně v binárním módu. WWW server lze nakonfigurovat tak, aby binární mód přenosu vnutil. Například u serveru Apache lze přidat do konfiguračního souboru nebo do lokálního konfiguračního souboru .htaccess následující řádku:

AddType application/x-warpin .wpi

Závěr

WarpIN je bezesporu jeden z nejlepších instalátorů, jaký kdy pro OS/2 existoval. Je uživatelsky velmi příjemný, má inteligentně řešené členění na balíky a závislosti mezi nimi, umožňuje plně konfigurovat systém a v případě potřeby tuto konfiguraci obnovit do stavu před instalací. Má též výbornou podporu pro různé kódové stránky včetně Unikódu. Vytváření archivů je přímočaré a vcelku jednoduché, zaškolený začátečník (např. někdo, kdo si právě přečetl tento článek) by neměl strávit vytvářením archivu více než hodinu.

WarpIN je navíc open source projekt, každý má tedy zdarma přístup ke zdrojovým textům a může je volně upravovat.

Úplným závěrem bych rád popřál WarpINu i všem uživatelům OS/2, aby neměli nouzi o aplikace, které budou tímto skvělým nástrojem instalovány.

Odkazy

  1. WarpIN Team: WarpIN User's Guide. Soubor wpi_user.inf.
  2. WarpIN Team: WarpIN Programmer's Guide and Reference. Soubor wpi_prog.inf.
  3. OS/2 Netlabs: WarpIN Home Page.
  4. Ulrich Möller: XWorkplace Home Page.