2013-03-08 8 views
12

Auf meiner Entwicklung Maschine installieren Ich muss immer Java 6 und Java 7 installieren, und ich habe jedes JDK in beide installieren, die 32 und 64-Bit-Version zum Testen Zwecke. Da die Häufigkeit von Java-Updates immer lächerlicher wird (zweimal pro Woche?), Muss ich bei jedem Update JDKs ein- und wieder neu installieren. Das wird wirklich sehr nervig und ich möchte diesen ganzen Prozess so gestalten.Wie still Java JDK in ein bestimmtes Verzeichnis auf Windows

Mein Problem ist, dass jeder JDK-Versionen standardmäßig installiert in ein Verzeichnis-Pfad, der die Update-Nummer enthält (Standard: "C: \ Programme \ Java \ jdk1.6.0_ < update-nr > \") . Um zu vermeiden, dass ich viele Build-Skripte anpassen muss, entferne ich immer manuell den folgenden "_ < update-nr >" aus dem Installationspfad und installiere immer in dasselbe "C: \ Programme \ Java \ jdk1.6.0" oder "C: \ Programme \ Java \ jdk1.7.0" bzw. für die 64-Bit-Versionen und in C: \ Programme (x86) \ Java \ jdk1.6.0 "oder" C: \ Programme (x86) \ Java \ jdk1.7.0" , bzw., für die 32-Bit-Versionen

Während ich herausgefunden hat, wie das Installationsverzeichnis für ein JRE-Installationsprogramm angeben (dh des Java-Runtime):..

<jre-installfile>.exe [/s] [INSTALLDIR=<drive>:\<JRE_install_path>] 
    [STATIC=1] [WEB_JAVA=0/1] [WEB_JAVA_SECURITY_LEVEL=VH/H/M/L] 

Ich habe noch keine ähnliche Beschreibung gefunden, wie das Installationsverzeichnis für das JDK-Installationsprogramm anzugeben ist.

Weiß jemand, ob und wie man den Installationspfad für das JDK-Installationsprogramm angeben kann, damit man eine stille JDK-Installation in ein bestimmtes Installationsverzeichnis leiten kann?

+3

* "Auf meiner Entwicklungsmaschine muss ich immer Java 6 und Java 7 installieren und jedes JDK installieren" * Ich würde behaupten, dass Sie sich irren. Warum denkst du *** du brauchst zwei Versionen des SDK? Welchen Nutzen oder welche Fähigkeit bietet es? BTW - lass sigs. außer Fragen - sie sind Lärm. –

+0

@AndrewThompson "* Ich muss jedes JDK sowohl in der 32- als auch in der 64-Bit-Version installieren, ** zu Testzwecken ***" – assylias

+3

@assylias My bad. -- OK. Sie benötigen nicht zwei JDKs, sondern ein JDK (zum Kompilieren) und zwei JREs (zum Testen). –

Antwort

1

Ich habe gerade diesen Artikel während der Suche gefunden ... es gibt einen Parameter für INSTALLDIR an.

http://makeitfaster.wordpress.com/2011/03/25/java-jdk-silent-install-on-windows/

jdk-7u2-windows-i586.exe /s ADDLOCAL="ToolsFeature,SourceFeature" INSTALLDIR="%CD%\jdk7u2" 

Ich hatte leider schon auf meiner Dev-Maschine installiert, so konnte ich nicht testen ...

+0

Ach, das scheint nicht zu funktionieren. Beim Aufruf der Befehlszeile, wie im Artikel beschrieben, bekomme ich immer ein Popup von Windows Installer, das anscheinend versucht, mir beizubringen, dass ich einige Optionen falsch angegeben habe. Die aufgeführten Optionen beziehen sich jedoch auf ein.msi-Datei (die vermutlich in der Datei jdk.exe enthalten ist, aber beim Ausführen des Befehls nicht direkt verfügbar ist). – mmo

1

Versuchen: jdk-7u2-windows-i586.exe/s INSTALLDIR = \ "C: \ Programme \ JAVA \ JDK \"

+0

Das ist der selbe Vorschlag wie oben und - wie ich bereits im Kommentar dazu geschrieben habe - funktioniert es nicht aber es erscheint ein Fehlerdialog des MSI Installers ... – mmo

1

Ich habe gerade eine Regression im JDK7-Installationsprogramm entdeckt, die dazu führt, dass es INSTALLDIR ignoriert. Die letzte korrekte Version ist Update 21.

Ich habe einen Fehlerbericht eingereicht und werde Sie wissen lassen, sobald Oracle antwortet.

UPDATE: Es stellt sich heraus, dass dies durch eine beschädigte (unvollständige) JDK-Installation verursacht wurde. Sobald ich diese Version deinstalliert habe (Programme hinzufügen/entfernen), lief die neue Installation einwandfrei.

+0

Mit Upgrade 7u51 klappt es jetzt auch nicht mehr mit dem JRE-Installer. Sowohl das JRE- als auch das JDK-Installationsprogramm wird beim Starten über die Befehlszeile mit .exe/s INSTALLDIR = "

" nur einen msi-installer-Fehlerdialog öffnen ... :-( – mmo

+0

' .exe/passiv INSTALLDIR ="

"' funktioniert für mich mit 7u79. – Knyri

0

EDIT - einfacher Weg

Execute jdk-7u60-windows-x64.exe /passive /log install.log INSTALLDIR:c:\pippo

Arbeiten mit 7u45 und 7u60

ALTE Antwort

Die exe enthält die MSI-Installer.So extrahieren wird (sicher, es gibt elegantere Methoden, aber ich kenne nur diese eine)

  1. Führen Sie die exe manuell - Sie müssen es tun, nur das erste Mal, konvertiert es in eine msi
  2. Schnappen die msi (und alle other.cab-Datei) von C: \ Benutzer \ AppData \ LocalLow \ Sun \ Java \ jdx.xy \ jdk.xyzmsi
  3. Lauf msiexec /i jdkx.y.z.msi /passive INSTALLDIR:c:\pippo
1

Ein Ansatz Umschreiben Verzeichnisse in vermeiden Skripte sind die Verwendung von Symlinks (Junctions auf NTFS). Laden Sie zuerst das Verbindungsdienstprogramm von SysInternals hier herunter: http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx dann entpacken Sie, kopieren Sie in ein Verzeichnis auf dem PATH, und führen Sie einmal aus, um die Lizenz zu akzeptieren.

Dann können Sie Symlinks einfach erstellen: junction "C:\Program Files\Java\jdk1.6.0" "C:\Program Files\Java\jdk1.6.0_37" junction "C:\Program Files (x86)\Java\jdk1.6.0" "C:\Program Files (x86)\Java\jdk1.6.0_37"

einige Symlink zu löschen: junction -d "C:\Program Files\Java\jdk1.6.0"

Sie auch mklink verwenden können (http://technet.microsoft.com/en-us/library/cc753194.aspx) statt (und del zur Entfernung), aber ich ziehe die Einfachheit und Klarheit der Kreuzung.

+0

+1 für die Verwendung von Junctions (Analysepunkte) unter Windows. Ich mache das mit meinen Ruby und Python-Versionen und einfache Batch-Dateien für die Versionsverwaltung .. Nicht genug Leute wissen, dass sie auf Windows existieren. – wasatchwizard

0

So funktioniert das für JDK_7u55. Ich entschied sich die JRE auch installiert haben:

Powershell-Befehle

$strJavaInstallExe=<Your JDK executable> 
$strJavaInstallDir=<The directory you want the JDK and JRE to install to> 

$cmdInstallJava=$strJavaInstallExe+' /passive /log "'+$strJavaInstallDir+'\install.log" ADDLOCAL="ToolsFeature,SourceFeature,PublicjreFeature" INSTALLDIR="'+$strJavaInstallDir+'" INSTALLDIRPUBJRE="'+$strJavaInstallDir+'"' 

Invoke-Expression $cmdInstallJava 

hoffe, das hilft!

11

ich erfolgreich sowohl x64 und x86-Versionen von JDK 8 Update 60 einschließlich einer öffentlichen JRE mit diesen Befehlen installieren könnte:

Hier JDK 1.8.60 (x86) mit Quellcode zu C:\Java\x86\jdk1.8.0_60 und JRE C:\Java\x86\jre1.8.0_60 gehen:

jdk-8u60-windows-i586.exe /s ADDLOCAL="ToolsFeature,SourceFeature,PublicjreFeature" INSTALLDIR=C:\Java\x86\jdk1.8.0_60 /INSTALLDIRPUBJRE=C:\Java\x86\jre1.8.0_60 

In ähnlicher Weise JDK 1.8.60 (x64) mit Source-Code wird auf C:\Java\x64\jdk1.8.0_60 und JRE C:\Java\x64\jre1.8.0_60:

jdk-8u60-windows-x64.exe /s ADDLOCAL="ToolsFeature,SourceFeature,PublicjreFeature" INSTALLDIR=C:\Java\x64\jdk1.8.0_60 /INSTALLDIRPUBJRE=C:\Java\x64\jre1.8.0_60 

Siehe Oracle JRE installer options

+1

JDK 8 Automatische Installation http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_jdk_install.html#CHDHHBDD – SimplyInk