AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1362803
Accepted
N0rbert
N0rbert
Asked: 2021-09-10 07:15:23 +0800 CST2021-09-10 07:15:23 +0800 CST 2021-09-10 07:15:23 +0800 CST

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

  • 772

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

我坚持创建简单的 bash/dash/sh 脚本以在其文件夹中启动 .exe 应用程序。我尝试了 standard pushd/popd, cd && 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-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 脚本?

command-line
  • 2 2 个回答
  • 751 Views

2 个回答

  • Voted
  1. pa4080
    2021-09-10T11:06:35+08:002021-09-10T11:06:35+08:00

    对于桌面条目,有一个可用的路径参数。下面是 StarCraft 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
    
    • 1
  2. Best Answer
    N0rbert
    2021-09-10T12:53:26+08:002021-09-10T12:53:26+08:00

    经过更深入的分析后,我发现了来自 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 时,可以使用诸如mkdir -p ~/.local/share/applications/ && cp /usr/share/doc/wine-stable/examples/wine.desktop ~/.local/share/applications/.

    • 1

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve