Sidst ændret 18. juni 2004 kl. 15:20
Eclipse-baserede produkter skal kunne installeres korrekt på brugerens computer. Der bruges ofte specielle pakkeværktøjer som f.eks. InstallShield og RPM til at bygge eksekvérbare installationsprogrammer, som automatiserer installation, opdatering og fjernelse. Dette afsnit beskriver, hvordan du skriver et installationsprogram til et Eclipse-baseret produkt og til udvidelser til Eclipse-baserede produkter, som kan installeres separat.
Det antages, at et produktudviklingsteam har ansvaret for at stille de rå ingredienser til rådighed, som skal finde vej til brugernes computere i form af et eksekvérbart installationsprogram. I det følgende beskrives oprettelsen af eksekvérbare installationsprogrammer samt de funktioner på installationstidspunktet, som er nødvendige for at samarbejde med brugerne og gemme filer på deres computere. Dette afsnit beskriver i detaljer, hvad installationsprogrammerne skal udføre, og hvordan de skal fungere.
Beskrivelsen skal opfattes som en opskrift til den person, der er ansvarlig for at skrive et installationsprogram til et Eclipse-baseret produkt. Der er to grunde til, at alle forfattere til installationsprogrammer bør følge opskriften:
Et produktinstallationsprogram bør være selvstændigt - en programtype, der kan distribueres via cd og installeres på alle computere med et passende styresystem.
Eclipse kræver en Java2 JRE (Java Runtime Environment) til at afvikle Java-kode. JRE'er er licenseret software, som kan skaffes fra Java-leverandører. Hvis en virksomhed har licens til at redistribuere en JRE fra en JRE-leverandør, kan virksomheden inkludere en JRE i dens produkt og installere den på brugerens computer samtidig med produktet. Alternativet er at kræve, at en JRE er installeret på forhånd på brugerens computer, og at der er tilknytning til den på installationstidspunktet. Uanset metoden, kræver et Eclipse-baseret produkt en passende JRE, og produktinstallationsprogrammet skal enten installere en JRE eller finde og oprette link til en allerede installeret JRE.
Antag, at en JRE skal installeres med produktet. Et bibliotek, som indeholder
JRE'en, er ét input til installationsscriptet. Kald dette bibliotek for
<JRE>. Biblioteket skal have en standard JRE-biblioteksstruktur, den eksekvérbare
Java skal være placeret i jre/bin/java.exe
, og klassebiblioteket skal være
placeret i jre/lib/rt.jar
under biblioteket <JRE>.
Bibliotekets basale struktur ser sådan ud:
<JRE>/
jre/
bin/
java.exe
lib/
rt.jar
Der findes flere filer og underbiblioteker i disse biblioteker, så dette er kun et eksempel, som viser den generelle struktur. Navne i kursiv er produktspecifikke.
Det andet input til installationsscriptet er et bibliotek, <produkthoved
>,
som indeholder det produktspecifikke eksekvérbare startprogram og de filer,
som ikke er relateret til Eclipse. Bibliotekets basale struktur kan se sådan ud, hvor navne i kursiv
angiver filnavne, som varierer fra produkt til produkt:
<produkthoved>/
Det tredje input til installationsscriptet er et bibliotek, <
acmeproduct.exe
produktindhold
>,
som indeholder de funktioner og plugins, der er udviklet til
produktet. Bibliotekets basale struktur kan se sådan ud:
<produktindhold>/
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
Det fjerde input til installationsscriptet er et bibliotek, <platform
>,
som indeholder funktioner og plugins til selve Eclipse-platformen og eventuelle tredjepartsværktøjer, som er
inkluderet. Biblioteket indeholder også standardfilen til start af Eclipse, eclipse.exe
,
(kaldet eclipse
på Unix-styresystemet), dens ledsager
startup.jar
og eventuelle andre Eclipse-platformsfiler, der skal være placeret i roden af installationen.
Bibliotekets basale struktur kan se sådan ud:
<platform>
Indholdet af inputbibliotekerne <
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/
(flere pluginbiblioteker af typen org.eclipse.*)
JRE
>, <produkthoved
>,
<produktindhold
> og
<platform
> bestemmer, hvilke filer der bliver installeret på
brugerens computer.
De sidste input til installationsscriptet er id- og versionsstrenge for
produktets primære funktioner, f.eks. "com.example.acme.acmefeature"
,
og "1.0.0
", og navnet på
produktets eksekvérbare fil, f.eks. "acmeproduct
.exe
".
Hvis produkterne ikke kræver deres egne eksekvérbare produktfil, kan det være stien til
standardfilen til start af Eclipse, "eclipse/eclipse.exe
".
Strengene har en speciel betydning for installationsprogrammet, og vises i fil- og
biblioteksnavne og i indholdet af de markeringsfiler, der oprettes på installationstidspunktet.
Installationsprogrammet skal fungere på en standardmåde på installationstidspunktet. Der er flere oplysninger efter listen af trin:
Hvis den placering, der er angivet i trin 5, er <install
>, kopierer installationsprogrammet
alle filerne i bibliotekerne <JRE
>, <platform>,
<produkt
>
og <produkt-plugins>
til <install
>.
Inputfil | Installeret fil |
<JRE>/* |
<install>/eclipse/* |
<produkthoved>/* |
<install>/* |
<produktindhold>/* |
<install>/* |
<platform>/* |
<install>/* |
Den markeringsfil, der blev oprettet i trin 8, hedder <install>/eclipse/.eclipseproduct
og
bruges til at markere et bibliotek, hvor et Eclipse-baseret produkt er installeret. Det er primært for at sikre, at installationsprogrammer
til udvidelser kan finde biblioteket.
Markeringsfilen er en java.io.Properties-formatfil
(ISO 8859-1-tegnkodning med
"\"-escape-sekvenser) og indeholder følgende oplysninger, som identificerer
produktet over for brugeren og skelner ét
Eclipse-baseret produkt fra et andet:
name=Acme Visual Tools Pro
id=com.example.acme.acmefeature
version=1.0.0
Værdierne af egenskaberne "id" og "version" er input til installationsscriptet. Navnet på produktet formodentlig kendt og fastfrosset. Produkter opretter normalt ikke adgang til markeringsfilen. Det er kun installationsprogrammer til produkter og udvidelser, som skriver eller læser filen.
Trin 6 kræver undersøgelse af, om der findes en eksisterende
<install>/eclipse/.eclipseproduct
- eller
<install>/eclipse/.eclipseextension
-fil. Et produkt må ikke
installeres i præcist det samme sted som et andet produkt eller en anden udvidelse.
Når alle filer er installeret, indeholder det øverste niveau af installationsbiblioteket følgende filer og underbiblioteker og eventuelt andre:
<install>/
Hvis et produktinstallationsprogram beder brugeren om licensoplysninger, som f.eks.
navnet på den registrerede ejer og licensnøglen, skal oplysningerne også vises i produktets
"Om"-dialogboks (trin 10).
acmeproduct.exe
eclipse/
.eclipseproduct
eclipse.exe
startup.jar
features/
plugins/
jre/
Det gøres ved at registrere brugerens svar i filen "about.mapping
" i den
primære funktions plugin. F.eks. i <install>/plugins/com.example.acme.acmefeature_1.0.0/about.mapping
.
Filen "about.mapping
" kan findes allerede i inputtet <produkthoved
> eller
skal oprettes af installationsprogrammet på installationstidspunktet.
Nøglerne er tal. Værdien af nøglen "n" erstatter
strengen "{n}
" i egenskaben "aboutText
".
Hvis en licensnøgle f.eks. er feltnummer 0, skal der oprettes en
"about.mapping
"-fil, der indeholder en linje som denne:
"0=T42-24T-ME4U-U4ME
".
Bemærk:
Filen "about.mapping
" er en java.io.Properties-formatfil
(ISO 8859-1-tegnkodning med "\"-escape-sekvenser).
Hvis den indbyggede tegnkodning på installationstidspunktet er forskelligt fra ISO 8859-1, er
installationsprogrammet ansvarlig for at konvertere den indbyggede tegnkodning til
Unicode og for at tilføje "\"-escape-sekvenser, hvor det er nødvendigt. Der kræves escape-sekvenser, hvis
strengene indeholder specialtegn, som f.eks. "\", eller tegn, som ikke er latinske tegn.
Hvis feltnummer 1 f.eks. indeholder de tre første bogstaver i det græske alfabet, skal de
skrives som "1=\u03B1\u03B2\u03B3
".
I trin 12 starter produktinstallationsprogrammet den eksekvérbare produktfil
<install>/acmeproduct.exe
med parameteren
-initialize. Det bevirker, at Eclipse-platformen udfører al den tidskrævende
førstegangsbehandling uden brugerinput og gemmer resultatet, så produktet er klar til brug, når
brugeren starter det.
Når produktet skal fjernes, skal programmet til fjernelse af installationen som standard fungere sådan:
install
> og
alle filer i <install
>/eclipse/features
og
<install
>/eclipse/plugins
inklusive de filer, som andre parter end
installationsprogrammet har placeret her. Det kan f.eks. være filer, som er installeret af
opdateringsstyringen til Eclipse.Når produktet er fjernet, skal de installerede filer fjernes sammen med de opdaterede funktioner og
plugins, som opdateringsstyringen til Eclipse har installeret.
Vigtigt: Der kan på installationstidspunktet være andre biblioteker og filer i biblioteket
<install>
, herunder specielt
<install>/eclipse/workspace/
,
<install>/eclipse/links/
og <install>/eclipse/configuration/
, som
indeholder vigtige data, der skal bevares, når produktet fjernes.
Brugeren skal være i stand til at fjerne og geninstallere et produkt det samme sted uden at
miste vigtige data.
Hvis produktet allerede er installeret på brugerens computer, skal installationsprogrammet tillade, at en serviceopdatering eller en versionsopgradering tilføjes til det installerede produkt.
Installationsprogrammet skal fungere på en standardmåde på installationstidspunktet:
I trin 2 kan et installeret produkt blive genkendt ved tilstedeværelse af et
"eclipse
"-bibliotek, som indeholder filen
".eclipseproduct
".
Biblioteket oven over "eclipse
"-biblioteket er et produkts installationsbibliotek, f.eks.
<install>/eclipse/.eclipseproduct
.
Oplysningerne i markeringsfilen skal vises, så brugeren kan bekræfte, at det er det
rigtige produkt, der opdateres, fordi der kan være flere
Eclipse-baserede produkter på brugerens computer.
Installationsprogrammet skal udføre kompatibilitetskontrol i trin 3 ved enkel mønstermatch med
underbiblioteker i biblioteket <install>/eclipse/features
.
Tilstedeværelsen af en folder, som svarer til "com.example.acme.otherfeature_1.0.1
",
sikrer f.eks., at en bestemt serviceopdatering er installeret for det installerede produkt.
I trin 7 kan installationsprogrammet slette eller erstatte de filer, der oprindeligt blev installeret, og
tilføje flere filer. Vigtigt: Der kan være placeret flere filer og biblioteker,
herunder <install>/eclipse/workspace/
og <install>/eclipse/configuration
,
sammen med installationen, som indeholder vigtige datafiler, der skal bevares, når produktet opgraderes.
Der er stor sandsynlighed for, at de fleste af filerne under <install>/eclipse/plugins/
er de samme i en opgraderingssituation. Det samme gælder for <install>/eclipse/features/
.
Der er en god mulighed for optimering i <install>/eclipse/plugins/
, fordi
underbiblioteksnavnet, som indeholder plugin'ens eller fragmentets versionsnummer, kun ændres,
hvis filerne under biblioteket ændres. Der er med andre ord ingen grund til at
røre ved andre filer i <install>/eclipse/plugins/org.eclipse.ui_2.0.0
/, hvis dette
underbibliotek også skal eksistere efter opgraderingen. Hvis nogen af plugin'ens filer skal ændres,
revideres plugin'ens versionsnummer, hvorved filerne til den opgraderede plugin installeres i
et parallelt bibliotek ved navn <install>/eclipse/plugins/org.eclipse.ui_2.0.1
/.
JRE'en forventes at være placeret i <install>/eclipse/jre/bin/javaw.exe
.
Hvis den er placeret et andet sted, skal den absolutte sti angives med parameteren -vm
på
kommandolinjen, f.eks. -vm C:\j2jre1.3.0\jre\bin\javaw.exe
.
I det tilfælde skal installationsprogrammet tilføje parameteren til kommandolinjen for den
desktopgenvej, som det opretter.
Med udvidelse menes der et separat installérbart sæt funktioner og deres plugins, som kan tilknyttes med og bruges fra et eller flere Eclipse-baserede produkter, som er installeret på den samme computer. I modsætning til et produkt, er en udvidelse ikke selvstændig. En udvidelse omfatter ikke en eksekvérbar produktfil, Eclipse-platformen eller en JRE.
Antag, at udvidelsen består af en enkelt funktion.
Det første input til installationsscriptet er et bibliotek, <extension
>, som indeholder
dens funktion og plugins. Det antages, at udvidelsen ikke har nogen filer, som er
relateret til Eclipse. Hvis det var tilfældet, skulle de være placeret i <extension>/
og
ikke i <extension>/eclipse/
. Bibliotekets basale struktur kan se sådan ud:
<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/
Indholdet af inputbiblioteket <extension
> bestemmer,
hvilke filer der bliver installeret på brugerens computer.
De sidste input til installationsscriptet er id- og versionsstrenge for
udvidelsens funktion, f.eks. "com.example.wiley.anvil
"
og "1.0.0
". Strengene har en speciel betydning for installationsprogrammet, og vises i fil- og
biblioteksnavne og i indholdet af de markeringsfiler, der oprettes på installationstidspunktet.
Et installationsprogram til en udvidelse ligner på mange måder et installationsprogram til et produkt. Forskellene er beskrevet nedenfor:
Installationsprogrammet fungerer på standardmåden på installationstidspunktet:
Hvis den placering, der er angivet i trin 5, er <install
>,
kopierer installationsprogrammet alle filerne i biblioteket <extension>
til
<install
> i trin 11.
Inputfil | Installeret fil |
<extension>/* |
<install>/* |
I trin 7 kan et hvilket som helst Eclipse-produkt være kandidat. Et Eclipse-baseret produkt genkendes
ved tilstedeværelsen af filen <produktinstallation>/eclipse/.eclipseproduct
. Brugeren
skal have mulighed for at anmode om en begrænset søgning på disken efter installerede produkter (en knap
til "søgning efter installerede produkter") eller for at navigere til
et bibliotek, som indeholder et produkt (f.eks. en "Gennemse"-knap).
Installationsprogrammet skal udføre kompatibilitetskontrol i trin 8 ved enkel mønstermatch med
underbiblioteker i biblioteket <produktinstallation>/eclipse/features
.
Tilstedeværelsen af en folder, som svarer til "org.eclipse.jdt_2.*
",
betyder f.eks., at JDT er inkluderet i det installerede produkt.
Den markeringsfil, der blev oprettet i trin 10, hedder <install>/eclipse/.eclipseextension
og
bruges til at markere et bibliotek, hvor en Eclipse-baseret udvidelse er installeret. Det er primært for at sikre, at installationsprogrammer
til udvidelser kan finde biblioteket på samme måde som
markeringsfilen .eclipseproduct
til et produkt. Markeringsfilen er en java.io.Properties-formatfil
(ISO 8859-1-tegnkodning med
"\"-escape-sekvenser) og indeholder følgende oplysninger, som identificerer
udvidelsen over for brugeren og skelner én
Eclipse-baseret udvidelse fra en anden:
name=Wiley Anvil Enterprise Edition
id=com.example.wiley.anvilfeature
version=1.0.0
Værdierne af egenskaberne "id" og "version" er input til installationsscriptet. Navnet på udvidelsen formodentlig kendt og fastfrosset. Produkter opretter normalt ikke adgang til markeringsfilen. Det er kun installationsprogrammer til produkter og udvidelser, som skriver eller læser filen.
Når alle filer er installeret, indeholder det øverste niveau af installationsbiblioteket følgende filer og underbiblioteker:
<install>/
eclipse/
.eclipseextension
features/
plugins/
Den eneste større forskel i forhold til installationsprogrammet til et produkt er, at installationsprogrammet også opretter linkfiler i andre Eclipse-baserede produkter, som allerede er installeret på brugerens computer. Derved behøver brugeren ikke at tilknytte den nye udvidelse inde fra hvert produkt manuelt ved at bruge opdateringsstyringen til Eclipse.
Den linkfil, der oprettes i trin 14, er
<produktinstallation>/eclipse/links/com.example.wiley.anvilfeature.link
. Det vil sige,
at filen hedder det samme som udvidelsens funktionsbibliotek minus suffikset for versionsnummer.
En linkfil er en
java.io.Properties-formatfil
(ISO 8859-1-tegnkodning med "\"-escape-sekvenser).
Nøglen er "path", og værdien er den absolutte sti til den installerede udvidelse,
<install>
. En indgang kan f.eks. se sådan
ud: "path=C:\\Programmer\\Wiley\\Anvil
".
Installationsprogrammet er
ansvarlig for at konvertere den indbyggede tegnkodning til
Unicode og for at tilføje "\"-escape-sekvenser, hvor det er nødvendigt.
Escape-sekvenser er normalt påkrævet, fordi
<install>
typisk indeholder specialtegn (f.eks.
"\") og kan omfatte biblioteksnavne med tegn, som ikke er latinske tegn.
Produktet læser linkfilerne, når det starter.
Installationsprogrammet har en liste med alle de linkfiler, det opretter, så de kan findes, når
udvidelsen opdateres eller fjernes.
Når udvidelsen skal fjernes, skal programmet til fjernelse af installationen som standard fungere sådan:
install
> og
alle filer i <install
>/eclipse/features
og
<install
>/eclipse/plugins
inklusive de filer, som andre parter end
installationsprogrammet har placeret her. Det kan f.eks. være filer, som er installeret af
opdateringsstyringen til Eclipse.Når en udvidelsen er fjernet, skal alle plugin- og funktionsfiler slettes. Der er ingen vigtige data i disse underbiblioteker, som skal bevares. Det giver brugeren mulighed for at fjerne en udvidelse fuldstændigt, herunder også de opdateringer, som er tilføjet af opdateringsstyringen til Eclipse.
Hvis udvidelsen allerede er installeret på brugerens computer, skal installationsprogrammet tillade, at en serviceopdatering eller en versionsopgradering tilføjes til den installerede udvidelse.
Installationsprogrammet skal fungere på en standardmåde på installationstidspunktet:
I trin 2 kan en installeret udvidelse blive genkendt ved tilstedeværelse af et
"eclipse
"-bibliotek, som indeholder filen
".eclipseextension
".
Biblioteket oven over "eclipse
"-biblioteket er en udvidelses installationsbibliotek, f.eks.
<install>/eclipse/.eclipseextension
.
Oplysningerne i markeringsfilen skal vises, så brugeren kan bekræfte, at det er den
rigtige udvidelse, der opdateres, fordi der kan være flere
Eclipse-baserede udvidelser på brugerens computer.
I trin 7 skal installationsprogrammet ikke slette eller overskrive de filer, der oprindeligt blev
installeret. Det skal kun tilføje filerne for nye versioner af funktioner og plugin og
om muligt omskrive markeringsfilen
<install>/eclipse/.eclipseextension
. Hvis de gamle versioner bevares, har brugeren
mulighed for at fortryde opdateringen.
Ligesom med opgradering af en produktinstallation, er der ingen grund til at
røre ved andre filer i
<install>/eclipse/plugins/com.example.wiley.otherplugin_1.0.0
/, hvis dette
underbibliotek også skal eksistere efter opgraderingen. Hvis nogen af plugin'ens filer skal ændres,
revideres plugin'ens versionsnummer, hvorved filerne til den opgraderede plugin installeres i
et parallelt bibliotek ved navn
<install>/eclipse/plugins/com.example.wiley.otherplugin_1.0.1
/.