在我的开发机器上,我总是需要安装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安装指向特定的安装目录?
答案 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安装程序。提取是(肯定有更优雅的方法,但我只知道这个)
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