2015-01-20 7 views
11

Vogliamo aggiornare l'ambiente JDK su più macchine, tutte le finestre in esecuzione, ma diverse versioni (sia XP o 7)Installazione JDK 8 e JRE 8 in silenzio su una macchina Windows tramite riga di comando

A tal fine, ho' Sto creando uno script che eseguirà automaticamente il programma di installazione corretto (32/64 bit). Ho provato eseguendo il programma di installazione con il seguente comando:

jdk-8u25-windows-x64.exe /s ADDLOCAL="ToolsFeature,SourceFeature,PublicjreFeature"

Questo funziona bene su una macchina senza JDK/JRE 8 installato. Tuttavia, io sono in esecuzione in alcuni problemi:

  • Se JDK/JRE 8 è già installato, il programma di installazione disinstalla sia JDK & JRE invece di limitarsi a non fare nulla (o ri-installazione)
  • Se un riavvio è richiesto che venga eseguito forzatamente automaticamente, e ho bisogno di evitarlo poiché ci sono altre azioni che devo eseguire nello script al termine dell'installazione.
  • non c'è alcun file modalità/registro dettagliato per indicare ciò che il programma di installazione è in realtà facendo

Ho guardato queste fonti:

ma sembrano carenti e molto confusi su ciò che mi darà il risultato desiderato.

+0

ciò che sta distribuirlo come/in una cartella e regolare le variabili ambientali? – PeterMmm

+0

È sicuro distribuire Java in questo modo su una macchina Windows? Il programma di installazione non imposta anche valori di registro diversi che potrebbero essere necessari per alcuni programmi? – dagandlerx

+0

dipende dal tuo caso d'uso. Utilizzi il plug-in Java Browser? Non si dovrebbe e se obbligatorio questo probabilmente non funzionerà. Stai eseguendo .jar con doppio clic? Forse questa soluzione non funzionerà. Non sono sicuro di cosa accadrà, se crei una versione * agnostica * dell'installazione iniziale (specifica C: \ java come cartella di installazione) e copia semplicemente le nuove versioni in quella cartella. – PeterMmm

risposta

7

vorrei affrontare JDK e JRE separatamente:

Il JDK non dipende da voci di registro o qualsiasi altra cosa l'exe installatore fa. Quindi installare il JDK - senza pubblico JRE - su un solo un macchina utilizzando

jdk-8u25-windows-x64.exe /s ADDLOCAL="ToolsFeature,SourceFeature" 

Poi si può semplicemente comprimere l'installazione risultante, copiare e decomprimerlo ad altre macchine dello stesso tipo di sistema operativo.

Il JRE installer (download separato da Oracle) può essere eseguito con le opzioni e file di configurazione, come documentato qui: http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_installer_options.html

assumendo la configurazione si trova nella stessa directory del exe di installazione, l'opzione INSTALLCFG="%cd%\jre-install-options.cfg" può essere Usato. In caso contrario, è richiesto un percorso completo per il file di configurazione (INSTALLCFG = "c: \ percorso \ a \ jre-install-options.cfg"). Quindi, qualcosa di simile (con file di log e supponendo che il file di configurazione si trova nella stessa directory del exe):

jre-8-windows-i586.exe INSTALLCFG="%cd%\jre-install-options.cfg" /s /L C:\TMP\jre-install.log 

Sembra che i seguenti JRE-installazione-opzioni.txt potrebbe funzionare per voi:

opzioni del file
INSTALL_SILENT=Enable 
REBOOT=Disable 
STATIC=Enable 

La configurazione sono elencate qui: http://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html

Il significato dell'ultima riga è spiegato qui: http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_installer_options.html#static_installation

+1

Un percorso relativo per INSTALLCFG non ha funzionato per me. Vedi la mia domanda [SuperUser] (http://superuser.com/questions/970540/cannot-install-java-silently) –

+0

Cosa farà il programma di installazione se Java è già installato? Disinstallerà Java e lo reinstallerà o lo disinstallerà solo? E in quest'ultimo caso indicherà cosa ha fatto, preferibilmente non attraverso il log? Il riavvio sarà effettivamente necessario prima che Java sia utilizzabile? – Septagram

+0

So che questo è un post piuttosto vecchio, ma il file di configurazione ha il flag [REMOVEOUTFDATEJRES] (https://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html#table_config_file_options) che rimuovi le vecchie versioni di JRE. Impostando questo a zero potresti darti quello che ti serve. – DynaWeb

0

Per JRE un'installazione invisibile:

start /wait msiexec /i "%~ java8.40x64.msi " JU=0 JAVAUPDATE=0 AUTOUPDATECHECK=0 RebootYesNo=No WEB_JAVA=1 /q

È possibile visualizzare il post completo here.

+1

Funziona per 'exe' invece di' msi'? – Septagram

0

Sembra che ci siano continui cambiamenti alle opzioni della riga di comando supportate. Per l'ultimo aggiornamento 131, ho dovuto abbandonare tutte le opzioni di stile msiexec perché nessuna di esse funzionava. Ho usato la documentazione per la versione java che ho scaricato per costruire gli switch nell'installer. Come mostrato nelle risposte precedenti, le opzioni del file di configurazione possono essere passate al programma di installazione sulla riga di comando. Il comando finale che ho usato nel Packer installare Java su un server ami Win2016 era:

Start-Process 'C:\Windows\Temp\jre-8u131-windows-x64.exe' ` 
    -ArgumentList 'INSTALL_SILENT=Enable REBOOT=Disable SPONSORS=Disable' ` 
    -Wait -PassThru 

Questo comando aggiunge anche Java al percorso di sistema di default, ma non in quella che viene installato. Aprire una nuova shell di PowerShell e sarà nel percorso per quel guscio (Ispezionare con $env.path)

Fonti di verità:

http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_installer_options.html http://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html#table_config_file_options