繁体   English   中英

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

[英]How to silently install Java JDK into a specific directory on windows

在我的开发机器上,我总是需要安装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安装指向特定的安装目录?

我可以使用以下命令成功安装包含公共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安装程序选项

避免在脚本中重写目录的一种方法是使用符号链接(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),但我更喜欢结点的简单性和清晰度。

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

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

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

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

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

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

这是适用于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

希望这可以帮助!

编辑 - 更简单的方法

执行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.yzmsi /passive INSTALLDIR:c:\\pippo

file jreinstall.bat(例如:桌面存储)(替换jdk的jre)

@echo off
start /w %UserProfile%\Desktop\jre-8u65-windows-x64.exe /s
setx JAVA_HOME "C:\Program Files\Java\jre1.8.0_65"
exit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM