如何从终端窗口启动 Wine 中的应用程序

如何从终端窗口启动 Wine 中的应用程序

我在 Linux 服务器上运行 Wine,以便运行一些旧的 Windows 应用程序。

我现在需要编写一个脚本以确保它们正在运行。

是否可以创建到服务器的 ssh 连接并启动应用程序?

例如,如果我在桌面上,请打开终端窗口并运行

wine "Z:\home\user\Desktop\application"

应用程序打开。但是如果我通过 SSH 连接并运行

wine "Z:\home\user\Desktop\application"

我得到:

Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
err:systray:initialize_systray Could not create tray window
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly. 

我想我需要告诉它在哪里启动应用程序而不仅仅是启动它,但不知道如何执行此操作?


附加信息:

我目前正在 Windows PC 上工作,并使用 Putty 连接到 Linux/Wine 服务器。 (我还有 RDP 连接,因此可以看到桌面)。

从长远来看,我将在另一台 Linux 服务器 (MgmtSrv) 上运行该脚本,该服务器将与 Linux/Wine 服务器建立 ssh 连接来管理它。 MgmtSrv 没有安装 Wine,也没有设置 X-Display。

答案1

正如您所猜测的,您需要告诉 Wine 在哪里显示其应用程序。由于你的 Wine 服务器有一个 X 显示器,它可能是:0

DISPLAY=:0 wine ...

应该可以解决问题(假设您的 X 身份验证 cookie 正常;如果不是,您将收到Invalid MIT-MAGIC-COOKIE错误消息)。

答案2

根据您的应用程序类型,您可以采用以下方法:

  • 如果您的应用程序是基于控制台的(没有图形),请使用wineconsole(不是wine)。
  • 如果您安装了 X 服务器,则需要指定DISPLAY变量以指向正确的屏幕。
  • 如果您想通过以下方式运行应用程序X11转发,配置X11Forwarding在你的 SSH 配置中。
  • 如果您想无头运行图形程序,请考虑安装X 虚拟帧缓冲区

答案3

只需以普通用户身份登录即可解决此问题。

问题:

/root *# wine .....

使固定:

/root # exit

解决方案:

/normal_user> ./wine yourappname  OR ./wine64 yourappname

相关内容