我有一个需要新版本 Wine 的 MS Windows 应用程序。我已使用 PlayOnLinux 将其本地安装到主文件夹。
我坚持创建简单的 bash/dash/sh 脚本以在其文件夹中启动 .exe 应用程序。我尝试了 standard pushd/popd
, cd && exec
,(cd && exec)
方法,但失败了。
我需要的:
桌面文件作为脚本的启动器
一个脚本:
- 将目录更改为 .exe 应用程序的目录
wine .exe
在应用程序目录中执行
目前,我对以下用于包装脚本的 Python 代码(放置在/usr/local/bin/wine32-wrapper 中)感到满意:
#!/usr/bin/python3
import os
import sys
import subprocess
if len(sys.argv) >= 2:
path = sys.argv[1]
wd = os.path.dirname(path)
exec_path = ["/home/{}/.PlayOnLinux/wine/linux-x86/6.15/bin/wine".format(os.getenv('USER'), path), "{}".format(path)]
p = subprocess.run(exec_path, cwd=wd)
else:
print("\nUsage {} with one argument - full file path.".format(sys.argv[0]));
和 .desktop-file (放置在~/.local/share/applications/wine32.desktop),为它:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon=mate-panel-launcher
Exec=wine32-wrapper %f
Name=Local Wine32-6.15
然后我使用 Caja 将我的 exe 文件与这个 wine 脚本相关联。
是否可以用具有完全相同功能的 bash/dash/sh 脚本替换上面的 python 脚本?
对于桌面条目,有一个可用的路径参数。下面是 StarCraft II 启动器(由 Wine 在安装过程中创建)的样子:
经过更深入的分析后,我发现了来自 Wine 包的“Wine Windows Program Loader”的好且有趣的桌面文件。
Exec
它在字段中有特殊选项:并强制在其目录中启动 exe 文件。
对于我的情况,它可能适用于~/.local/share/applications/wine32.desktop,如下所示:
因此不需要脚本部分,我们以带有特殊
start /unix
选项的单个桌面文件结束。注意:当从官方 Ubuntu 存储库安装 Wine 时,可以使用诸如
mkdir -p ~/.local/share/applications/ && cp /usr/share/doc/wine-stable/examples/wine.desktop ~/.local/share/applications/
.