Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Il nuovo Deebot X12 OmniCyclone abbina un sistema di raccolta dello sporco senza sacchetto, un rullo di lavaggio esteso e la tecnologia FocusJet per intervenire più efficacemente sulle macchie più persistenti. Un robot completo e preciso che aiuta a tenere puliti i pavimenti di casa con il minimo sforzo
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2 implementa un mocio a nastro che esegue una pulizia dettagliata del pavimento di casa, in abbinamento ad un potente motore di aspirazione della polvere: un prodotto ideale per gestire in autonomia e con grande efficacia le necessità di pulizia dei pavimenti di casa
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-12-2008, 10:40   #1
blackskop
Senior Member
 
Iscritto dal: Aug 2008
Messaggi: 308
[JAVA] realizzare un updater

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?
blackskop è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2008, 11:34   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
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.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2008, 11:46   #3
blackskop
Senior Member
 
Iscritto dal: Aug 2008
Messaggi: 308
Grazie, così l'avevo pensato anche io utilizzando però due applicazioni diverse. Nel caso in cui volessi integrare tutto in un'unica applicazione?
blackskop è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2008, 11:56   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da blackskop Guarda i messaggi
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.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet Ecovacs Deebot X12 OmniCyclone: lava grazie a Fo...
Narwal Flow 2: la pulizia di casa con un mocio a nastro Narwal Flow 2: la pulizia di casa con un mocio a...
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Falsa partenza per l'app della verifica ...
PRAGMATA è un successo: raggiunto...
Privacy, il Garante multa Poste Italiane...
Aramco ribalta il concetto di 'ibrido'. ...
Apple cambia tutto: Tim Cook lascia il t...
Dyson Supersonic Travel: il nuovo asciug...
Huawei punta sul canale europeo: per il ...
Ubuntu 26.04: le GPU guadagnano il 17% i...
La Commissione UE registra l'iniziativa ...
SSD troppo cari? La soluzione alla crisi...
Anteprima mondiale Hyundai IONIQ 3: segm...
Fintool sbarca su Microsoft 365: arrivan...
Hanno chiesto 1 dollaro per salvare un M...
Arriva AgentExchange, il marketplace di ...
Blizzard fa chiudere Turtle WoW: perché ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:46.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v