5

Ho bisogno di costruire un programma di installazione che effettua le seguenti operazioni:installazione JAR che rileva automaticamente se Java è lì e avvia automaticamente l'applicazione

  1. Installa mio vaso sul client.
  2. Rileva automaticamente se JRE è installato (nel qual caso non viene reinstallato), altrimenti lo installa senza che l'utente faccia clic su un altro pulsante.
  3. Avvia automaticamente l'applicazione all'avvio del client.
  4. Funziona su Windows, Mac e Linux.

Qualche idea su come procedere?

risposta

1

Strumenti commerciali come InstallAnywhere possono farlo. Dopo aver installato JAR (e collegamenti e simili), i programmi di installazione possono controllare il registro se Java è già installato e procedere o meno. Finché l'installer supporta tutte le piattaforme necessarie, stai bene.

0

Non ho sentito nulla di ciò che funziona su tutte quelle piattaforme, ma JSmooth potrebbe aiutare (soddisfa le tue esigenze su Windows). L'ho usato circa 2 anni fa e ha funzionato bene.

+0

Ciao abyx .. Ho bisogno del tuo aiuto in JSmooth .. Puoi aiutarmi? – Venky

+0

@Venkatesh - Sono passati 4 anni dall'ultima volta che l'ho usato e non posso dire di ricordare nulla ... Mi spiace :) – abyx

6

Se uno strumento commerciale è ok, posso consigliare install4j. 1, 2 e 4 sono facili da fare con esso, ma circa 3 non sono sicuro. Modifica: Probabilmente è possibile ottenere ciò installando l'app come "servizio", che install4j supporta per tutte le piattaforme. Citando dalla sua pagina di Features:

install4j offre pieno supporto per generazione e servizi di installazione (demoni). Per i servizi, install4j genera gli eseguibili del servizio su Windows, elementi di avvio su Mac OS X e avvia/arresta script su piattaforme Unix/Linux .

Edit: Per quanto riguarda # 2, JRE rilevamento: install4 ha abbastanza belle, opzioni flessibili per JRE bundling/rilevazione. Puoi includere un JRE (staticamente o dinamicamente, condiviso o meno) o preferire l'uso di uno già presente, con la possibilità di scaricare un JRE dall'interno del tuo programma di installazione come riserva. Controlla questi documenti per ulteriori informazioni: How Installers Find a JRE e JRE Bundles.

(More about my experiences with install4j.)

Per gli altri strumenti, è possibile controllare alcune delle precedenti Java installer domande su SO:

+0

Notando la risposta di Peter, a proposito, vorrei * sicuramente * consigliare di scegliere install4j su InstallAnywhere, che è troppo caro e goffo. Abbiamo sostituito InstallAnywhere con install4j; vedi il link "Ulteriori informazioni sulle mie esperienze" qui sopra. – Jonik

1

È potrebbe usare launch4j, tuttavia, non installa automaticamente java. Ma forse c'è un modo per farlo funzionare confezionando il JRE ad esempio.

1

Si potrebbe anche voler dare un'occhiata a BitRock InstallBuilder, fornisce funzionalità integrate per eseguire ciò che si desidera. Saremo lieti di creare un programma di installazione di esempio per te, lasciaci una linea.

1

Si consiglia di scaricare il codice sorgente per gli script di compilazione di programmi Java popolari come limewire e seguire il loro esempio. Fine.

... Oppure si può fare come ho fatto io:

  • ho fatto la rilevazione JRE e scaricare/installare di ridistribuibile, se richiesto con NSIS su Windows. Forse un .msi è meglio di un installer.exe che NSIS crea. Credo che i msi siano più come pacchetti su mac, quindi consentono aggiornamenti appropriati. Forse NSIS crea MSI ... non è sicuro.
  • Mac è semplicemente un Java App fascio e si specifica il JRE e altre informazioni Java nel info.plist e si può opzionalmente creare un file di .pkg per dare all'utente un programma di installazione e di impacchettare in un dmg utilizzando il programmi da riga di comando dmg.
  • non ho fatto Linux e non avete intenzione di ... scusate :)

Tutto questo è stato un bel pezzo di lavoro. Prima ho fatto le cose di Windows, poi un paio di anni dopo ho fatto il Mac.

È possibile integrare tutto questo negli script di build NSIS e Ant. Non riesco a ricordare perché non ho usato install4j. Probabilmente ero troppo economico :)