直接执行POL快捷方式,而不调用POL本身

直接执行POL快捷方式,而不调用POL本身

如何在不实际调用 PlayOnLinux 的情况下直接执行 PlayOnLinux 快捷方式的目标(使用正确的 wine 版本)?

我的问题是,我需要在无头 docker 容器中运行快捷方式。

POL 需要 X 存在,因此我可以通过使用以下方法来规避这个问题:

xvfb-run playonlinux-bash ./path/to/shortcut

但我对这个解决方案不是很满意,因为它很少能干净地关闭...导致出现错误消息...所以我总是要再三检查一切是否正常或者它是否真的崩溃了。

为了澄清起见,假设我们有一个这样的 POL 快捷方式:

#!/usr/bin/env playonlinux-bash
[ "$PLAYONLINUX" = "" ] && exit 0                             <- not needed
source "$PLAYONLINUX/lib/sources"                             <- works without POL
export WINEPREFIX="/home/test/.PlayOnLinux/wineprefix/test"   <- works without POL
export WINEDEBUG=""                                           <- works without POL
cd "/home/test/.PlayOnLinux/wineprefix/test/drive_c"          <- works without POL
POL_Wine text.exe "$@"                                        <- how do I do this 
                                                                 in a normal bash 
                                                                 without POL, using 
                                                                 the wine version 
                                                                 from POL

答案1

虽然仍需打电话,但POL_Wine我设法摆脱了 X 依赖:

深入研究 POL 源代码后(并意识到其中大部分只是一堆 bash 代码),
我得出了以下结论:

#!/bin/bash 

# provide environment variables normally set by playonlinux-bash
PLAYONLINUX="/usr/share/playonlinux"
POL_USER_ROOT="/home/gamer/.PlayOnLinux"
POL_OS="Linux"
export WINEPREFIX="$POL_USER_ROOT/wineprefix/test"
export WINEDEBUG=""

# load POL functions without having to go through playonlinux-bash
source "$PLAYONLINUX/lib/sources"

# mock error reporting to prevent opening of error-windows
POL_Debug_Error() 
{
    echo "[POL] $1"
}

POL_Debug_Message() 
{
    echo "[POL] $1"
}

# finally start the target executable
cd "$WINEPREFIX/drive_c"    
POL_Wine test.exe "$@"

相关内容