Utolsó módosítás: 2004. június 18., péntek, 15:20
Az Eclipse alapú termékeket megfelelő módon telepíteni kell a végfelhasználó számítógépén. A telepítést, frissítést és eltávolítást automatizáló, végrehajtható telepítőprogramok készítéséhez gyakran használnak speciális célú csomagolóeszközöket, mint például az InstallShield vagy az RPM. Az alábbi dokumentum azt mutatja be, hogyen lehet telepítőprogramot készíteni egy Eclipse alapú termékhez, illetve hogyan készíthetők külön telepíthető kiterjesztések Eclipse alapú termékekhez.
Feltételezzük, hogy a termékfejlesztési csoport felelős azon nyers összetevőkért, amelyeknek egybecsomagolt, végrehajtható telepítőként meg kell találniuk az utat a végfelhasználó számítógépére. A végrehajtható telepítőprogramok készítése programozható, csakúgy, mint a telepítéskor végrehajtandó feladatok, amelyek a végfelhasználóval folytatott párbeszédhez és a fájlok a számítógépén elhelyezéséhez szükségesek. Az alábbiakban részletesen leírjuk, mi a feladata egy telepítőproramnak és hogyan kell, hogy működjenek.
A jelen anyagot célszerű receptként tekinteni azon személy számára, aki felelős az Eclipse alapú termékek telepítőprogramjának írásáért. Két okból is javasoljuk, hogy minden telepítőprogram-író kövesse a mi előírásainkat:
A terméktelepítő önálló kell, hogy legyen - olyan valami, ami terjeszthető egy CD-n és a megfelelő operációs rendszerrel rendelkező gépeken gond nélkül telepíthető.
Az Eclipse igényeli a Java2 Java futási környezet (JRE) meglétét a Java-kód futtatásához. A JRE-k engedélyköteles szoftverek, amelyek a Java-gyártóktól szerezhetők be. Ha rendelkezik a JRE továbbterjesztéséhez engedéllyel a JRE gyártójától, akkor egy cég mellékelheti a JRE-t a termékéhez és telepítheti a végfelhasználó számítógépére a termékkel egyszerre. Az alternatíva az, hogy megköveteljük a JRE előre telepítését a végfelhasználó számítógépén, és telepítéskor azt már csak összerendeljük a termékkel. Akárhogy is, az Eclipse alapú termékek működéséhez szükség van egy megfelelő JRE-e, és a terméktelepítő szerepet kell, hogy játsszon vagy egy JRE telepítésében, vagy egy már meglévő JRE kikeresésében és a hozzá kapcsolódásban.
Tegyük fel, hogy a JRE a termékkel együtt kerül telepítésre. A JRE-t
tartalmazó könyvtár a telepítőt létrehozó parancsfájl egyik bemeneti
adata. Jelölje ezt a könyvtárat a <JRE>. A könyvtár egy
szabványos JRE könyvtárstruktúrával kell, hogy rendelkezzen, amelyben a
Java végrehajtható fájl a jre/bin/java.exe
könyvtárban, az
osztálykönyvtár pedig a <JRE> könyvtár alatt található
jre/lib/rt.jar
könyvtárban van.
A hivatkozás érdekében a könyvtár váza így néz ki:
<JRE>/
jre/
bin/
java.exe
lib/
rt.jar
A könyvtárakban további alkönyvtárak is találhatók; mi most csak egy példát mutattunk az általános felépítésre. A dőlt betűs nevek termékspecifikusak.
A telepítő létrehozási parancsfájl második bemeneti adata egy
könyvtár, a <product head
>,
amely a termékspecifikus végrehajtható indítófájlt tartalmazza, illetve
egyéb, az Eclipse-hez nem tartozó fájlokat. A hivatkozás érdekében a könyvtár váza valahogy így néz ki (a dőlt betűk
termékről termékre változó fájlneveket jelölnek):
<product head>/
A telepítő létrehozási parancsfájl harmadik bemeneti adata egy könyvtár, a
<
acmeproduct.exe
product body
>, amely a termék szolgáltatásait
és a hozzá készült bedolgozókat tartalmazza. A hivatkozás
érdekében a könyvtár váza így néz ki:
<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
A telepítő létrehozási parancsfájl negyedik bemeneti adata egy
könyvtár, a <platform
>, amely az Eclipse
platform szolgáltatásait és a hozzá készült bedolgozókat, illetve a külső
fejlesztésű eszközöket tartalmazza.
Ez a könyvtár tartalmazza az Eclipse normál indítóprogramját, az
eclipse.exe
programot (UNIX működési környezetekben
eclipse
a neve), a hozzá tartozó startup.jar
fájlt, valamint minden olyan egyéb Eclipse platform fájlt, amelynek a
rendszer főkönyvtárában kell lennie. A hivatkozás
érdekében a könyvtár váza így néz ki:
<platform>
A <
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/
(további org.eclipse.* bedolgozókönyvtárak)
JRE
>, a <product
head
>, a <product body
>, és a
<platform
> bemeneti könyvtárak pontos tartalma
határozza meg, hogy végül mi is kerül telepítésre a végfelhasználó
számítógépére.
A telepítő létrehozási parancsfájl utolsó bemeneti adatai pedig a
termék fő szolgáltatásának azonosító (id) és verzió (version)
karaktersorozatai: pl. "com.example.acme.acmefeature"
,
és "1.0.0
"; valamint a termék végrehajtható
fájljának a neve, például e.g., "acmeproduct
.exe
".
Olyan termékek esetében, amelyek nem igényelnek saját
végrehajtható fájlt, ez a helye az Eclipse szabványos
végrehajtható fájljának ("eclipse/eclipse.exe
").
E karaktersorozatok speciális jelentéssel bírnak a telepítőprogram
számára, megjelennek fájl- és könyvtárnevekben, valamint a telepítéskor
létrehozott jelzőfájlok tartalmában.
Telepítéskor a telepítőprogramnak normál módon kell viselkednie (további részletek az egyes lépések leírásánál találhatók):
Ha az 5. pontban megadott hely az <install
>,
akkor a telepítőprogram átmásolja a <JRE
>,
<platform>,
<product
>,
ás <product plug-ins>
könyvtárak összes fájlját
az <install
> könyvtárba .
Bemeneti fájl | Telepített fájl |
<JRE>/* |
<install>/eclipse/* |
<product head>/* |
<install>/* |
<product body>/* |
<install>/* |
<platform>/* |
<install>/* |
A 8. lépésben létrehozott jelzőfájl, az
<install>/eclipse/.eclipseproduct
szolgál egy
könyvtár megjelölésére, amelybe egy Eclipse alapú termék lett telepítve,
elsősorban a kiterjesztéstelepítők számára, hogy könnyebben megtalálják
őket. Ez a jelzőfájl egy
java.io.Properties
formátumú fájl (ISO 8859-1 kódolású, "\" szekvenciákkal), és az
alábbi információkat tartalmazza, amelyek azonosítják a terméket a
felhasználók számára és megkülönböztetik az egyik Eclipse alapú terméket a
másiktól:
name=Acme Visual Tools Pro
id=com.example.acme.acmefeature
version=1.0.0
Az "id" és "version" tulajdonságok értékei a telepítő létrehozási parancsfájl bemeneti adatai; a termék neve feltehetőleg ismert és rögzített. (A termékek normális esetben nem nyúlnak ehhez a jelzőfájlhoz; kizárólag a termék- és kiterjesztéstelepítők írják és olvassák.)
A 6. lépéshez ellenőrizni kell egy meglévő <install>/eclipse/.eclipseproduct
vagy <install>/eclipse/.eclipseextension
fájl
meglétét. A termékek nem telepíthetők pontosan ugyanarra a helyre, mint
egy másik termék vagy kiterjesztés.
Az összes fájl telepítése után a telepítési könyvtár legfelső szintű struktúrája az alábbi fájlokat és alkönyvtárakat tartalmazza (és persze esetleg másokat is):
<install>/
Ha egy terméktelepítő licencinformációkat kér a felhasználótól
(például a bejegyzett tulajdonos nevét és a licenckulcsot), akkor ezeket
az információkat be kell írni a termék "névjegy"
párbeszédablakába (10. lépés).
acmeproduct.exe
eclipse/
.eclipseproduct
eclipse.exe
startup.jar
features/
plugins/
jre/
Ez jellemzően úgy történik, hogy a felhasználó válaszait rögzítjük az
elsődleges szolgáltatás bedolgozójának
"about.mapping
" fájljában. Például az
<install>/plugins/com.example.acme.acmefeature_1.0.0/about.mapping
fájlban.
Az "about.mapping
" lehet, hogy már létezik a <product head
>
helyen, de az is lehet, hogy a telepítőprogramnak kell létrehoznia
telepítéskor.
A kulcsok számok; az "n" kulcs értéke
helyettesítésre kerül az "{n}
"
rész-karaktersorozattal az
"aboutText
" tulajdonságban.
Ha például egy licenckulcs a 0. számú mező volt, akkor létre kell hozni
egy "about.mapping
" fájlt egy, a következőhöz
hasonló sorral: "0=T42-24T-ME4U-U4ME
".
N.B.
Az "about.mapping
" fájl egy a
java.io.Properties
formátumú fájl (ISO 8859-1 karakterkódolás "\" szekvenciákkal).
Ha telepítéskor a natív karakterkódolás nem ISO 8859-1, akkor a telepítő
feladata, hogy a natív karaktereket átkódolja Unicode-ra és felvegye a
"\" szekvenciákat, ahol szükséges. A szekvenciák
használata kötelező, ha a karaktersorozatot speciális
(például "\") karaktereket, vagy nem latinbetűs karaktereket
tartalmaznak. Ha például az 1. számú mező a görög ábécé első három betűjét
tartalmazza, azt így kell írni:"1=\u03B1\u03B2\u03B3
".
A 12. lépésben a terméktelepítő elindítja a termék végrehajtható
fájlját,
(az <install>/acmeproduct.exe
), a
speciális -initialize paraméterrel (ennek pontos részletei
megadandók). Ennek hatására az Eclipse platform csendben elvégez minden
olyan időigényes feladatot, amelyre az első indításkor szükség van, és
eltárolja az eredményeket, hogy amikor a felhasználó elindítja a terméket,
az gyorsan, használható állapotban induljon.
Eltávolításkor az eltávolító programnak is szabályosan kell viselkednie:
install
> könyvtárból, és minden fájlt az
<install
>/eclipse/features
és az <install
>/eclipse/plugins
könyvtárakból, beleértve azokat is, amelyeket nem ez a telepítőprogram
(hanem például az Eclipse frissítéskezelő) tett odaA termék eltávolításakor a telepítéskor elhelyezett fájlokat törölni
kell, nemkülönben a frissített szolgáltatásokat és az Eclipse
frissítéskezelő által létrehozott bedolgozókat. Fontos: Eltávolításkor lehet, hogy más könyvtárak és fájlok is
léteznek az <install>
könyvtárban, jellemzően az
<install>/eclipse/workspace/
, az
<install>/eclipse/links/
és az
<install>/eclipse/configuration/
könyvtárak,
amelyek fontos, a termék eltávolítása után is megőrzésre érdemes adatokat
tartalmaznak. A felhasználónak képesnek kell lennie eltávolítania, majd
újratelepítenie a terméket anélkül, hogy elveszítené ezeket a fontos
adatokat.
Ha a termék már telepítve van a felhasználó számítógépén, akkor a telepítőrprogramnak lehetővé kell tennie egy szerviz-, vagy verziófrissítést a meglévő állapothoz képest.
Telepítéskor a telepítőprogramnak szabályosan kell viselkednie:
A 2. lépésben a telepített termék azonnal felismerhető egy
"eclipse
" könyvtár meglétéről, amelyben rögtön
található egy ".eclipseproduct
" nevű fájl.
Az "eclipse
" könyvtár szülője a termék telepítési
könyvtára, például
<install>/eclipse/.eclipseproduct
.
A jelzőfájlban található információkat meg kell jeleníteni a felhasználó
számára, hogy az megerősíthesse, hogy valóban a megfelelő termék
frissítése történik (a felhasználó gépén többféle, Eclipse alapú termék is
létezhet).
A 3. lépésben a telepítőprogramnak kompatibilitási vizsgálatokat kell
végeznie, az <install>/eclipse/features
könyvtár
alkönyvtáraira vonatkozó egyszerű mintaillesztéssel. Például egy "com.example.acme.otherfeature_1.0.1
"
nevű könyvtár megléte garantálja, hogy egy bizonyos szervizfrissítés
már megtörtént a telepített terméken.
A 7. lépésben a telepítőprogram törölheti vagy kicserélheti az
eredetileg telepített fájlok egy részét, illetve vehet fel új fájlokat. Fontos: Számos fájl, így például az
<install>/eclipse/workspace/
és az
<install>/eclipse/configuration
lehet egy helyen
a telepített rendszerrel és tartalmazhat fontos, a termék frissítése után
meőrizendő adatokat.
Frissítési helyzetekben nagy a valószínűsége, hogy az <install>/eclipse/plugins/
könyvtár alatti adatok nagy része ugyanaz (és hasonló a helyzet
az <install>/eclipse/features/
könyvtárral).
Komoly esély van az optimalizálásra az <install>/eclipse/plugins/
könyvtárban, mivel az alkönyvtár neve, amely beágyazza a bedolgozó
(vagy töredék) nevét, csak akkor változik meg, ha az alatta lévő fáljok
megváltoznak. Más szavakkal, nem kell hozzányúlni az
<install>/eclipse/plugins/org.eclipse.ui_2.0.0
/
alatti fájlokhoz, ha ennek a könyvtárnak a frissítés után is léteznie
kell; ha a a bedolgozó fájljainak változniuk kell, akkor a bedolgozó
verziószáma is megváltozik, így a frissített bedolgozó egy párhuzamos, de
másik nevű könyvtárba (mondjuk az
<install>/eclipse/plugins/org.eclipse.ui_2.0.1
/
könyvtárba) kerül.
A JRE meglétét a rendszer az
<install>/eclipse/jre/bin/javaw.exe
könyvtárban
várja el.
Ha másutt van, akkor a parancssorban a -vm
paraméterrel meg kell adni a teljes elérési utat, például: -vm
C:\j2jre1.3.0\jre\bin\javaw.exe
.
Ebben az esetben a telepítőprogramnak is ki kell ezzel a paraméterrel
egészíenie az asztali parancsikon parancssorát.
Kiterjesztés alatt szolgáltatások (és a bedolgozók, amelyekhez rendelhetők) egy külön telepíthető halmazát értjük, amelyek ugyanazon számítógépen telepített egy vagy több Eclipse alapú termékből kerülnek használatra. Szemben a termékekkel, a kiterjesztések nem önállóak: egy kiterjesztés nem tartalmaz végrehajtható termékfájlt, sem az Eclipse platformot, sem JRE-t.
Az általánosság korlátozása nélkül tegyük fel, hogy a kiterjesztés
mindössze egyetlen szolgáltatásból áll. A telepítő létrehozási parancsfájl első bemeneti adata egy könyvtár, az
<extension
>, amely a szolgáltatást és a
bedolgozókat tartalmazza. Feltesszük, hogy a kiterjesztésben nincsenek az Eclipse-szel kapcsolatos
fájlok; ha lennének, akkor azok az <extension>/
könyvtárba kerülnének, nem pedig az
<extension>/eclipse/
könyvtárba. A hivatkozás
érdekében a könyvtár váza így néz ki:
<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/
Az <extension
> bemeneti könyvtár pontos tartalma
határozza meg, hogy végül mi is kerül telepítésre a végfelhasználó
számítógépére.
A telepítő létrehozási parancsfájl utolsó bemeneti adatai pedig a
termék fő szolgáltatásának azonosító (id) és verzió (version)
karaktersorozatai: pl. "com.example.wiley.anvil
"
and "1.0.0
". E karaktersorozatok speciális jelentéssel bírnak a telepítőprogram
számára, megjelennek fájl- és könyvtárnevekben, valamint a telepítéskor
létrehozott jelzőfájlok tartalmában.
A kiterjesztés telepítőprogramja a legtöbb jellemzőjében hasonlít a terméktelepítőkre. Alább az eltéréseket kiemeljük:
Telepítéskor a telepítőprogramnak szabályosan kell viselkednie:
Ha az 5. pontban megadott hely az <install
>,
akkor a telepítőprogram a 11. lépésben átmásolja az
<extension>
könyvtárat az
<install
> könyvtárba.
Bemeneti fájl | Telepített fájl |
<extension>/* |
<install>/* |
A 7. lépés alanya bármelyik Eclipse-termék lehet. Az Eclipse alapú
termékeket a <product
install>/eclipse/.eclipseproduct
fájl meglétéről lehet
felismerni; a felhasználó kérheti a lemez korlátozott végigkeresését a
telepített termékek után (egy "telepített termékek keresése"
gomb), vagy maga is kikeresheti a terméket tartalmazó könyvtárat (például
egy "tallózás" gombbal).
A 8. lépésben a telepítőprogramnak kompatibilitási vizsgálatokat kell
végeznie, az <product install>/eclipse/features
könyvtár alkönyvtáraira vonatkozó egyszerű mintaillesztéssel. Például egy
"org.eclipse.jdt_2.*
" nevű könyvtár megléte
garantálja, hogy a JDT része a telepített terméknek.
A 10. lépésben létrehozott jelzőfájl, az
<install>/eclipse/.eclipseextension
szolgál egy
könyvtár megjelölésére, amelybe egy Eclipse alapú kiterjesztés lett
telepítve, elsősorban a kiterjesztéstelepítők számára (hasonlóan a
termékek .eclipseproduct
jelzőfájljához). Ez a jelzőfájl egy
java.io.Properties
formátumú fájl (ISO 8859-1 kódolású, "\" szekvenciákkal), és az
alábbi információkat tartalmazza, amelyek azonosítják a kiterjesztést a
felhasználók számára és megkülönböztetik az egyik Eclipse alapú terméket a
másiktól:
name=Wiley Anvil Enterprise Edition
id=com.example.wiley.anvilfeature
version=1.0.0
Az "id" és "version" tulajdonságok értékei a telepítő létrehozási parancsfájl bemeneti adatai; a kiterjesztés neve feltehetőleg ismert és rögzített. (A termékek normális esetben nem nyúlnak ehhez a jelzőfájlhoz; kizárólag a termék- és kiterjesztéstelepítők írják és olvassák.)
Az összes fájl telepítése után a telepítési könyvtár legfelső szintű struktúrája az alábbi fájlokat és alkönyvtárakat tartalmazza:
<install>/
eclipse/
.eclipseextension
features/
plugins/
Az egyetlen lényeges eltérés a terméktelepítőkhöz képest, hogy egy kiterjesztéstelepítő csatolási fájlokat is létrehoz a felhasználó számítógépén telepített Eclipse alapú termékekhez. (Ezzel megspórolja a felhasználó számára, hogy kézzel kelljen az új kiterjesztést az egyes termékekhez rendelnie az Eclipse frissítéskezelővel.)
A 14. lépésben létrehozott csatolófájl a <product
install>/eclipse/links/com.example.wiley.anvilfeature.link
;
vagyis a fájl neve ugyanaz, mint a kiterjesztés szolgáltatásának a
könyvtáráé, mínusz a verziószám. A csatolófájl egy
java.io.Properties
formátumú fájl (ISO 8859-1 karakterkódolás "\" szekvenciákkal).
A kulcs a "path", az érték a telepített kiterjesztés abszolút
elérési útja, <install>
; azaz például egy
bejegyzés valahogy így nézhet ki: "path=C:\\Program
Files\\Wiley\\Anvil
".
A telepítő feladata, hogy
a natív karaktereket átkódolja Unicode-ra és felvegye a "\"
szekvenciákat, ahol szükséges. A szekvenciákra szükség van, mivel az
<install>
könyvtár jellemzően tartalmaz
speciális karaktereket (pl. "\"), és hivatkozhat olyan
könyvtárakra, amelyek nemcsak az angol ábécé betűit tartalmazzák a
nevükben. A termék a csatolófájlokat induláskor olvassa ki. A telepítő nyilvántartja a létrehozott csatolófájlokat, így azok
kikereshetők a kiterjesztés frissítésekor vagy eltávolításakor.
Eltávolításkor az eltávolító programnak szabályosan kell viselkednie:
install
> könyvtárból, és minden fájlt az
<install
>/eclipse/features
és az <install
>/eclipse/plugins
könyvtárakból, beleértve azokat is, amelyeket nem ez a telepítőprogram
(hanem például az Eclipse frissítéskezelő) tett odaEgy kiterjesztés eltávolításakor a bedolgozó és a szolgáltatások összes fájlját törölni kell; ezekben az alkönyvtárakban semmilyen fontos, megőrzendő adat nem található. Ez lehetővé teszi, hogy a felhasználó teljesen eltávolítsa a kiterjesztést, beleértve az Eclipse frissítéskezelő által végrehajtott frissítéseket is.
Ha a kiterjesztés már telepítve van a felhasználó számítógépén, akkor a telepítőrprogramnak lehetővé kell tennie egy szerviz-, vagy verziófrissítést a meglévő állapothoz képest.
Telepítéskor a telepítőprogramnak szabályosan kell viselkednie:
A 2. lépésben a telepített kiterjesztésazonnal felismerhető egy
"eclipse
" könyvtár meglétéről, amelyben rögtön
található egy ".eclipseextension
" nevű fájl.
Az "eclipse
" könyvtár szülője a
kiterjesztés telepítési könyvtára, például
<install>/eclipse/.eclipseextension
.
A jelzőfájlban található információkat meg kell jeleníteni a felhasználó
számára, hogy az megerősíthesse, hogy valóban a megfelelő kiterjesztés
frissítése történik (a felhasználó gépén többféle, Eclipse alapú
kiterjesztés is létezhet).
A 7. lépésben a telepítőprogramnak nem szabad törölnie vagy felüliírnia
az általa eredetileg telepített fájlokat; ehelyett inkább fel kell vennie a
szolgáltatások és a bedolgozó új verzióinak fájljait és inkább átírnia az
<install>/eclipse/.eclipseextension
jelzőfájlt. A régi verziók helyben hagyása lehetőséget ad a
felhasználó számára a visszalépésre a frissítésből. Hasonlóan a
terméktelepítéshez, nem kell hozzányúlni az
<install>/eclipse/plugins/com.example.wiley.otherplugin_1.0.0
/
alatti fájlokhoz, ha ennek a könyvtárnak a frissítés után is léteznie
kell; ha a a bedolgozó fájljainak változniuk kell, akkor a bedolgozó
verziószáma is megváltozik, így a frissített bedolgozó egy párhuzamos, de
másik nevű könyvtárba (mondjuk az
<install>/eclipse/plugins/com.example.wiley.otherplugin_1.0.1
/
könyvtárba) kerül.