首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >大厨拆包

大厨拆包
EN

Stack Overflow用户
提问于 2015-08-05 07:44:59
回答 3查看 1.8K关注 0票数 0

请您告诉我,这是否可能是删除Java 包的主厨,使用windows_package,或者我必须执行命令无声卸载?第一个选择是更好的选择。

我试过这样做:

代码语言:javascript
运行
复制
windows_package node['name']['JDK1.6'] do
      action            :remove  
end  

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

代码语言:javascript
运行
复制
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

好吧,我没什么主意了。在官方操作码网站上,我发现了以下信息:

:remove: remove a package. The remove action is completely hit or miss as many application uninstallers do not support a full silent/quiet mode.

但据我所知,JDK支持无声卸载。

那么,为了正确卸载软件包,我应该如何做到这一点?这有可能吗?

非常感谢你的每一次帮助。

Specification:

  • 厨师12.4.1
  • Windows 7
  • Java JDK版本:6u 35,7u79,8u45

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-25 08:10:40

好吧,我最终得到了我自己的实现。对于那些也需要这个的人来说:

代码语言:javascript
运行
复制
# 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 (所提到的)代码应该是

代码语言:javascript
运行
复制
code = '{32A3A4F4-B792-11D6-A78A-00B0D0160350}'

因此,这似乎与厨师使用的命令不同:

  • 厨师使用

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

  • 这个命令

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

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

票数 1
EN

Stack Overflow用户

发布于 2015-08-21 10:35:45

这看起来可能不是厨师的问题。卸载程序由于某种原因而出错。尝试搜索"java 1603“,您会看到一堆帖子,其中一篇显然是1603.xml目前正在调查中的一个bug --尽管听起来可能是安装而不是卸载。

尝试手动删除并调试它,然后一旦您理解它,您就可以主厨它了。

票数 0
EN

Stack Overflow用户

发布于 2016-05-23 06:57:47

我做了一些类似于您的回答,但是它只需要包名,而不需要注册表中的代码。

代码语言:javascript
运行
复制
execute 'uninstall_jdk8u72' do
  command "wmic product where name=\"#{node[:java8u72][:package_name]}\" call uninstall"
end

我是从https://github.com/chef-cookbooks/windows/issues/89那里得到这个想法的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31826371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档