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 creazione pacchetti specialistici, quali InstallShield 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 elementi di base che 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 trasferire i file sui computer degli utenti. Questa nota descrive in dettaglio le operazioni richieste da questi programmi di installazione e il loro funzionamento.
La nota deve essere considerata come una indicazione indirizzata alla persona responsabile della scrittura di un programma di installazione per prodotti basati su Eclipse. Esistono due buoni motivi per cui si consiglia a coloro che scrivono programmi di installazione di attenersi alle seguenti indicazioni:
Il programma di installazione di un prodotto deve essere indipendente, 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. JRE è un 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. In 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 JRE debba essere installato con il prodotto. La directory contenente il JRE rappresenta un input per lo script di creazione del programma di installazione. Indichiamo
questa directory con <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 del 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 dovrebbe avere 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 directory dovrebbe avere 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 stringhe 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 passi):
Se il percorso specificato nel passo 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 al punto 8, <install>/eclipse/.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 passo 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" (passo 10).
acmeproduct.exe
eclipse/
.eclipseproduct
eclipse.exe
startup.jar
features/
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 passo 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 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 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 passo 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 passo 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 passo 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 coesistere
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 sottodirectory, che incorpora il numero di versione del plug-in (o 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 sottodirectory 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 comandi -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 comandi 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 è indipendente 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 directory dovrebbe avere 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 il percorso specificato al passo 5 è <install
>,
il programma di installazione copia tutti i file della directory <extension>
in <install
>, al passo 11.
File di input | File installato |
<extension>/* |
<install>/* |
Per quanto concerne il passo 7, qualsiasi prodotto Eclipse può essere un candidato. Il
prodotto basato su Eclipse può essere riconosciuto dalla presenza 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 passo 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 passo 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 aggiornamenti di Eclipse.
Il file di collegamento creato al passo 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 legge 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 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 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 passo 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 passo 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 sottodirectory 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
/.