Enterprise Eclipse RCP: Deployment

Installer verwenden

Wenden wir uns nun dem Deployment eines Eclipse-RCP-Clients ohne ein externes Software-Verteilungssystem zu. Aus technischer Sicht ist es ein Segen, dass ein Eclipse-RCP-Client nicht „installiert“ werden muss. Es gibt also keinen Ärger mit der Registry oder anderen Systemdateien. Ich persönlich habe allerdings die Erfahrung gemacht, dass viele Benutzer schlichtweg davon ausgehen, dass eine neue Software „installiert“ werden muss, bevor sie benutzt werden kann. Sie erwarten also ein Installationsprogramm, das fragt, wohin das Ganze denn installiert werden soll und ob bzw. wie viele Shortcuts eingerichtet werden sollen. Nach Abschluss der Installation muss dann im Startmenü ein eigener Eintrag zum Starten und Deinstallieren des neuen Programms auftauchen. Kurzum, einige Dinge müssen einfach etwas komplizierter gemacht werden, damit sie auch professionell aussehen.

Das Erstellen einer Setup-Datei ist grundsätzlich mit allen Installer-Programmen möglich. Man kann sie einfach auf das exportierte Produkt anwenden, das dann mithilfe des Installationsskripts erwartungskonform in das Zielverzeichnis „installiert“ wird.

Für ein Windows-Zielsystem bietet das Nullsoft Scriptable Install System (NSIS [1]) ein schönes Plug-in für die Eclipse IDE. Die Mac- und Linux-User mögen mir hier die Fokussierung auf Windows nachsehen, aber das typische Zielsystem für Unternehmenssoftware ist eben Windows. Für andere Zielsysteme kann, wie gesagt, jedes andere Installer-Programm verwendet werden. Eclipse NSIS [2], also das NSIS-Plug-in für Eclipse, bietet einen Wizard zum Erstellen eines Installer-Skripts. Dieses Skript kann dann aus der IDE heraus verwendet werden, um die Setup-Datei für den Client zu erstellen. Dazu gibt es noch einen Editor, mit dessen Hilfe das Skript nachträglich händisch bearbeitet werden kann.

Das Ergebnis ist eine sehr professionell aussehende und erwartungskonforme Installationsroutine. Bei der Entscheidung für das Deployment mittels einer zu verteilenden ausführbaren Setup-Datei ist allerdings, wie beschrieben, die Rechteproblematik auf dem Zielrechner zu berücksichtigen. Die Setup-Datei kann dann beliebig verteilt werden, beispielsweise mittels Download per HTTP bzw. FTP oder durch eine zentrale Bereitstellung durch einen über das Netzwerk zugänglichen Ordner.

Eclipse RCP und Java Web Start

Alternativ zu einem Download der Clientinstallationsdatei kann auch der Verteilungsmechanismus Java Web Start genutzt werden. Hier muss man ehrlich zugeben, dass die beiden Plattformen Eclipse bzw. OSGi und Java Web Start aufgrund ihrer Wurzel wohl nie richtige Freunde werden. Zum einen verhindert der Start des Clients durch den Web-Start-Mechanismus, dass einige OSGi-Startparameter zum Tragen kommen. Dann funktionieren bestimmte Platform Exit Codes wie Restart nicht. Letztlich lassen sich per Web Start installierte Bundles auch nicht mehr über den Eclipse-eigenen Mechanismus aktualisieren. Dennoch ist es mit den genannten Einschränkungen möglich, einen Eclipse-RCP-Client über Java Web Start zu verteilen [3].

Java Web Start stellt Bedingungen an die zu verteilenden Artefakte der Anwendung. Es können lediglich signierte Java-Archive verwaltet werden. Zudem müssen die Artefakte in einer Web-Start-Konfigurationsdatei deklariert werden. Die geforderte Struktur passt grundsätzlich auf die Art und Weise, wie Eclipse RCP Bundles über eine Updatesite zur Verfügung stellt. Der Featureexport des PDE (Plug-in Development Environment) bietet daher die Möglichkeit, die benötigte .jnlp-Datei mit zu erstellen. Abbildung 1 zeigt den Featureexportdialog für ein Feature com.foo.feature.

Abb. 1: Der Feature-Export-Dialog unterstützt das Erstellen der notwendigen .jnlp-Dateien

Durch das Anwählen der Option PACKAGE AS INDIVIDUAL JAR ARCHIVES auf dem Reiter OPTIONS werden die beiden Reiter JAR SIGNING und JAVA WEB START sichtbar. Hier können die für Web Start notwendigen Informationen angegeben werden. Nach dem Export taucht dann neben jedem exportierten Feature jeweils eine .jnlp-Datei im Zielordner auf.

Wie zu Beginn gesagt, harmonieren die beiden Plattformen nicht richtig gut miteinander, sodass die Erstellung der .jnlp-Dateien allein nicht ausreicht, um einen Eclipse-RCP-Client Web-Start-fähig zu machen. Zusätzlich zu den Clientfeatures muss auch das org.eclipse.rcp-Feature exportiert werden, was allerdings durch ein einfaches Inkludieren in das com.foo.feature oder die Verwendung eines Wrapper-Feature umgesetzt werden kann. Viel wichtiger sind zwei andere Punkte. Zum einen ist keine der erstellten .jnlp-Dateien sofort ausführbar, da die Main-Klasse der Web-Start-Anwendung nicht definiert ist. Zwar stellt Equinox eine solche bereit, sie muss allerdings von Hand in der auszuführenden .jnlp-Datei deklariert werden:

-nosplash

Zweitens sind mehrere Einstellungen der .jnlp-Datei, wie Klassenpfad, Workspace-Location oder das zu startenden Produkt, unvollständig und müssen nachgearbeitet werden. Zudem muss die .jnlp-Datei des org.eclipse.rcp-Features korrigiert werden, damit die installierte Eclipse-RCP-Anwendung auch gestartet werden kann [4].

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.