无法通过cygwin/ssh在Windows上安装Java JDK

无法通过cygwin/ssh在Windows上安装Java JDK,windows,ssh,cygwin,java,Windows,Ssh,Cygwin,Java,出于测试目的,我正在自动创建已配置的EC2机器。创建/配置是通过ssh连接完成的(不同操作系统的逻辑相同)。在windows(Windows2003Server)上,有预先配置了ssh的cygwin,因此我可以在那里使用ssh 作为配置的一部分,我需要安装给定版本的JavaSDK。我将exe安装程序(jdk-6u34-windows-i586.exe)上载到计算机,并使用/s参数(静默安装)运行它。当我从windows控制台(在远程桌面上)或者甚至通过远程桌面上的cygwin运行这个程序时,它工

出于测试目的,我正在自动创建已配置的EC2机器。创建/配置是通过ssh连接完成的(不同操作系统的逻辑相同)。在windows(Windows2003Server)上,有预先配置了ssh的cygwin,因此我可以在那里使用ssh

作为配置的一部分,我需要安装给定版本的JavaSDK。我将exe安装程序(jdk-6u34-windows-i586.exe)上载到计算机,并使用/s参数(静默安装)运行它。当我从windows控制台(在远程桌面上)或者甚至通过远程桌面上的cygwin运行这个程序时,它工作得非常好。但是当我ssh到那里并通过ssh在cygwin中运行它时,如果失败了

失败似乎很奇怪,因为安装程序将其部分内容提取到
c:\Documents and Settings\Administrator\Application Data\Sun\Java\jdk1.6.0\U 34
中,然后退出代码67,失败。退出前提取的文件数量会有所不同

当使用Java和
Jsch
以编程方式执行此操作时,该命令还会将错误消息
initgroups:Permission denied
打印到错误流中。当我通过ssh手动连接时,我看不到这条消息,所以我不确定它是否相关(在谷歌搜索时,我发现这个错误发生在完全不同的上下文中,这对我没有帮助)


我欢迎任何解释,为什么会发生这种情况(以及如何修复/解决它)。其他关于如何在EC2 windows机器上可靠地自动安装给定JDK的提示也很受欢迎。谢谢

事实证明,Windows中存在一些有意的架构分离(与某些版本),即服务无法访问UI

由于cygwin ssh守护进程作为服务运行,因此它无法进行UI调用或启动基于UI的程序。JDK安装程序是基于用户界面的(即使在静默模式下,它似乎也做了一些类似于用户界面的事情),这被禁止了


当从远程桌面会话运行相同的程序时,一切正常,因为用户界面可以访问。

您是否尝试过不使用
/s
(静默模式)参数?它可能会为您提供更多的信息来调试这个问题。使用SSH作为“跨平台”解决方案对我来说似乎有点奇怪。我建议您尝试一下Ant,或者其他一些(比如python)脚本工具,它们是跨平台的。Cygwin充其量只是一个古怪的东西,甚至说它不能完全替代unix机器上的shell终端。把它当作一个可能会造成更多的麻烦比它的价值。好的观点。如果在没有“/s”的情况下运行,则结果相同。我们不使用ssh/cygwin来编写真正的脚本。这只是一种方法,如何在目标机器上执行一些简单的任务——复制文件、执行某些东西等等。如果我们要使用and或python,我们无论如何都必须以某种方式启动它们。