如何为 .exe 应用程序创建桌面启动器,该应用程序应使用其目录中的 wine 启动?

如何为 .exe 应用程序创建桌面启动器,该应用程序应使用其目录中的 wine 启动?

我有一个 MS Windows 应用程序需要新版本的 Wine。我已使用 PlayOnLinux 将其本地安装到主文件夹中。

我只能创建简单的 bash/dash/sh 脚本来启动文件夹中的 .exe 应用程序。我尝试了标准pushd/popdcd && exec(cd && exec)方法但失败了。

我需要的:

  • 桌面文件作为脚本的启动器

  • 一个脚本,其:

    1. 将目录更改为 .exe 应用程序的目录
    2. 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 文件(放置在~/.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 脚本?

答案1

对于桌面条目,有一个小路参数可用。以下是星际争霸 II 启动器(在 Wine 安装过程中创建)的样子:

[Desktop Entry]
Name=StarCraft II
Exec=env WINEPREFIX="/home/spas/.wine" /opt/wine-staging/bin/wine C:\\\\windows\\\\command\\\\start.exe /Unix /home/spas/.wine/dosdevices/c:/users/Public/Desktop/StarCraft\\ II.lnk
Type=Application
StartupNotify=true
Comment=Play StarCraft II
Path=/home/spas/.wine/dosdevices/c:/Program Files (x86)/StarCraft II
Icon=89A5_StarCraft II.0
StartupWMClass=starcraft ii.exe

答案2

经过更深入的分析,我发现了 Wine 软件包中“Wine Windows Program Loader”的有趣桌面文件。它有特殊选项Exec场地

Exec=wine start /unix %f

并强制在其目录中启动 exe 文件。

就我的情况来说,它可能适合~/.local/share/applications/wine32.desktop如下所示:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon=mate-panel-launcher
Exec=/home/user/.PlayOnLinux/wine/linux-x86/6.15/bin/wine start /unix %f
Name=Local Wine32-6.15

因此不需要脚本部分,我们以具有特殊start /unix选项的单个桌面文件结束。

注意:当从官方 Ubuntu 存储库安装 Wine 时,可以使用如下命令注册“Wine Windows 程序加载器” mkdir -p ~/.local/share/applications/ && cp /usr/share/doc/wine-stable/examples/wine.desktop ~/.local/share/applications/

相关内容