如何将Java JDK静默安装到Windows上的特定目录中

时间:2013-03-08 11:03:18

标签: java java-7 java-6 silent-installer

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

我的问题是,默认情况下,每个JDK版本都会安装到包含update-number的目录路径中(默认值为:“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安装指向特定的安装目录?

8 个答案:

答案 0 :(得分:13)

我可以使用这些命令成功安装包含公共JRE的x64和x86版本的JDK 8 update 60:

这里带有源代码的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 installer options

答案 1 :(得分: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),但我更喜欢结点的简单性和清晰度。

答案 2 :(得分:1)

我在搜索时发现了这篇文章......它为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"

我很遗憾已经在我的开发机器上安装了,所以我无法测试......

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

我已提交错误报告,并会在Oracle回复后通知您。

UPDATE :事实证明这是由于JDK安装损坏(不完整)造成的。卸载此版本(添加/删除程序)后,新安装运行正常。

答案 5 :(得分: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

希望这有帮助!

答案 6 :(得分:0)

编辑 - 更简单的方法

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

适用于7u45和7u60

OLD回答

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

  1. 手动运行exe - 您只需要第一次执行此操作,将其转换为msi
  2. 从C:\ Users \ AppData \ LocalLow \ Sun \ Java \ jdx.x.y \ jdk.x.y.z.msi
  3. 抓取msi(和所有other.cab文件)
  4. 运行msiexec /i jdkx.y.z.msi /passive INSTALLDIR:c:\pippo

答案 7 :(得分: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