gpt4 book ai didi

java - 与 Chef 一起拆除包装

转载 作者:行者123 更新时间:2023-12-01 11:15:52 26 4
gpt4 key购买 nike

你能告诉我,是否可以使用Chefwindows_package删除Java JDK包,或者我必须执行命令静默卸载?第一个选择会更好。

我已经尝试过这种方法:

windows_package node['name']['JDK1.6'] do
action :remove
end

甚至添加了选项installer_type :custom,仍然出现此错误:

FATAL: Mixlib::ShellOut::ShellCommandFailed: windows_package[Java(TM) SE Development Kit 6 Update 35] (line 4) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0, 42, 127], but received '1603'
---- Begin output of MsiExec.exe /I{32A3A4F4-B792-11D6-A78A-00B0D0160350} /qn ----
STDOUT:
STDERR:
---- End output of MsiExec.exe /I{32A3A4F4-B792-11D6-A78A-00B0D0160350} /qn ----
Ran MsiExec.exe /I{32A3A4F4-B792-11D6-A78A-00B0D0160350} /qn returned 1603

好吧,我没主意了。上official Opscode site我找到了这个信息:

:remove:删除包。由于许多应用程序卸载程序不支持完全静默/安静模式,因此删除操作完全是偶然的。

但据我所知,JDK支持静默卸载。

那么 - 我应该如何执行此操作才能正确卸载软件包?这可能吗?

非常感谢您的每一个帮助。

<小时/>

规范:

  • Chef 12.4.1
  • Windows 7
  • Java JDK 版本:6u35、7u79、8u45
<小时/>

如果您需要更多信息,请随时询问。

最佳答案

好吧,我已经完成了自己的实现。对于那些也需要这个的人:

# variable 'code' is for JDK version code from registry.
# Uninstall comand: MsiExec.exe /quiet /X[CODE]
# Codes are in regkey HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. Be aware to check key for JDK, not JRE!

remove_command = "MsiExec.exe /quiet /X#{code}"

execute "Remove JDK from system" do
command remove_command
returns [0,1605] # 1605 for non-existing product error
end

例如,对于 JDK 1.6.35(有问题中提到的),代码应该是

code = '{32A3A4F4-B792-11D6-A78A-00B0D0160350}'

看来这与 Chef 使用的命令不同:

  • 由 Chef 使用

MsiExec.exe/I{32A3A4F4-B792-11D6-A78A-00B0D0160350}/qn

  • 此命令

MsiExec.exe/quiet/X{32A3A4F4-B792-11D6-A78A-00B0D0160350}

也许有人会发现这很有用。

关于java - 与 Chef 一起拆除包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31826371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com