17

在我的开发机器上,我总是必须安装 Java 6Java 7,并且出于测试目的,我必须同时安装 32 位和 64 位版本的每个 JDK。由于 Java 更新的频率似乎越来越荒谬(现在每周两次?)每次更新都需要我卸载然后重新安装4 个JDK。所以这真的很烦人,因此我想编写整个过程的脚本。

我的问题是,默认情况下,每个 JDK 版本都安装到包含更新号的目录路径中(默认:“C:\Program Files\Java\jdk1.6.0_<update-nr>\”)。为了让我不必适应大量的构建脚本,我总是手动从安装路径中删除尾随“_<update-nr>”,并始终安装到相同的“C:\Program Files\Java\jdk1.6.0”或“C:\Program Files\Java\jdk1.7.0”,分别用于 64 位版本和 C:\Program Files (x86)\Java\jdk1.6.0" 或 "C:\Program Files (x86) \Java\jdk1.7.0",分别用于 32 位版本。

当我发现如何为 JRE 安装程序(即 Java 运行时)指定安装目录时:

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

我还没有找到类似的描述如何为 JDK 安装程序指定安装目录。

有谁知道是否以及如何指定 JDK 安装程序的安装路径,以便可以将静默 JDK 安装定向到特定的安装目录?

4

8 回答 8

13

我可以使用以下命令成功安装 x64 和 x86 版本的 JDK 8 更新 60,包括公共 JRE:

这里带有源代码的 JDK 1.8.60 (x86) 将C:\Java\x86\jdk1.8.0_60和 JRE 将C:\Java\x86\jre1.8.0_60

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

以类似的方式,带有源代码的 JDK 1.8.60 (x64) 将转到,C:\Java\x64\jdk1.8.0_60而 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

请参见 Oracle JRE 安装程序选项

于 2015-08-26T11:19:20.567 回答
3

我刚刚在搜索时发现了这篇文章……它为 INSTALLDIR 指定了一个参数。

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"

不幸的是,我已经在我的开发机器上安装了,所以我无法测试......

于 2013-04-26T18:23:05.867 回答
2

避免在脚本中重写目录的一种方法是使用符号链接(NTFS 上的连接)。首先,从此处的 SysInternals 下载连接实用程序: http ://technet.microsoft.com/en-us/sysinternals/bb896768.aspx 然后解压缩,复制到 PATH 上的某个目录,然后运行一次以接受许可证。

然后您可以轻松创建符号链接: 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"

要删除一些符号链接: junction -d "C:\Program Files\Java\jdk1.6.0"

您也可以使用 mklink ( http://technet.microsoft.com/en-us/library/cc753194.aspx ) 代替(和 del 删除),但我更喜欢连接的简单和清晰。

于 2014-07-17T07:56:13.313 回答
1

这是适用于 JDK_7u55 的方式。我也选择安装 JRE:

PowerShell 命令

$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

希望这可以帮助!

于 2015-02-25T20:18:14.177 回答
1

试试:jdk-7u2-windows-i586.exe /s INSTALLDIR=\"C:\Program Files\JAVA\JDK\"

于 2013-06-19T21:41:48.893 回答
1

我刚刚在 JDK7 安装程序中发现了一个回归,导致它忽略INSTALLDIR. 最后一个正确的版本是更新 21。

我已经提交了一份错误报告,一旦 Oracle 回复,我会通知您。

更新:事实证明这是由损坏(不完整)的 JDK 安装引起的。一旦我卸载了这个版本(添加/删除程序),新的安装运行得很好。

于 2013-09-16T20:54:08.077 回答
0

编辑 - 更简单的方法

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

适用于 7u45 和 7u60

旧答案

该 exe 包含 msi 安装程序。提取是(当然还有更优雅的方法,但我只知道这个)

  1. 手动运行 exe - 您只需要第一次执行,即可将其转换为 msi
  2. 从 C:\Users\AppData\LocalLow\Sun\Java\jdx.xy\jdk.xyzmsi 获取 msi(和所有 other.cab 文件)
  3. msiexec /i jdkx.y.z.msi /passive INSTALLDIR:c:\pippo
于 2014-07-02T09:07:25.777 回答
0

文件 jreinstall.bat(例如:桌面存储)(将 jre 替换为 jdk)

@echo off
start /w %UserProfile%\Desktop\jre-8u65-windows-x64.exe /s
setx JAVA_HOME "C:\Program Files\Java\jre1.8.0_65"
exit
于 2019-01-16T17:06:07.637 回答