PDA

View Full Version : [Java] Come aggiornare il software in remoto...


Fire Fox II
28-04-2013, 17:17
Salve raga

ho creato un piccolo software gestionale che si connette ad un database in remoto...

Il software viene utilizzato in 3 postazioni diverse e c'è il problema che ogni correzioni effettuata, devo aggiornare manualmente poi tali postazioni...

Ci sarebbe un modo per far si che ognuna di esse possa autonomamente aggiornare il software in uso?

mt94
28-04-2013, 19:31
Ciao.

Potresti implementare un servizio (programma) in esecuzione in background che scarica con cadenza un file da un server contenente la versione (esempio version.txt contenente la stringa 1.0) e fa il confronto con la versione attuale del software. In caso fosse diversa, scarica il pacchetto, avverte l'utente dell'aggiornamento, chiude il programma e sostituisce i file.

Altrimenti potresti fare, invece di un programma esterno, un thread che va in esecuzione con il gestionale, che esegue gli stessi controlli

franksisca
29-04-2013, 16:18
credo che debba fare comunque qualcosa di esterno, perchè altrimenti la cancellazione del jar o dei file in uso viene bloccata e potrebbe trovarsi con versioni diverse

mt94
30-04-2013, 08:48
Io di solito creo un eseguibile a parte, cioè il programma fa tutte le verifiche, scarica tutto e controlla l'integrità, poi lancia l'eseguibile, ad esempio ( updater.exe o .jar), e si "uccide da solo" ( nel senso che a volte non basta dargli il comando di chiusura, ma bisogna uccidere il processo in esecuzione), questo updater provvederà a estrarre il pacchetto dell'aggiornamento, leggere un file ini o xml (presente nell'archivio) per individuare tutti i percorsi in cui si andrà ad installare l'aggiornamento (magari vi sono più file del programma, quindi invece di riscaricare l'intero software, aggiorna solo quello che va aggiornato ), una volta concluso l'aggiornamento, riavvia il software.

A volte, quasi mai, l'antivirus o il sistema, bloccano la sostituzione dei file (almeno che non siano ancora in esecuzione o utilizzati da qualche processo -> Windows insegna :muro: ). In caso questo avvenisse, basta aggiungere un eccezione nell'antivirus e/o nel firewall.

Come sempre ho provveduto a dare una risposta chilometrica :mad:

Schematizzando:

Gestionale -> Verifica e Scarica aggiornamento -> Avvia updater -> Si Suicida -> Updater provvede ad installare l'aggiornamento -> Riavvio Gestionale