在没有用户交互的情况下使用 wine

ntd*_*ntd 3 wine

我想从 shell 脚本运行 Windows 可执行文件(控制台应用程序)。这个脚本是一个自动构建包的更大项目的一部分,所以我需要避免用户交互。

其实我用的是这样的:

export WINEARCH=win64
export WINEPREFIX=/somewhere/$WINEARCH
wine pgen.exe
Run Code Online (Sandbox Code Playgroud)

它基本上有效,但有以下问题:

  1. 如果WINEPREFIX为空(这是第一次运行的情况),则会出现一个对话框,显示等待配置。我想避免依赖于运行的 X 服务器。
  2. 如果之前未安装,wine则会显示一个窗口,要求安装 Gecko 并需要用户干预。
  3. WINEPREFIX 需要由调用wine的用户拥有,所以我不知道如何提供一个系统范围的包装器来运行上述应用程序。

除了后一个问题(我可以没有),其他问题正在阻止。最后我只想运行一个控制台应用程序。

Ste*_*itt 5

如果您wine使用空运行$DISPLAY,它将跳过显示任何对话框并在没有用户交互的情况下运行:

DISPLAY= wine pgen.exe
Run Code Online (Sandbox Code Playgroud)

为了避免前缀所有权问题,我通常指向WINEPREFIX一个临时目录,以便每次都重新创建前缀(但这很慢)。