Questo non è necessariamente il modo migliore , ma potrebbe funzionare per te.
Puoi scrivere un'applicazione bootstrap (come il launcher di World of Warcraft, se hai giocato a WoW). Quel bootstrap è responsabile del controllo degli aggiornamenti.
- Se è disponibile un aggiornamento, lo offrirà all'utente, gestirà il download, l'installazione, ecc.
- Se l'applicazione è aggiornata, consentirà all'utente di avviare l'applicazione
- Facoltativamente, puoi consentire all'utente di avviare l'applicazione, anche se non è aggiornata
In questo modo non devi preoccuparti di forzare l'uscita dalla tua applicazione.
Se l'applicazione è basata sul Web ed è importante che disponga di un client aggiornato, è anche possibile eseguire i controlli della versione mentre l'applicazione è in esecuzione. È possibile eseguirle a intervalli, durante la normale comunicazione con il server (alcune o tutte le chiamate) o entrambe.
Per un prodotto su cui ho lavorato di recente, abbiamo eseguito i controlli della versione all'avvio (senza un'app boot strapper, ma prima che apparisse la finestra principale) e durante le chiamate al server. Quando il client non era aggiornato, ci affidavamo all'utente per uscire manualmente, ma proibivamo qualsiasi azione contro il server.
Tieni presente che non so se Java può richiamare il codice dell'interfaccia utente prima di aprire la finestra principale. Stavamo usando C # / WPF.