|
In diesem Tutorial wollen wir ein Installations-Archiv für eine einfache Java Applikation bauen. Unsere Applikation soll aus folgenden Teilen bestehen
InhaltInhalt1. Schritt- Vorbereiten der Applikation 2. Schritt - Definieren der Properties für den Installer Pakete Java Archiv Programm Dateien Property Templates Dateilisten 3. Schritt - Erzeugen des Archivs 1. Schritt- Vorbereiten der ApplikationDer Installer installiert die Dateien der Applikation an der 'richtigen' Stelle im Dateisystem. Was hier 'richtig' ist, hängt ab vom Betriebssystem, den Wünschen des Benutzers und davon ob der Benutzer Administrator ist oder nicht.Es ist daher keine gute Idee, feste Pfade in die Applikation einzubauen. Am einfachsten löst man so ein Problem, indem man diese Pfade in eine Property-Datei ablegt - bleibt noch das Problem wo denn nun diese Property-Datei abgelegt wird. LiftOff sorgt dafür, daß die Applikation mit einem System-Property 'datadir' gestartet wird, das den Pfad zum Daten-Verzeichnis enthält. Um eine Property Datei zu laden, kann man zum Beispiel folgendes Programmstückchen verwenden
2. Schritt - Definieren der Properties für den InstallerAls nächstes müssen wir festlegen, was in unserem Archiv vorhanden sein soll und welche Voraussetzungen ein Zielsystem erfüllen muß.
Diese Angaben werden in einer Property-Datei gespeichert, die später auch auch im
Distributions-Archiv enthalten sein wird. Am einfachsten ist es, diese Datei mit dem
Als erstes machen wir ein paar Angaben zu unserer Applikation. Die Angaben in den Feldern Author, Description und Version werden später auf der ersten Karte des Installers angezeigt. Das Feld Java version required wird bei der Installation überprüft und nur wenn mindestens diese Version vorhanden ist, kann die Applikation installiert werden.
Das default prefix wird zum Konstruieren von Pfadnamen verwendet. Wird das Programm von
einem Administrator auf einem UNIX-System installiert, ist z.B. die Voreinstellung für
den Pfad für die Dokumentation Die Felder License text und Readme text geben Dateien im Archiv an, die für die Lizenz bzw. die Readme-Datei verwendet werden sollen. Wir kommen später darauf zurück. Die Angabe im Feld Extra file list sehen wir uns an, wenn wir die Programm-Quellen in das Archiv aufnehmen. Vorerst lassen wir es leer. PaketeAls nächstes definieren wir, was auf dem System des Benutzers installiert werden soll. Um die Applikation verwenden zu können, muß mindestens das JAR-Archiv installiert werden, die Dokumentation und die Quellen sollen optional sein.Wir definieren also drei verschiedene Pakete, base für alles, was in jedem Fall installiert werden soll, doc für die Dokumentation und source für die Quellen unseres Programms.
Für jedes Paket müssen wir eine Beschreibung (Label) angeben und ob das Paket immer installiert werden soll (required=yes) Installations typen Es ist auch möglich, eine Auswahl von Paketen zu einem Installations-Typ zusammenzufassen, da unsere Demo Applikation nur drei verschiedenen Pakete beinhaltet, verzichten wir darauf.Java ArchivNun fügen wir zum base-Paket unser JAR-Archiv hinzu (base-Paket markieren und den "Plus"-Knopf drücken). Es erscheint ein Dialog, in dem wir einen Identifier und einen Typ angeben müssen.Der Identifier darf nur aus Buchstaben, Ziffern und dem Unterstrich bestehen und muß innerhalb des Pakets eindeutig sein. Der Identifier wird für die Konstruktion von Property-Namen verwendet.
Als Typ wählen wir
jar auf, den wir noch näher
spezifizieren müssen.
Das Feld location gibt an, worin wir unser Archiv installieren wollen, in diesem Fall
handelt es sich um die Bibliothek, die unser Programm enthält. Solche Dateien sollten in
Das Feld target name gibt an, wie die Datei nach der Installation heißen soll, im Feld source file gibt man die Datei an, die in die Distribution kopiert werden soll. Archive werden übrigens automatisch in den Classpath der Applikation aufgenommen. ProgrammAls nächstes sorgen wir dafür, daß der Benutzer unserer Applikation auch aufrufen kann. Dazu fügen wir ein Installable mit dem Namenprogram und dem Typ exec
zum base Paket hinzu.
Im Feld java class geben wir an, welche Klasse die Die Felder template name und source file lassen wir leer, in diesem Fall wird je nach Betriebssystem ein passendes Template ausgewählt. Der Zweck dieser Felder wird noch klar werden, wenn wir uns mit Templates beschäftigen. DateienAls Beispiel für eine 'normale' Datei fügen wir jetzt unsereREADME Datei hinzu
Diese soll als Datei README dort Installiert werden, wo alle andere Dokumentation abgelegt
wird.
Wir erzeugen also ein Installable file mit dem Bezeichner Für Datei LICENSE soll die Lizenz für unsere Demo-Applikation enthalten, führen wir die gleichen Schritte wie eben durch. Property TemplatesTemplates sind Textdateien, die während der Installation 'ausgefüllt' werden. Ein solches Template haben wir schon verwendet. Wenn die Applikation auf einem UNIX-System installiert wird, wird eine Skript-Datei aus einem Template erzeugt.Wir benötigen diesen Mechanismus um unsere Property-Datei zu erstellen. Unsere Demo Applikation soll herausfinden können, wo die Hilfe-Dateien zu finden sind. Dazu nehmen wir die Property Datei (die wir zum Testen sicher schon erstellt haben) und ändern sie entsprechend ab.
Wir ersetzen hier die Pfadangaben durch Strings der Form Als Variablen stehen zur Verfügung
Nun erzeugen wir noch ein Installable für das Template. Das funktioniert so ähnlich wie bei Dateien.
Das Template installieren wir unter Templates können natürlich auch noch für andere Dinge verwendet werden, z.B. für die Readme-Datei. DateilistenMöchte man eine große Anzahl Dateien in das Archiv aufnehmen, ist das Definieren jeder einzelnen Datei mit dembuilder viel zu aufwendig.
Für die Dokumentation und die Quellen unserer Applikation verwenden wir daher eine andere Möglichkeit, nämlich eine Dateiliste.
Eine Dateiliste ist eine Textdatei, bei der jede Zeile aus ein oder zwei Feldern besteht,
die durch Leerzeichen getrennt sind. Beginnt eine Zeile mit dem Der erste Name gibt jeweils an, unter welchem Namen die Datei im Archiv und auf dem Zielsystem heisen soll, der zweite Name, falls vorhanden, gibt den Namen auf dem Entwicklungssystem an. Fehlt der zweite Name, wird automatisch der Name im Archiv auch für den Namen der Quelldatei verwendet. Der Name im Archiv muß immer ein relativer Dateiname sein. Ist der Name der Quelldatei eine relative Angabe, wird er als relativ zum Verzeichnis der Dateiliste betrachtet.
Lange Rede, kurzes Beispiel : Wir wollen eine HTML-Datei und ein paar GIF-Bilder aus dem
Verzeichnis
Das Erstellen der Dateiliste kann (und sollte) man natürlich automatisieren. 3. Schritt - Erzeugen des ArchivsDer lertzte Schritt, das Erstellen des Archivs, ist jetzt recht einfach. Im Menü Create können Sie das gewünschte Archiv-Format auswählen entweder die selbstextrahierende Java-Klasse oder ein Zip-Archiv.Das Zip-Archiv enthält die gleichen Dateien wie die selbstextrahierende Klasse, mit Ausname der Dateien des Installers. Es ist darum etwa 100k Byte kleiner.
Wir wollen eine selbstextrahierende Java-Klasse erzeugen (wenn wir nur ein Zip-Archiv
erstellen wollten, hätten wir das mit
Im Feld loader class geben Sie die Klasse an, die als Loader für den Installer dienen soll. Normalerweise ist das die Klasse, die mit dem Installer ausgeliefert wurde. Sie können hier aber einen anderen Loader angeben. Im Feld output dir geben Sie das Verzeichnis an, in dem das fertige Archiv abgelegt werden soll. Der Dateiname des Archivs ist immer derselbe wie der des Laders. Mit OK wird das Archiv erstellt und es erscheint ein Protokoll-Fenster
|