Ultima modifica lunedì 6 maggio 2002 ore 11:15
I prodotti basati su Eclipse devono essere correttamente installati sul computer dell'utente. Gli strumenti di compressione specialistici, qualiInstallShield e RPM, vengono spesso utilizzati per creare programmi di installazione eseguibili che automatizzano l'installazione, l'aggiornamento e la disinstallazione. Questa nota descrive come scrivere un programma di installazione per un prodotto basato su Eclipse e per estensioni installabili separatamente nei prodotti basati su Eclipse.
Si presuppone che il team di sviluppo di un prodotto abbia la responsabilità di fornire gli ingredienti di base necessari dovranno poi essere indirizzati ai computer degli utenti come programmi di installazione eseguibili. La creazione di programmi di installazione eseguibili si avvale di script, come anche le azioni in fase di installazione necessarie per interagire con l'utente finale e i file di deposito sui computer. Questa nota descrive in dettaglio cosa devono essere in grado di fare questi programmi di installazione e come devono funzionare.
La nota deve essere considerata come una ricetta indirizzata alla persona responsabile della scrittura di un programma di installazione di un prodotto basato su Eclipse. Esistono due buoni motivi per cui si consiglia a coloro che scrivono programmi di installazione di attenersi alla ricetta:
Il programma di installazione di un prodotto deve essere autocontenuto, deve essere in altre parole distribuibile su un CD e installabile su qualsiasi computer che abbia un sistema operativo adeguato.
Eclipse richiede un JRE (Java Runtime Environment) Java2 per poter eseguire codice Java. I JRE sono software concesso in licenza, ottenuto dai fornitori Java. Con una licenza per la ridistribuzione di un JRE ottenuto da un fornitore JRE, un'azienda può includere il JRE con il suo prodotto e installarlo sul computer dell'utente finale insieme al prodotto in questione. L'alternativa consiste nel richiedere che sia già presente un JRE sul computer dell'utente finale e che venga associato al prodotto in fase di installazione. Il un modo o nell'altro, un prodotto basato su Eclipse richiede un JRE adeguato e il programma di installazione del prodotto deve avere un ruolo nell'installazione del JRE o nell'individuazione e il collegamento al JRE preesistente.
Si presupponga che il JRE debba essere installato con il prodotto. La directory contenente il JRE rappresenta un input per lo script di creazione del programma di installazione. Denotare questa directory
<JRE>. La directory deve avere una struttura di directory JRE standard,
con l'eseguibile Java in jre/bin/java.exe
e la librerie delle classi in jre/lib/rt.jar
al di sotto della directory <JRE>.
Per riferimento, la struttura di questa directory ha il seguente aspetto:
<JRE>/
jre/
bin/
java.exe
lib/
rt.jar
In queste directory esistono dei file (e delle sottodirectory) aggiuntivi; quello riportato è solo un esempio di struttura generale. I nomi in corsivo sono specifici di prodotto.
Il secondo input per lo script di creazione del programma di installazione è una directory, <product head
>,
che contiene l'utilità di avvio dell'eseguibile specifico del prodotto ed eventuali file non collegati a Eclipse. Per riferimento, la struttura di questa
directory avrebbe il seguente aspetto (il corsivo indica i nomi dei file che variano da prodotto a prodotto):
<product head>/
Il terzo input per lo script di creazione del programma di installazione è una directory, <
acmeproduct.exe
product body
>,
contenente le funzioni e i plug-in sviluppati per il prodotto. Per riferimento, la struttura di questa directory avrebbe il seguente aspetto:
<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
Il quarto input per lo script di creazione del programma di installazione è una directory, <platform
>,
contenente le funzioni e i plug-in per la piattaforma Eclipse stessa ed eventuali strumenti di terze parti inclusi.
Questa directory include anche l'utilità di avvio standard dell'eseguibile Eclipse, eclipse.exe
,
(denominata eclipse
nell'ambiente operativo Unix), il file ad essa associato startup.jar
e tutti gli altri file della piattaforma Eclipse che devono trovarsi nella directory principale dell'installazione. Per riferimento, la struttura di questa ha il seguente aspetto:
<platform>
Il contenuto esatto delle directory di input <
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/
(altre directory di plug-in org.eclipse.*)
JRE
>, <product
head
>, <product body
>
e <platform
> determina quali file saranno installati sul computer dell'utente finale.
Gli input finali per lo script di creazione del programma di installazione sono le stringe di ID e versione relative alla funzione principale del prodotto (ad esempio, "com.example.acme.acmefeature"
,
e "1.0.0
")
e il nome dell'eseguibile del prodotto (ad esempio, "acmeproduct
.exe
").
Per i prodotti che non richiedono eseguibili propri, tale nome corrisponde al percorso dell'utilità di avvio standard dell'eseguibile Eclipse, "eclipse/eclipse.exe
".
Queste stringhe hanno un significato speciale per il programma di installazione, essendo presenti nei nomi di file e directory e nel contenuto dei file degli indicatori creati in fase di installazione.
In fase di installazione, il programma di installazione deve comportarsi in modo standard (ulteriori dettagli saranno forniti al termine dell'elenco dei passaggi):
Se la posizione specificata nel passaggio 5 è <install
>,
il programma di installazione copia tutti i file delle directory <JRE
>, <platform>,
<product
>
e <product plug-ins>
in <install
>.
File di input | File installato |
<JRE>/* |
<install>/eclipse/* |
<product head>/* |
<install>/* |
<product body>/* |
<install>/* |
<platform>/* |
<install>/* |
Il file degli indicatori creato nel passaggio 8, <install>/
.eclipseproduct
viene utilizzato per contrassegnare una directory in cui è stato installato il prodotto basato su Eclipse, allo scopo di consentire ai programmi di installazione delle estensioni di individuare il prodotto. Questo file degli indicatori è di formato java.io.Properties
(codifica di caratteri ISO 8859-1 con carattere di escape "\") e contiene
le seguenti informazioni che identificano il prodotto per l'utente e distinguono il prodotto basato su
Eclipse da un altro prodotto:
name=Acme Visual Tools Pro
id=com.example.acme.acmefeature
version=1.0.0
I valori della proprietà "id" e "version" sono input per lo script di creazione del programma di installazione; il nome del prodotto è presumibilmente noto e incluso nel codice. I prodotti in genere non possono accedere a questo file degli indicatori; solo i programmi di installazione di prodotti ed estensioni possono accedervi in lettura o scrittura.
Il passaggio 6 richiede la verifica dell'esistenza di un file <install>/eclipse/.eclipseproduct
o <install>/eclipse/.eclipseextension
. Un prodotto non può essere installato nella stessa posizione di un altro prodotto o estensione.
Dopo l'installazione di tutti i file, la struttura di livello superiore della directory di installazione conterrà i seguenti file e sottodirectory (e probabilmente anche altri file):
<install>/
Se il programma di installazione di un prodotto richiede all'utente le informazioni sulla licenza, ad esempio il nome del proprietario registrato e il numero di serie del prodotto, tali informazioni devono essere inserite nella finestra di dialogo
"informazioni su" (passaggio 10).
acmeproduct.exe
eclipse/
.eclipseproduct
eclipse.exe
startup.jar
funzioni/
plugins/
jre/
A questo scopo occorre registrare le risposte dell'utente nel file "about.mapping
"
del plug-in della funzione principale. Ad esempio, in <install>/plugins/com.example.acme.acmefeature_1.0.0/about.mapping
.
Il file "about.mapping
" può preesistere nell'input <product head
>
o deve essere creato dal programma di installazione al momento dell'installazione.
Le chiavi sono numeri; il valore della chiave "n" viene sostituito dalla sottostringa "{n}
" nella proprietà "aboutText
".
Ad esempio, se il numero di serie di un prodotto corrispondeva al campo numero 0, deve essere creato un file "about.mapping
"
con una riga del tipo "0=T42-24T-ME4U-U4ME
".
N.B.
Il file "about.mapping
" è di formato java.io.Properties
(codifica di caratteri ISO 8859-1 con carattere di escape "\").
Quando la codifica di caratteri nativa in fase di installazione è diversa dalla ISO 8859-1, il programma di installazione è responsabile della conversione della codifica di caratteri nativa in Unicode e dell'aggiunta di caratteri di escape "\" dove necessario. I caratteri di escape sono necessari quando le stringhe contengono caratteri speciali (ad esempio "\") o non latini. Ad esempio, il campo numero 1 contenente le prime tre lettere dell'alfabeto greco sarà scritto come "1=\u03B1\u03B2\u03B3
".
Al passaggio 12, il programma di installazione del prodotto avvia l'eseguibile del prodotto, <install>/acmeproduct.exe
,
con l'opzione speciale -initialize [dettagli esatti TBD]. Questo fa sì che la piattaforma Eclipse esegua in maniera invisibile all'utente tutte le attività di elaborazione iniziali che richiedono molto tempo e memorizzi i risultati nella cache, in modo che, quando l'utente avvia il prodotto,
questo possa essere utilizzato immediatamente.
In fase di disinstallazione, il programma di disinstallazione deve comportarsi in modo standard:
install
> e tutti i file presenti in <install
>/eclipse/features
e <install
>/eclipse/plugins
, inclusi quelli inseriti da componenti diversi dal programma di installazione in questione (ad esempio, dal gestore degli aggiornamenti di Eclipse)Quando il prodotto viene disinstallato, i file depositati in fase di installazione devono essere eliminati, insieme alle funzioni e ai plug-in aggiornati creati dal gestore degli aggiornamenti
di Eclipse. Importante: in fase di disinstallazione, nella directory <install>
potrebbero essere presenti altri file e directory, in particolare <install>/eclipse/workspace/
,
<install>/eclipse/links/
e <install>/eclipse/platform.cfg
,
contenenti dati importanti che devono essere conservati quando il prodotto viene disinstallato. L'utente deve essere in grado di disinstallare e reinstallare un prodotto nella stessa posizione senza perdere dati importanti.
Quando il prodotto è già installato sul computer dell'utente, il programma di installazione deve consentire l'applicazione dell'aggiornamento di un servizio o di una versione al prodotto installato.
In fase di installazione, il programma di installazione deve comportarsi in modo standard:
Nel passaggio 2, un prodotto installato può essere riconosciuto dalla presenza di una directory "eclipse
"
che contiene un file denominato ".eclipseproduct
".
La directory principale della directory "eclipse
" è la directory di installazione di un prodotto; cioè <install>/eclipse/.eclipseproduct
.
Le informazioni contenute in questo file degli indicatori devono essere visualizzate per consentire all'utente di confermare che si sta per aggiornare il prodotto corretto (potrebbero esistere diversi prodotti su base Eclipse nel computer dell'utente).
Il programma di installazione deve eseguire controlli di compatibilità nel passaggio 3, semplicemente facendo corrispondere gli schemi a fronte delle sottodirectory nella directory <install>/eclipse/features
. Ad esempio, la presenza di una corrispondenza della cartella "com.example.acme.otherfeature_1.0.1
"
garantirebbe che l'aggiornamento di un determinato servizio sia stato applicato al prodotto installato.
Per quanto concerne il passaggio 7, il programma di installazione potrebbe eliminare o sostituire tutti i file originariamente installati
e aggiungere altri file. Importante: diversi file e directory, come
<install>/eclipse/workspace/
, <install>/eclipse/platform.cfg
,
potrebbero coesiste con l'installazione e contenere file di dati importanti che devono essere conservati quando il prodotto viene aggiornato.
Nelle situazioni di aggiornamento, esiste una possibilità elevata che la maggior parte dei file al di sotto di <install>/eclipse/plugins/
siano identici (come per <install>/eclipse/features/
).
Esiste un'opportunità significativa di ottimizzazione in <install>/eclipse/plugins/
dal momento che il nome della subdirectory, che incorpora il numero di versione del plug-in (or del frammento), cambia se e solo se uno dei file al di sotto della directory cambia. Il altre parole, non c'è bisogno di modificare alcun file in <install>/eclipse/plugins/org.eclipse.ui_2.0.0
/
se questa subdirectory deve continuare ad esistere dopo l'aggiornamento; se uno dei file del plug-in deve essere modificato, il numero di versione del plug-in viene modificato, facendo sì che i file del plug-in aggiornato siano installati in una directory parallela, <install>/eclipse/plugins/org.eclipse.ui_2.0.1
/.
Si noti anche che l'eseguibile del prodotto non deve essere avviato con l'opzione -initialize nel caso di reinstallazione, poiché in questo modo si perderebbero dati di configurazione importanti.
Il JRE dovrebbe trovarsi in <install>/eclipse/jre/bin/javaw.exe
.
Se si trova altrove, è necessario specificare il percorso assoluto utilizzando l'opzione della riga di comando -vm
; ad esempio, -vm C:\j2jre1.3.0\jre\bin\javaw.exe
.
In questo caso, il programma di installazione deve aggiungere questa opzione alla riga di comando del collegamento sul desktop creato
Per estensione si intende un insieme di funzioni installabile e i relativi plug-in, che possono essere associati e utilizzati da uno o più prodotti su base Eclipse installati sullo stesso computer. A differenza di un prodotto, un'estensione non è autocontenuta e non include un eseguibile di prodotto, la piattaforma Eclipse e un JRE.
Si presupponga che un'estensione sia costituita da una sola funzione. Il primo input per lo script di creazione del programma di installazione è una directory, <extension
>,
contenente la funzione e i plug-in. Si presupponga che un'estensione non abbia file correlati a Eclipse; in caso contrario, essi si troverebbero in <extension>/
,
e non in <extension>/eclipse/
. Per riferimento, la struttura di questa ha il seguente aspetto:
<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/
Il contenuto esatto della directory di input <extension
> determina quali file saranno installati sul computer dell'utente.
Gli input finali per lo script di creazione del programma di installazione sono le stringhe ID e versione della funzione dell'estensione; ad esempio "com.example.wiley.anvil
"
e "1.0.0
". Queste stringhe hanno un significato speciale per il programma di installazione, essendo presenti nei nomi di file e directory e nel contenuto dei file degli indicatori creati in fase di installazione.
Il programma di installazione di un'estensione è simile al programma di installazione di un prodotto. Di seguito sono evidenziate le aree per cui i due programmi differiscono:
In fase di installazione, il programma di installazione si comporta in modo standard, deve infatti:
Se la posizione specificata al passaggio 5 è <install
>,
il programma di installazione copia tutti i file della directory <extension>
in <install
>, al passaggio 11.
File di input | File installato |
<extension>/* |
<install>/* |
Per quanto concerne il passaggio 7, qualsiasi prodotto Eclipse può essere un candidato. Il prodotto basato su Eclipse può essere riconosciuto dalla presenta di un file <product install>/eclipse/.eclipseproduct
; l'utente deve essere in grado di richiedere una ricerca limitata sul disco per individuare i prodotti installati (pulsante "ricerca prodotti installati") o di passare a una
directory contenente un prodotto (pulsante "sfoglia").
Il programma di installazione deve eseguire i controlli di compatibilità al passaggio 8, semplicemente mettendo in corrispondenza gli schemi a fronte di sottodirectory della directory <product install>/eclipse/features
. Ad esempio, la presenta di una corrispondenza della cartella "org.eclipse.jdt_2.*
"
significa che il JDT è incluso nel prodotto installato.
Il file degli indicatori creato al passaggio 10 <install>/eclipse/.eclipseextension
viene utilizzato per contrassegnare una directory in cui è stata installata un'estensione basata su Eclipse, allo scopo di consentire ai programmi di installazione delle estensioni di individuare l'estensione (in modo analogo al file degli indicatori di un prodotto .eclipseproduct
). Questo file degli indicatori è in formato java.io.Properties
(codifica di caratteri ISO 8859-1 con carattere di escape "\") e contiene le seguenti informazioni che identificano l'estensione e distinguono un'estensione basata su Eclipse da un'altra estensione:
name=Wiley Anvil Enterprise Edition
id=com.example.wiley.anvilfeature
version=1.0.0
I valori della proprietà "id" e "version" sono input per lo script di creazione del programma di installazione; il nome dell'estensione è presumibilmente noto e incluso nel codice. I prodotti in genere non possono accedere a questo file degli indicatori; solo i programmi di installazione di prodotti ed estensioni possono accedervi in lettura o scrittura.
Dopo l'installazione di tutti i file, la struttura di livello superiore della directory di installazione conterrà i seguenti file e sottodirectory:
<install>/
eclipse/
.eclipseextension
features/
plugins/
L'unica differenza significativa rispetto al programma di installazione di un prodotto consiste nel fatto che il programma di installazione di un'estensione crea anche file di collegamento in altri prodotti basati su Eclipse già installati sul computer dell'utente. Questo consente all'utente di non dover associare manualmente la nuova estensione dall'interno di ciascun prodotto, utilizzando il gestore degli aggiornamenti di Eclipse.
Il file di collegamento creato al passaggio 14 è <product install>/eclipse/links/com.example.wiley.anvilfeature.link
;
in altre parole, il file ha lo stesso nome della directory delle funzioni dell'estensione meno il suffisso del numero di versione. Un file di collegamento è di formato java.io.Properties
(codifica di caratteri ISO 8859-1 con carattere di escape "\").
La chiave è "path" e il valore è il percorso assoluto dell'estensione installata, <install>
; ad esempio, una voce potrebbe avere il seguente aspetto "path=C:\\Programmi\\Wiley\\Anvil
".
Il programma di installazione è responsabile della conversione dalla codifica di caratteri nativa a Unicode e dell'aggiunta dei caratteri di escape "\", dove necessario. L'aggiunta di caratteri di escape è richiesta in genere perché <install>
contiene in genere caratteri speciali (come "\")
e può citare directory i cui nomi prevedono caratteri non latini. Il prodotto leggere i file di collegamento all'avvio. Il programma di installazione conserva un record di ogni file di collegamento creato, in modo che possa essere individuato quando l'estensione viene aggiornata o disinstallata.
In fase di disinstallazione, il programma di disinstallazione deve comportarsi in modo standard:
install
> e tutti i file presenti in <install
>/eclipse/features
e <install
>/eclipse/plugins
, inclusi quelli inseriti da componenti diversi dal programma di installazione in questione (ad esempio, dal gestore degli aggiornamenti di Eclipse)Quando un'estensione viene disinstallata, tutti i file di funzioni e plug-in devono essere eliminati; non esistono file di dati importanti da conservare in queste sottodirectory. Questo consente all'utente di disinstallare un'estensione in modo completo, inclusi gli aggiornamento applicati dal gestore degli aggiornamenti di Eclipse.
Quando l'estensione è già installata sul computer dell'utente, il programma di installazione deve consentire l'applicazione dell'aggiornamento di un servizio o di una versione all'estensione installata.
In fase di installazione, il programma di installazione deve comportarsi in modo standard:
Nel passaggio 2, un'estensione installata può essere riconosciuta dalla presenza di una directory "eclipse
"
che contiene un file denominato ".eclipseextension
".
La directory principale della directory "eclipse
" è la directory di installazione di un'estensione; cioè <install>/eclipse/.eclipseextension
.
Le informazioni contenute in questo file degli indicatori devono essere visualizzate per consentire all'utente di confermare che si sta per aggiornare l'estensione corretta (potrebbero esistere diverse estensioni basate su Eclipse nel computer dell'utente).
Per quanto concerne il passaggio 7, il programma di installazione non deve eliminare o sovrascrivere nessuno dei file originariamente installati; piuttosto deve limitarsi ad aggiungere i file delle nuove versioni delle funzioni e del
plug-in e, possibilmente, riscrivere il file degli indicatori <install>/eclipse/.eclipseextension
. Lasciare le precedenti versioni sul computer offre all'utente la possibilità di tornare indietro. Per quanto riguarda l'aggiornamento dell'installazione di un prodotto, non c'è alcun bisogno di modificare file in <install>/eclipse/plugins/com.example.wiley.otherplugin_1.0.0
/,
se questa subdirectory deve continuare a esistere dopo l'aggiornamento; se uno dei file del plug-in deve essere modificato, il numero di versione del
plug-in viene modificato, facendo sì che i file del
plug-in aggiornato siano installati in una directory parallela <install>/eclipse/plugins/com.example.wiley.otherplugin_1.0.1
/.