PDA

View Full Version : [JAVA] realizzare un updater


blackskop
21-12-2008, 10:40
Ciao. Vorrei realizzare un updater semplice in java. L'updater deve essenzialmente fare questo:

1) Controllare se esiste una versione più recente dell'applicazione.
2) Scaricare l'applicazione.
3) Sostituire l'applicazione corrente con la nuova.

Sembra semplice ma in realtà la cosa è abbastanza complessa, soprattutto per quanto riguarda il punto 3.

Innanzitutto bisogna scegliere se integrare l'updater nell'applicazione o lanciarlo come processo separato.

L'applicazione risiede in un unico file jar.

Scegliamo il caso in cui integriamo l'updater nell'applicazione.

1) Lancio l'applicazione A.
2) Lancio l'updater.
3) Scarico la nuova versione B in una cartella tmp
4) Chiedo all'utente se vuole riavviare subito o meno.

Se l'utente riavvia subito
lancio B
cancello A
copio B nella stessa posizione di A
termino B
lancio A
cancello B

se invece l'utente non riavvia subito
lancio A
chiudo A
lancio B
cancello A
copio B nella stessa posizione di A
termino B
lancio A
cancello B


Secondo voi è un modo corretto di realizzare l'updater?

gugoXX
21-12-2008, 11:34
Io almeno per 2 volte ho usato con successo:
1) Lancio l'applicativo Loader (L'utente lancia sempre solo questo).
2) Il loader controlla se c'e' una versione piu' nuova dell'applicativo vero, che e' un altro eseguibile
3) Se non c'e' una versione piu' nuova vai a 6.
4) Chiede se si vuole effettuare l'aggiornamento. Altrimenti vai a 6.
5) Scarica il nuovo eseguibile in versione temporanea e poi lo sostituisce al vecchio
6) lancia l'eseguibile dell'applicazione e chiude il loader.

blackskop
21-12-2008, 11:46
Grazie, così l'avevo pensato anche io utilizzando però due applicazioni diverse. Nel caso in cui volessi integrare tutto in un'unica applicazione?

gugoXX
21-12-2008, 11:56
Grazie, così l'avevo pensato anche io utilizzando però due applicazioni diverse. Nel caso in cui volessi integrare tutto in un'unica applicazione?

Non saprei. Io pensandoci e leggendo in giro l'ho realizzata con l'applicazione + Loader separati.
Se trovi una soluzione piu' semplice con un'applicazione sola faccelo sapere, ma leggendo su finora mi sembrano salti mortali non giustificabili, che mi sembrano anche poco resistenti nel caso in cui qualcosa durante uno dei vari punti non vada a buon fine.