Eclipse telepítő írása

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:

Terméktelepítő létrehozási parancsfájl

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>/
  acmeproduct.exe

A telepítő létrehozási parancsfájl harmadik bemeneti adata egy könyvtár, a <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>
  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)

A <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):

  1. figyelmeztetnie kell a felhasználót, hogy lépjen ki minden más programból
  2. be kell mutatnia a telepíteni kívánt terméket
  3. amennyiben szükséges, be kell kérnie a felhasználótól a bejegyzett tulajdonost és a licenckulcsot
  4. meg kell jelenítenie a termék licencmegállapodását és meg kell kérnie a felhasználót, hogy fogadja azt el
  5. javasolnia kell egy helyet a lemezen a telepítéshez (de lehetőséget kell adni a felhasználónak a módosításra)
  6. ellenőriznie kell, hogy a termék vagy kiterjesztés nincs-e már tárolva az adott helyen
  7. meg kell kérnie a felhasználót, hogy hagyja jóvá a telepítés részleteit
  8. hozzon létre egy jelzőfájlt a terméktelepítés gyökerének megjelöléséhez
  9. át kell másolnia a fájlokat a lemezre  (lásd alább)
  10. amennybien szükséges, be kell szúrnia a bejegyzett tulajdonost és licenckulcsot a termék "névjegyébe"
  11. létre kell hoznia egy parancsikont a munkaasztalon a termék végrehajtható fájljára
  12. létre kell hoznia egy megfelelő bejegyzést, amellyel a felhasználó eltávolíthatja a terméket
  13. el kell indítania a termék végrehajtható fájlját az -initialize paraméterrel az első futáskor végrehajtandó feldolgozás elvégzéséhez
  14. fel kell ajánlania a termék kiadási megjegyzéseinek ("readme" fájljának) megjelenítését

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>/
  acmeproduct.exe
  eclipse/
    .eclipseproduct
    eclipse.exe
    startup.jar
    features/
    plugins/
    jre/

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).

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.

Az eltávolítóprogram viselkedése

Eltávolításkor az eltávolító programnak is szabályosan kell viselkednie:

  1. figyelmeztetnie kell a felhasználót, hogy lépjen ki minden más programból, különösen az éppen eltávolítani készült programból
  2. fel kell szólítani a felhasználót, hogy erősítse meg, valóban el kívánja távolítani a terméket
  3. törölni kell minden telepített fájlt az <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 oda
  4. el kell távolítani a munkaasztalról a termék végrehajtható fájljára mutató parancsikont
  5. el kell távolítani az eltávolító program bejegyzéseit
  6. értesíteni kell a felhasználót az el nem távolított fájlokról

A 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.

A telepítőprogram viselkedése, ha a termék már telepítve van

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:

  1. figyelmeztetnie kell a felhasználót, hogy lépjen ki minden más programból, különösen az éppen frissíteni készült programból
  2. ki kell keresnie a frissíteni kívánt telepített programot, ha kell, akár végigkeresve a lemezt a meglévő rendszer után, vagy lehetőséget adva a felhasználónak, hogy kikeresse
  3. meg kell határoznia, hogy a jelen telepítőprogram megfelelő-e a frissítéshez
  4. amennyiben szükséges, be kell kérnie a felhasználótól a bejegyzett tulajdonost és a licenckulcsot
  5. meg kell jelenítenie a termék frissített licencmegállapodását és meg kell kérnie a felhasználót, hogy fogadja azt el
  6. meg kell kérnie a felhasználót, hogy hagyja jóvá a frissítés részleteit
  7. frissítse a fájlokat a lemezen  (lásd alább)
  8. ha szükséges, hozzon létre egy parancsikont a munkaasztalon a termék végrehajtható fájljára
  9. fel kell vennie a módosított vagy frissen felvett fájlokat az eltávolításkor eltávolítandó fájlok listájára
  10. fel kell ajánlania a termék kiadási megjegyzéseinek ("readme" fájljának) megjelenítését

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. 

Másutt telepített JRE csatolása

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 létrehozási parancsfájl

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:

  1. figyelmeztetnie kell a felhasználót, hogy lépjen ki minden más programból
  2. be kell mutatnia a telepíteni kívánt kiterjesztést
  3. amennyiben szükséges, be kell kérnie a felhasználótól a bejegyzett tulajdonost és a licenckulcsot
  4. meg kell jelenítenie a kiterjesztés licencmegállapodását és meg kell kérnie a felhasználót, hogy fogadja azt el
  5. javasolnia kell egy helyet a lemezen a telepítéshez (de lehetőséget kell adni a felhasználónak a módosításra)
  6. ellenőriznie kell, hogy a termék vagy egy másik kiterjesztés nincs-e már tárolva az adott helyen
  7. meg kell kérdeznie a felhasználótól, hogy mely termékek fogják használni ezt a kiterjesztést (lemez végigkeresése; tallózás; esetleg kihagyás)
  8. ha szükséges, meg kell állapítani, hogy a kiterjesztés kompatibilis-e a kiválasztott termékekkel
  9. meg kell kérnie a felhasználót, hogy hagyja jóvá a telepítés részleteit
  10. létre kell hoznia egy jelzőfájlt a kiterjesztéstelepítés gyökerének megjelöléséhez
  11. át kell másolnia a fájlokat a lemezre  (lásd alább)
  12. be kell szúrnia a bejegyzett tulajdonost és licenckulcsot a "névjegybe"
  13. létre kell hoznia egy megfelelő bejegyzést, amellyel a felhasználó eltávolíthatja a kiterjesztést
  14. csatolófájlt kell kiírnia a kijelölt termékek mindegyikébe a kiterjesztés és a termék összekapcsolásához
  15. fel kell ajánlania a kiterjesztés kiadási megjegyzéseinek ("readme" fájljának) megjelenítését

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.

Az eltávolítóprogram viselkedése

Eltávolításkor az eltávolító programnak szabályosan kell viselkednie:

  1. figyelmeztetnie kell a felhasználót, hogy lépjen ki minden más programból, különösen az éppen eltávolítani készült kiterjesztést használó programokból
  2. fel kell szólítani a felhasználót, hogy erősítse meg, valóban el kívánja távolítani a kiterjesztést
  3. törölni kell minden telepített fájlt az <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 oda
  4. amennyiben szükséges, el kell távolítani a csatolófájlt azokból a termékekből, ahová fel lett véve  
  5. el kell távolítani az eltávolító program bejegyzéseit
  6. értesíteni kell a felhasználót az el nem távolított fájlokról

Egy 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.

A telepítőprogram viselkedése, ha a kiterjesztés már telepítve van

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:

  1. figyelmeztetnie kell a felhasználót, hogy lépjen ki minden más programból, különösen az éppen frissíteni készült kiterjesztést használó programokból
  2. ki kell keresnie a frissíteni kívánt telepített kiterjesztést, ha kell, akár végigkeresve a lemezt a meglévő kiterjesztés után, vagy lehetőséget adva a felhasználónak, hogy kikeresse
  3. meg kell határoznia, hogy a jelen telepítőprogram megfelelő-e a frissítéshez
  4. amennyiben szükséges, be kell kérnie a felhasználótól a bejegyzett tulajdonost és a licenckulcsot
  5. meg kell jelenítenie a termék frissített licencmegállapodását és meg kell kérnie a felhasználót, hogy fogadja azt el
  6. meg kell kérnie a felhasználót, hogy hagyja jóvá a frissítés részleteit
  7. frissítse a fájlokat a lemezen  (lásd alább)
  8. fel kell vennie a módosított vagy frissen felvett fájlokat az eltávolításkor eltávolítandó fájlok listájára
  9. fel kell ajánlania a kiterjesztés kiadási megjegyzéseinek ("readme" fájljának) megjelenítését

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.