我有一个(nsis)安装程序,我在静默模式下运行。我想通过 ssh 运行它,以便我可以针对已安装的代码库自动运行我们的测试套件。不幸的是,当我运行程序时,它只是启动并坐在那里,实际上并没有做任何事情。
我的猜测是,这在某种程度上是由于 Windows 服务(在这种情况下是 ssh)无法与桌面交互。因此,即使安装程序保持沉默,它也会分配一些对象或其他东西并永远阻塞。
如何强制安装程序运行?请注意,它是无声的,不应要求任何用户输入。有没有办法我可以说“在桌面上运行”之类的?
尝试使用Sysinternals 的PsExec。如果您要通过 ssh 在远程计算机上执行它,请确保从桌面运行一次,以便您接受许可条款。
类似的东西PsExec.exe -i -s "full path to program" args
应该可以工作。-i
在桌面上以交互模式运行程序,并-s
在“系统”用户下运行它,这样您就不必输入用户凭据。
我在尝试在我的 64 位 win 7 机器上启动交互式程序时遇到了类似的问题。
打算远程启动程序的机器:Win 8、Ubuntu
机器运行 cygwin sshd:win 7
Cygwin sshd 由“cyg_server”拥有,而不是本地用户,因此我无法选中“允许服务与桌面交互”框(尽管我听说该复选框无论如何都不起作用)。
我以一种非常丑陋的方式解决了这个问题。我使用了 tmux,它现在可以在 cygwin 上使用。在 win7 机器上,我在启动时启动了一个名为“launcher”的 tmux 会话。
后来,当我从另一个盒子 ssh 进入时,我将命令发送到 tmux 会话。tmux 会话是本地用户,因此它将以交互方式启动程序。