我想以静默模式(事实上,使用Chef)以指定版本安装JDK。
我的问题是,当我添加INSTALLDIR参数时,Java JDK安装失败。没有它,JDK将安装在默认目录( C:/ Program Files / Java / 或 C:/ Program Files(x86)/ Java / )中。
我正在运行命令
jdk-7u79-windows-i586.exe /s INSTALLDIR="C:/java"
并尝试了
jdk-7u79-windows-i586.exe /s INSTALLDIR:"C:/java"
是什么让Java安装显示弹出窗口,其中包含我可以在MSI安装程序中使用的参数。
C:/ java / 路径是现有目录。
另外,我找到了这个网站: https://docs.oracle.com/javase/7/docs/webnotes/install/windows/jdk-installation-windows.html 您可以在其中找到JDK的指定参数。
我想使用Chef resource windows-package进行此安装
windows_package node['name']['JDK1.8'] do
source node['source']['JDK1.8']
installer_type :custom
action :install
options '/s INSTALLDIR=C:/java2'
end
输出是什么
Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0, 42, 127], but received '1603'
---- Begin output of start "" /wait "D:\install\jdk-7u79-windows-i586.exe" /s INSTALLDIR=C:/java & exit %%ERRORLEVEL%% ----
STDOUT:
STDERR:
---- End output of start "" /wait "D:\install\jdk-7u79-windows-i586.exe" /s INSTALLDIR=C:/java & exit %%ERRORLEVEL%% ----
Ran start "" /wait "D:\install\jdk-7u79-windows-i586.exe" /s INSTALLDIR=C:/java & exit %%ERRORLEVEL%% returned 1603
我应该添加不想安装JRE - 我的目标是安装JDK。
是否有任何简单的方法可以在静默模式下为这些安装程序设置安装路径?
规格:
感谢您的帮助,谢谢。
答案 0 :(得分:2)
好的,我找到了解决这个问题的方法。
而不是使用类似的东西:
options "/s INSTALLDIR=#{node['path']['jdk']}"
我不得不使用这样的东西:
options "/v\"/qn INSTALLDIR=\\\"#{node['path']['JDK1.7'].gsub('/','\\')}\\\"\""
这种方式肯定适用于 JDK 6 和 7 。以下是那些想知道如何做的人的完整示例:
windows_package node['name']['JDK1.7'] do
source node['source']['JDK1.7']
action :install
installer_type :custom
options "/v\"/qn INSTALLDIR=\\\"#{node['path']['JDK1.7'].gsub('/','\\')}\\\"\""
end
JDK 8虽然存在问题 - 使用此行会导致JDK的安装损坏:
JDK 8 正常运行此参数:
options "/s INSTALLDIR=\"#{node['path']['JDK1.8'].gsub('/','\\')}\""
感谢您的所有努力!