Eclipse-Installationsprogramm schreiben

Letzte Änderung: 15.20 Uhr, Freitag, 18. Juni 2004

Produkte auf der Basis von Eclipse müssen auf dem Computer des Endbenutzers korrekt installiert werden. Spezielle Paket-Tools, wie zum Beispiel InstallShield und RPM werden häufig verwendet, um ausführbare Installationsprogramme zu erstellen, die die Installation, Aktualisierung und Deinstallation automatisieren. Diese Bemerkung erläutert, wie ein Installationsprogramm für ein Produkt auf Basis von Eclipse und für getrennt installierbare Erweiterungen der Produkte auf Basis von Eclipse geschrieben wird.

Angenommen, ein Produktentwicklungsteam ist zuständig für das Bereitstellen der Inhalte, die als ausführbares Installationsprogramm verpackt auf Computern der Endbenutzer installiert werden müssen. Die Erstellung ausführbarer Installationsprogramme geschieht über Scripts, wie auch die Aktionen zum Zeitpunkt der Installation, die für die Interaktion mit dem Endbenutzer und zum Platzieren von Dateien auf deren Computern erforderlich sind. In diesem Hinweis wird detailliert beschrieben, welche Funktionen diese Installationsprogramme ausführen und wie sie funktionieren sollten. 

Diese Bemerkung soll als Anleitung für die Person dienen, die für das Schreiben eines Installationsprogramms für Produkte auf Basis von Eclipse zuständig ist. Es folgen zwei Gründe, die beschreiben warum es sinnvoll ist, dass alle Schreiber von Installationsprogrammen dieser Anleitung folgen:

Erstellungs-Script des Produktinstallationsprogramms

Ein Produktinstallationsprogramm muss eigenständig sein - es muss auf einer CD vertrieben und auf jeder Maschine mit einem geeigneten Betriebssystem installiert werden können.

Eclipse erfordert eine Java2-JRE (Java Runtime Environment), um Java-Code auszuführen. JRE ist lizenzierte Software, die bei Java-Lieferanten erhältlich ist. Wenn ein Unternehmen eine Lizenz Weitervertreiben einer JRE von einem JRE-Lieferanten erwirbt, kann es JRE in sein Produkt integrieren und auf dem Computer des Endbenutzers zusammen mit dem Produkt installieren. Alternativ können Sie voraussetzen, dass JRE auf dem Computer des Endbenutzers vorinstalliert ist und beim Zeitpunkt der Installation des Produkts zugeordnet wird. In beiden Fällen ist für ein auf Eclipse basierendes Produkt eine geeignete JRE erforderlich und das Produktinstallationsprogramm muss die Installation einer JRE und das Suchen oder Verbinden zu einer bereits vorhandenen JRE durchführen. 

Angenommen, eine JRE soll mit dem Produkt installiert werden. Ein Verzeichnis mit dem JRE ist eine Ausgabe an das Erstellungs-Script des Installationsprogramms. Nennen Sie diese Verzeichnis <JRE>. Dieses Verzeichnis muss über die standardmäßige JRE-Verzeichnisstruktur verfügen, in der die ausführbare Java-Datei sich in jre/bin/java.exe befindet und die Klassenbibliothek sich in jre/lib/rt.jar unter dem Verzeichnis <JRE> befindet. Die Grundstruktur dieses Verzeichnisses sieht folgendermaßen aus:

<JRE>/
  jre/
    bin/
      java.exe
    lib/
      rt.jar

Es gibt weitere Dateien (und Unterverzeichnisse) in diesen Verzeichnissen. Im Beispiel wird die allgemeine Struktur angezeigt. Kursive Namen sind produktspezifisch.

Die zweite Eingabe im Erstellungs-Script des Installationsprogramms ist ein Verzeichnis <product head>, das das produktspezifische ausführbare Startprogramm und alle Dateien, die mit Eclipse in keiner Beziehung stehen enthält. Die Grundstruktur dieses Verzeichnisses sieht folgendermaßen aus (der Kursivdruck kennzeichnet Dateinamen, die sich von Produkt zu Produkt ändern können.

<product head>/
  acmeproduct.exe

Die dritte Eingabe im Erstellungs-Script des Installationsprogramms ist ein Verzeichnis <product body>, das die Komponenten und Plug-ins enthält, die für das Produkt entwickelt wurden. Die Grundstruktur dieses Verzeichnisses könnte folgendermaßen aussehen:

<product body>/
  eclipse/
    features/
      com.example.acme.acmefeature_1.0.0/
        feature.xml
      com.example.acme.otherfeature_1.0.0/
        feature.xml
    plugins/
       com.example.acme.acmefeature_1.0.0/
        plugin.xml
        about.ini
        about.properties
        about.mappings
        plugin_customization.ini
        splash.bmp
       com.example.acme.otherfeature_1.0.0/
        plugin.xml
        about.ini
        about.properties
        about.mappings
       com.example.acme.myplugin_1.0.0/
        plugin.xml
        myplugin.jar
       com.example.acme.otherplugin_1.0.0/
        plugin.xml
        otherplugin.jar

Die vierte Eingabe im Erstellungs-Script des Installationsprogramms ist ein Verzeichnis <platform>, das die Komponenten und Plug-ins für die Eclipse Plattform und Tools von Fremdanbietern enthält. Dieses Verzeichnis enthält außerdem das ausführbare Eclipse Standardstartprogramm eclipse.exe (in der Unix-Betriebsumgebung eclipse), startup.jar und alle weiteren Eclipse Plattformdateien, die im Stamm der Installation erforderlich sind. Die Grundstruktur dieses Verzeichnisses könnte folgendermaßen aussehen:

<platform>
  eclipse/
    eclipse.exe
    startup.jar
    features/
      org.eclipse.platform_2.0.0/
      org.eclipse.platform.win32_2.0.0/
      org.eclipse.jdt_2.0.0/
      org.eclipse.pde_2.0.0/
    plugins/
      org.eclipse.platform_2.0.0/
      org.eclipse.core.runtime_2.0.0/
      org.eclipse.core.boot_2.0.0/
      org.eclipse.core.resources_2.0.0/
      org.eclipse.ui_2.0.0/
      org.eclipse.jdt_2.0.0/
      org.eclipse.jdt.core_2.0.0/
      org.eclipse.jdt.ui_2.0.0/
      org.eclipse.pde_2.0.0/
      org.eclipse.pde.core_2.0.0/
      org.eclipse.pde.ui_2.0.0/
      (weitere org.eclipse.*-Plug-in-Verzeichnisse)

Der genaue Inhalt der Eingabeverzeichnisse <JRE>, <product head>, <product body> und <platform> bestimmt, welche Dateien schließlich auf dem Computer des Endbenutzers installiert werden.

Die abschließenden Eingaben im Erstellungs-Script des Installationsprogramms sind die ID und die Versionszeichenfolge für die primäre Komponente des Produkts. Zum Beispiel "com.example.acme.acmefeature" und "1.0.0"; außerdem der Name der ausführbaren Produktdatei, zum Beispiel "acmeproduct.exe". Im Falle von Produkten, die keine eigenen ausführbaren Dateien erfordern, wäre dies der Pfad des ausführbaren Eclipse Standardstartprogramms "eclipse/eclipse.exe". Diese Zeichenfolgen haben für das Installationsprogramm eine besondere Bedeutung. Sie erscheinen in Datei- und Verzeichnisnamen und im Inhalt von Markierungsdateien, die zum Zeitpunkt der Installation erstellt wurden.

Zum Zeitpunkt der Installation muss sich das Installationsprogramm standardmäßig verhalten (weitere Informationen finden Sie nach der Liste der Schritte):

  1. Der Benutzer muss aufgefordert werden, alle Programme zu verlassen
  2. Das zu installierende Produkt muss vorgestellt werden
  3. Gegebenenfalls muss der Benutzer nach dem Namen des registrierten Eigners und nach der Lizenzberechtigung gefragt werden
  4. Die Lizenzvereinbarung des Produkts muss angezeigt werden und der Benutzer muss aufgefordert werden, diese anzunehmen
  5. Eine Position auf dem Datenträger für die Produktinstallation muss angegeben werden (der Benutzer muss diese Standardeinstellung überschreiben können)
  6. Es muss sichergestellt sein, dass kein Produkt und keine Erweiterung an der angegebenen Position bereits gespeichert ist
  7. Der Benutzer muss aufgefordert werden, alle Einzeldaten der Installation zu bestätigen
  8. Eine Markierungsdatei muss erstellt werden, die den Stamm der Produktinstallation markiert
  9. Dateien müssen auf den Datenträger kopiert werden  (siehe unten)
  10. Gegebenenfalls muss der Name des registrierten Eigners und die Lizenzberechtigung in der Beschreibung "Info" eingefügt werden
  11. Ein Direktaufruf im Desktop muss erstellt werden, um die ausführbare Produktdatei auszuführen
  12. Ein geeigneter Eintrag muss erstellt werden, mit dem der Benutzer das Produkt deinstallieren kann
  13. Die ausführbare Produktdatei muss mit der Option -initialize gestartet werden, mit der alle Erstverarbeitungen ausgeführt werden
  14. Es muss die Anzeige der Release-Informationen des Produkts vorgeschlagen werden ("readme"-Datei)

Wenn die in Schritt 5 angegebene Position <install> ist, kopiert das Installationsprogramm alle Dateien in den Verzeichnissen <JRE>, <platform>, <product>  und <product plug-ins> nach <install>.

Eingabedatei Installierte Datei
<JRE>/* <install>/eclipse/*
<product head>/* <install>/*
<product body>/* <install>/*
<platform>/* <install>/*

Die in Schritt 8 erstellte Markierungsdatei <install>/.eclipseproduct wird verwendet, um ein Verzeichnis zu markieren, in das ein auf Eclipse basierendes Produkt installiert wurde. Dies dient vor Allem den Installationsprogrammen von Erweiterungen bei der Suche. Diese Markierungsdatei ist eine Formatdatei java.io.Properties (ISO 8859-1-Zeichencodierung mit dem Escapezeichen "\") und enthält die folgenden Informationen, die das Produkt für den Benutzer kennzeichnen und auf Eclipse basierende Produkte untereinander unterscheiden:

name=Acme Visual Tools Pro
id=com.example.acme.acmefeature
version=1.0.0

Der Wert der Eigenschaft "id" und "version" sind Eingaben im Erstellungs-Script des Installationsprogramms. Es wird davon ausgegangen, dass der Name des Produkts bekannt und unveränderlich ist. (Produkte greifen für üblicherweise nicht auf diese Markierungsdatei zu; lediglich Installationsprogramme von Produkten und Erweiterungen schreiben in dieser Datei und lesen sie.)

Schritt 6 erfordert das Überprüfen einer vorhandenen Datei <install>/eclipse/.eclipseproduct oder <install>/eclipse/.eclipseextension. Ein Produkt kann nicht an der gleichen Position installiert werden, an der ein anderes Produkt oder eine Erweiterung installiert ist.

Nach der Installation aller Dateien enthält die Struktur der höchsten Ebene des Installationsverzeichnisses die folgenden Dateien und Unterverzeichnisse (und möglicherweise weitere):

<install>/
  acmeproduct.exe
  eclipse/
    .eclipseproduct
    eclipse.exe
    startup.jar
    features/
    plugins/
    jre/

Wenn ein Produktinstallationsprogramm Lizenzinformationen vom Benutzer erbittet, beispielsweise den Namen des registrierten Eigners oder die Lizenzberechtigung, müssen diese Informationen im Dialog "Info" des Produkts eingefügt werden (Schritt 10).

Hierzu wird die Benutzeraktion in der Datei "about.mapping" im Plug-in der primären Komponente aufgezeichnet. Zum Beispiel unter <install>/plugins/com.example.acme.acmefeature_1.0.0/about.mapping. Die Datei "about.mapping" kann in der Eingabe <product head> bereits vorhanden sein oder muss zu einem späteren Zeitpunkt durch das Installationsprogramm erstellt werden. Die Tasten sind Zahlen. Der Wert der Taste "n" wird durch die Unterzeichenfolge "{n}" in der Eigenschaft "aboutText" ersetzt. Wenn zum Beispiel eine Lizenzberechtigung Feldnummer 0 war, muss eine Datei "about.mapping" erstellt werden, die eine Zeile "0=T42-24T-ME4U-U4ME" (oder ähnlich) enthält.

Die Datei "about.mapping" ist eine Formatdatei java.io.Properties (ISO 8859-1-Zeichencodierung mit dem Escapezeichen "\"). Wenn sich die native Zeichencodierung bei der Installation von ISO 8859-1 unterscheidet, ist das Installationsprogramm dafür zuständig, die native Zeichencodierung in Unicode umzuwandeln und die Escapezeichen "\", wenn erforderlich, hinzuzufügen. Escapezeichen sind erforderlich, wenn Zeichenfolgen Sonderzeichen (wie zum Beispiel "\") oder nicht-lateinische Zeichen enthalten. Zum Beispiel werden im Feld Nummer 1 die ersten 3 Buchstaben des griechischen Alphabets folgendermaßen geschrieben: "1=\u03B1\u03B2\u03B3".

In Schritt 12 startet das Produktinstallationsprogramm die Ausführbare Produktdatei  <install>/acmeproduct.exe mit der speziellen Option -initialize. Dadurch wird die Eclipse Plattform dazu veranlasst, alle zeitaufwendigen Erstverarbeitungen auszuführen und die Ergebnisse zwischenzuspeichern, so dass beim Start des Produkts durch den Benutzer dieses sofort in einem geschäftsfähigen Status aufgerufen wird.

Verhalten des Deinstallationsprogramms

Zum Zeitpunkt der Deinstallation muss sich das Deinstallationsprogramm standardmäßig verhalten:

  1. Der Benutzer muss aufgefordert werden, das zu deinstallierende Produkt zu verlassen
  2. Der Benutzer muss aufgefordert werden, die Deinstallation des Produkts zu bestätigen
  3. Alle installierten Dateien aus dem Verzeichnis <install> und alle Dateien in <install>/eclipse/features und <install>/eclipse/plugins, einschließlich der Dateien, die von Anderen als diesem Installationsprogramm platziert wurden (z. B. durch den Eclipse Update-Manager) müssen entfernt werden.
  4. Der Direktaufruf im Desktop für die ausführbare Produktdatei muss entfernt werden
  5. Der Eintrag für das Deinstallationsprogramm des Produkts muss entfernt werden
  6. Der Benutzer muss über alle Dateien benachrichtigt werden, die nicht entfernt wurden

Wenn ein Produkt deinstalliert wird, müssen alle Dateien, die bei der Installation angelegt wurden, entfernt werden. Mit ihnen müssen aktualisierte Komponenten und Plug-ins entfernt werden, die durch den Eclipse Update-Manager erstellt wurden. Wichtig: Zum Zeitpunkt der Deinstallation befinden sich möglicherweise andere Verzeichnisse und Dateien im Verzeichnis <install>, insbesondere <install>/eclipse/workspace/, <install>/eclipse/links/ und <install>/eclipse/configuration/, die wichtige Daten enthalten, welche behalten werden müssen, wenn das Produkt deinstalliert wird. Der Benutzer muss das Produkt an derselben Position deinstallieren und erneut installieren können, ohne wichtige Daten zu verlieren.

Verhalten des Installationsprogramms, wenn das Produkt bereits installiert wurde

Wenn das Produkt bereits auf dem Computer des Benutzers installiert ist, muss das Installationsprogramm die Anwendung einer Funktionsaktualisierung oder eines Versions-Upgrade am installierten Produkt zulassen.

Zum Zeitpunkt der Installation muss sich das Installationsprogramm standardmäßig verhalten:

  1. Der Benutzer muss aufgefordert werden, alle Programme, speziell das zu aktualisierende, zu verlassen
  2. Das installierte Produkt, das aktualisiert werden soll, muss lokalisiert werden, wenn erforderlich muss auf dem Datenträger nach einem vorhandenen Produktinstallationsprogramm gesucht oder es dem Benutzer ermöglicht werden, es zu lokalisieren.
  3. Es muss ermittelt werden, ob es sich beim Installationsprogramm um eine kompatible Aktualisierung handelt
  4. Gegebenenfalls muss der Benutzer nach dem Namen des registrierten Eigners und nach der Lizenzberechtigung gefragt werden
  5. Die aktualisierte Lizenzvereinbarung des Produkts muss angezeigt werden und der Benutzer muss aufgefordert werden, diese anzunehmen
  6. Der Benutzer muss aufgefordert werden, alle Einzeldaten der Aktualisierung zu bestätigen
  7. Dateien müssen auf dem Datenträger aktualisiert werden  (siehe unten)
  8. Gegebenenfalls muss der Direktaufruf im Desktop geändert werden, um die ausführbare Produktdatei auszuführen
  9. Modifizierte oder neu hinzugefügte Dateien müssen der Liste der bei der Deinstallation zu entfernenden Dateien hinzugefügt werden (wenn möglich)
  10. Es muss die Anzeige der Release-Informationen des Produkts vorgeschlagen werden ("readme"-Datei)

In Schritt 2 kann das installierte Produkt an der Anwesenheit eines Verzeichnisses "eclipse" erkannt werden, die eine Datei mit dem Namen ".eclipseproduct" enthält. Das übergeordnete Element des Verzeichnisses "eclipse" ist ein Installationsverzeichnis des Produkts, d. h. <install>/eclipse/.eclipseproduct. Die in dieser Markierungsdatei enthaltenen Informationen müssen dem Benutzer angezeigt werden, damit er bestätigt, dass das korrekte Produkt aktualisiert wird (es ist möglich, dass sich mehrere auf Eclipse basierende Produkte auf dem Computer des Benutzers befinden).

Das Installationsprogramm muss Kompatibilitätsprüfungen in Schritt 3 ausführen, indem einfache Mustererkennung der Unterverzeichnisse im Verzeichnis <install>/eclipse/features durchgeführt werden. Zum Beispiel stellt das Vorhandensein eines Ordners, der mit "com.example.acme.otherfeature_1.0.1" übereinstimmt, sicher, dass eine bestimmte Funktionsaktualisierung bei dem installierten Produkt angewendet wurde.

In Schritt 7 kann das Installationsprogramm alle Dateien löschen oder ersetzen, die es ursprünglich installiert hat und kann weitere Dateien hinzufügen. Wichtig: Mehrere Dateien und Verzeichnisse, einschließlich <install>/eclipse/workspace/, <install>/eclipse/configuration, befinden sich möglicherweise ebenfalls in 'install' und enthalten wichtige Datendateien, die beim Upgrade des Produktes behalten werden müssen. 

Bei Upgrade-Situationen besteht die Wahrscheinlichkeit, dass die meisten Dateien unter <install>/eclipse/plugins/ gleich sind (Ähnliches gilt für <install>/eclipse/features/). Es bestehen im Falle von <install>/eclipse/plugins/ Optimierungsmöglichkeiten, da der Unterverzeichnisname, der die Plug-in-Nummer (oder die Fragmentnummer) enthält, sich dann ändert und nur dann ändert, wenn Dateien darunter geändert werden, d. h., es besteht keine Notwendigkeit, Dateien in <install>/eclipse/plugins/org.eclipse.ui_2.0.0/ zu verändern, wenn dieses Unterverzeichnis auch nach dem Upgrade vorhanden sein sollte. Wenn eine der Plug-in-Dateien geändert werden soll, wird die Versionsnummer des Plug-ins geändert, wodurch die Dateien für das aktualisierte Plug-in in einem parallelen Verzeichnis <install>/eclipse/plugins/org.eclipse.ui_2.0.1/ installiert werden. 

Eine an anderer Stelle installierte JRE zuordnen

Die Position der JRE wird in <install>/eclipse/jre/bin/javaw.exe erwartet. Wenn sie sich an einer anderen Stelle befindet, muss der absolute Pfad mit der Option -vm in der Befehlszeile angegeben werden. Zum Beispiel -vm C:\j2jre1.3.0\jre\bin\javaw.exe. In diesem Fall muss das Installationsprogramm diese Option der Befehlszeile des Desktop-Direktaufrufs hinzufügen, den es erstellt.

Erstellungs-Script des Erweiterungsinstallationsprogramms

Erweiterung bedeutet in diesem Fall ein separat installierbares Komponentenset und dessen Plug-ins, die einem oder mehreren auf Eclipse basierenden Produkten zugeordnet oder von diesen verwendet werden können, die auf demselben Computer installiert sind. Im Gegensatz zu einem Produkt ist eine Erweiterung nicht eigenständig. Eine Erweiterung enthält keine ausführbare Produktdatei, die Eclipse Plattform oder eine JRE.

Der Einfachheit halber sei angenommen, dass eine Erweiterung lediglich aus einer Komponente besteht. Die erste Eingabe im Erstellungs-Script des Installationsprogramms ist ein Verzeichnis <extension>, das die Komponente und Plug-ins enthält. Angenommen, eine Erweiterung verfügt über keine Dateien, die sich auf Eclipse beziehen. Wäre dies der Fall, würden diese in <extension>/ und nicht in <extension>/eclipse/ platziert. Die Grundstruktur dieses Verzeichnisses könnte folgendermaßen aussehen:

<extension>/
  eclipse/
    features/
      com.example.wiley.anvilfeature_1.0.0/
        feature.xml
    plugins/
       com.example.wiley.anvilfeature_1.0.0/
        plugin.xml
        about.ini
        about.properties
        about.mappings
       com.example.wiley.mainplugin_1.0.0/
       com.example.wiley.otherplugin_1.0.0/

Der genaue Inhalt des Eingabeverzeichnisses <extension> bestimmt, welche Dateien schließlich auf dem Computer des Endbenutzers installiert werden.

Die abschließenden Eingaben im Erstellungs-Script des Installationsprogramms sind die Zeichenfolge der ID und der Version für die Komponente der Erweiterung. Zum Beispiel "com.example.wiley.anvil" und "1.0.0". Diese Zeichenfolgen haben für das Installationsprogramm eine besondere Bedeutung. Sie erscheinen in Datei- und Verzeichnisnamen und im Inhalt von Markierungsdateien, die zum Zeitpunkt der Installation erstellt wurden.

Ein Erweiterungsinstallationsprogramm ist einem Produktinstallationsprogramm in vielen Punkten ähnlich. Die Bereiche, in denen sie sich unterscheiden, sind im Folgenden hervorgehoben:

Zum Zeitpunkt der Installation verhält sich das Installationsprogramm standardmäßig:

  1. Der Benutzer muss aufgefordert werden, alle Programme zu verlassen
  2. Die zu installierende Erweiterung muss vorgestellt werden
  3. Gegebenenfalls muss der Benutzer nach dem Namen des registrierten Eigners und nach der Lizenzberechtigung gefragt werden
  4. Die Lizenzvereinbarung der Erweiterung muss angezeigt werden und der Benutzer muss aufgefordert werden, diese anzunehmen
  5. Eine Position auf dem Datenträger für die Erweiterungsinstallation muss angegeben werden (der Benutzer muss diese Standardeinstellung überschreiben können)
  6. Es muss sichergestellt sein, dass kein Produkt und keine andere Erweiterung an der angegebenen Position bereits gespeichert ist
  7. Der Benutzer muss gefragt werden, welche(s) Produkt(e) diese Erweiterung verwenden sollen (auf dem Datenträger suchen; durchsuchen oder überspringen)
  8. Optional muss bestimmt werden, ob die Erweiterung mit den ausgewählten Produkten kompatibel ist
  9. Der Benutzer muss aufgefordert werden, alle Einzeldaten der Installation zu bestätigen
  10. Eine Markierungsdatei muss erstellt werden, die den Stamm der Erweiterungsinstallation markiert
  11. Dateien müssen auf den Datenträger kopiert werden  (siehe unten)
  12. Der Name des registrierten Eigners und die Lizenzberechtigung muss in der Beschreibung "Info" eingefügt werden
  13. Ein geeigneter Eintrag muss erstellt werden, mit dem der Benutzer die Erweiterung deinstallieren kann
  14. Es muss eine Verbindungsdatei in allen ausgewählten Produkten geschrieben werden, die die Erweiterung dem Produkt zuordnet
  15. Es muss die Anzeige der Release-Informationen der Erweiterung vorgeschlagen werden ("readme"-Datei)

Wenn die in Schritt 5 angegebene Position <install> ist, kopiert das Installationsprogramm alle Dateien in den Verzeichnissen <extension> nach <install> in Schritt 11.

Eingabedatei Installierte Datei
<extension>/* <install>/*

Für Schritt 7 kann jedes Eclipse Produkt in Betracht gezogen werden. Auf Eclipse basierende Produkte können am Vorhandensein einer Datei <product install>/eclipse/.eclipseproduct erkannt werden. Der Benutzer muss in der Lage sein, eine begrenzte Suche des Datenträgers nach installierten Produkten anzufordern (über eine Schaltfläche "Nach installierten Produkten suchen") oder zu einem Verzeichnis navigieren können, das das Produkt enthält (d. h. eine Schaltfläche "Durchsuchen").

Das Installationsprogramm muss Kompatibilitätsprüfungen in Schritt 3 ausführen, indem einfache Mustererkennung der Unterverzeichnisse im Verzeichnis <product install>/eclipse/features durchgeführt werden. Beispielsweise hat das Vorhandensein eines Ordners, der mit "org.eclipse.jdt_2.*" übereinstimmt, zur Folge, dass JDT in das installierte Produkt integriert wird. 

Die in Schritt 10 erstellte Markierungsdatei <install>/eclipse/.eclipseextension wird verwendet, um ein Verzeichnis zu markieren, in das eine auf Eclipse basierende Erweiterung installiert wurde (Analog zur Markierungsdatei .eclipseproduct eines Produkts). Diese Markierungsdatei ist eine Formatdatei java.io.Properties (ISO 8859-1-Zeichencodierung mit dem Escapezeichen "\") und enthält die folgenden Informationen, die die Erweiterung für den Benutzer kennzeichnen und auf Eclipse basierende Erweiterungen untereinander unterscheiden:

name=Wiley Anvil Enterprise Edition
id=com.example.wiley.anvilfeature
version=1.0.0

Der Wert der Eigenschaft "id" und "version" sind Eingaben im Erstellungs-Script des Installationsprogramms. Es wird davon ausgegangen, dass der Name der Erweiterung bekannt und unveränderlich ist. (Produkte greifen für üblicherweise nicht auf diese Markierungsdatei zu; lediglich Installationsprogramme von Produkten und Erweiterungen schreiben in dieser Datei und lesen sie.)

Nach der Installation aller Dateien enthält die Struktur der höchsten Ebene des Installationsverzeichnisses die folgenden Dateien und Unterverzeichnisse:

<install>/
  eclipse/
    .eclipseextension
    features/
    plugins/

Der einzige bedeutende Unterschied zu einem Produktinstallationsprogramm besteht darin, dass ein Erweiterungsinstallationsprogramm auch Verbindungsdateien in anderen auf Eclipse basierenden Produkten erstellt, die bereits auf dem Computer des Benutzers vorhanden sind. (Dies erspart es dem Benutzer, die neue Erweiterung mit Hilfe des Eclipse Update-Managers innerhalb jedes Produkts manuell zuzuordnen.) 

Die in Schritt 14 erstellte Verbindungsdatei ist <product install>/eclipse/links/com.example.wiley.anvilfeature.link; d. h. die Datei besitzt denselben Namen wie das Komponentenverzeichnis der Erweiterung ohne den Suffix der Versionsnummer. Eine Verbindungsdatei ist eine Formatdatei java.io.Properties (ISO 8859-1-Zeichencodierung mit dem Escapezeichen "\"). Der Schlüssel ist "path", und der Wert ist der absolute Pfad der installierten Erweiterung <install>. Ein Eintrag könnte zum Beispiel folgendermaßen aussehen: "path=C:\\Programme\\Wiley\\Anvil". Das Installationsprogramm ist für die Umwandlung von der nativen Zeichencodierung in Unicode verantwortlich und muss, wenn erforderlich, das Escapezeichen "\" hinzufügen. Escapezeichen sind normalerweise erforderlich, da <install> üblicherweise Sonderzeichen (wie z. B. "\") enthält und Verzeichnisse benennen kann, die nicht-lateinische Zeichen in ihren Namen enthalten. Das Produkt liest beim Start Verbindungsdateien. Das Installationsprogramm zeichnet alle Verbindungsdateien auf, die es erstellt, damit diese lokalisiert werden können, wenn die Erweiterung aktualisiert oder deinstalliert wird.

Verhalten des Deinstallationsprogramms

Zum Zeitpunkt der Deinstallation muss sich das Deinstallationsprogramm standardmäßig verhalten:

  1. Der Benutzer muss aufgefordert werden, alle Programme zu verlassen, speziell die Produkte, die die zu deinstallierende Erweiterung verwenden
  2. Der Benutzer muss aufgefordert werden, die Deinstallation der Erweiterung zu bestätigen
  3. Alle installierten Dateien aus dem Verzeichnis <install> und alle Dateien in <install>/eclipse/features und <install>/eclipse/plugins, einschließlich der Dateien, die von Anderen als diesem Installationsprogramm platziert wurden (z. B. durch den Eclipse Update-Manager) müssen entfernt werden.
  4. Wenn möglich, muss die Verbindungsdatei aus allen Produkten entfernt werden, denen sie hinzugefügt wurde 
  5. Der Eintrag für das Deinstallationsprogramm der Erweiterung muss entfernt werden
  6. Der Benutzer muss über alle Dateien benachrichtigt werden, die nicht entfernt wurden

Wenn eine Erweiterung deinstalliert wird, müssen alle Plug-in- sowie Komponentendateien gelöscht werden. In diesen Unterverzeichnissen befinden sich keine wichtigen Datendateien, die beibehalten werden müssen. Dadurch kann der Benutzer eine Erweiterung vollständig deinstallieren, einschließlich alle Updates, die durch den Eclipse Update-Manager angewendet wurden.

Verhalten des Installationsprogramms, wenn die Erweiterung bereits installiert wurde

Wenn die Erweiterung bereits auf dem Computer des Benutzers installiert ist, muss das Installationsprogramm die Anwendung einer Funktionsaktualisierung oder eines Versions-Upgrade an der installierten Erweiterung zulassen.

Zum Zeitpunkt der Installation muss sich das Installationsprogramm standardmäßig verhalten:

  1. Der Benutzer muss aufgefordert werden, alle Programme zu verlassen, speziell die Produkte, die die zu aktualisierende Erweiterung verwenden
  2. Die installierte Erweiterung, die aktualisiert werden soll, muss lokalisiert werden, wenn erforderlich muss auf dem Datenträger nach einem vorhandenen Erweiterungsinstallationsprogramm gesucht oder es dem Benutzer ermöglicht werden, es zu lokalisieren
  3. Es muss ermittelt werden, ob es sich beim Installationsprogramm um eine kompatible Aktualisierung handelt
  4. Gegebenenfalls muss der Benutzer nach dem Namen des registrierten Eigners und nach der Lizenzberechtigung gefragt werden
  5. Die aktualisierte Lizenzvereinbarung des Produkts muss angezeigt werden und der Benutzer muss aufgefordert werden, diese anzunehmen
  6. Der Benutzer muss aufgefordert werden, alle Einzeldaten der Aktualisierung zu bestätigen
  7. Dateien müssen auf dem Datenträger aktualisiert werden  (siehe unten)
  8. Modifizierte oder neu hinzugefügte Dateien müssen der Liste der bei der Deinstallation zu entfernenden Dateien hinzugefügt werden (wenn möglich)
  9. Es muss die Anzeige der Release-Informationen der Erweiterung vorgeschlagen werden ("readme"-Datei)

In Schritt 2 kann die installierte Erweiterung an der Anwesenheit eines Verzeichnisses "eclipse" erkannt werden, die eine Datei mit dem Namen ".eclipseextension" enthält. Das übergeordnete Element des Verzeichnisses "eclipse" ist ein Installationsverzeichnis der Erweiterung, d. h. <install>/eclipse/.eclipseextension. Die in dieser Markierungsdatei enthaltenen Informationen müssen dem Benutzer angezeigt werden, damit er bestätigt, dass die korrekte Erweiterung aktualisiert wird (es ist möglich, dass sich mehrere auf Eclipse basierende Erweiterungen auf dem Computer des Benutzers befinden).

In Schritt 7 darf das Installationsprogramm keine der Dateien löschen oder überschreiben, die es ursprünglich installiert hat. Statt dessen sollte es die Dateien lediglich für neue Versionen von Komponenten oder Plug-ins hinzufügen und möglichst die Markierungsdatei <install>/eclipse/.eclipseextension erneut schreiben. Wenn Sie die alten Versionen nicht löschen, hat der Benutzer die Möglichkeit, die Aktualisierung zu verlassen. Beim Upgrade einer Produktinstallation besteht keine Notwendigkeit, Dateien in <install>/eclipse/plugins/com.example.wiley.otherplugin_1.0.0/ zu ändern, wenn dieses Unterverzeichnis auch nach dem Upgrade bestehen soll. Wenn eine der Plug-in-Dateien geändert werden soll, wird die Versionsnummer des Plug-ins geändert, wodurch die Dateien für das aktualisierte Plug-in in einem parallelen Verzeichnis <install>/eclipse/plugins/com.example.wiley.otherplugin_1.0.1/ installiert werden.