Ubuntu 14.04 LTS
我正在尝试为在 wine 中运行的程序创建一个启动器。问题是这个程序是通过文件 loader.exe 启动的,该文件似乎是“位置敏感的”,这意味着它是否有效取决于从哪里调用它。我以前从未遇到过这种奇怪的行为,我感到很困惑。
例子:
如果我创建指向 loader.exe 的链接(右键单击 --> 创建链接),只要它与 loader.exe 位于同一文件夹中,该链接就会起作用,但如果我将链接移动到另一个文件夹,loader.exe 就会失败。出于这个原因,我甚至无法创建 .desktop 文件来运行 loader.exe,因为它表现出与链接相同的行为。
因此,我尝试在终端中运行 loader.exe。如果我 cd 到其位置并运行它,程序就会正常启动:
user@PC:~$ cd /home/user/program
user@PC:~/program$ wine loader.exe
但如果我尝试通过路径启动它,程序就会失败:
user@PC:/$ wine /home/user/program/loader.exe
因此我想到创建一个 bash 文件(script.sh)并将其放在与 loader.exe 相同的文件夹中,这样我就可以从任何地方运行 bash 脚本,并且 bash 脚本将从其文件夹中执行 loader.exe 文件...
我尝试了两个版本的脚本:
#!/bin/bash
wine /home/user/program/loader.exe`
exit
和
#!/bin/bash
wine loader.exe
exit
如果我单击它们运行它们(或右键单击 --> 使用运行软件打开),两个版本都会失败
从终端运行脚本,两个版本的行为与前面描述的相同。因此,如果我 cd 到程序文件夹,然后运行脚本,这将正常工作并启动 loader.exe(运行程序),但如果尝试使用绝对路径运行脚本,两个版本都会失败。
我想我唯一剩下的选择是创建一个脚本,它将 1) 打开一个终端 2) cd 到 loader.exe 的位置并 3) 运行它(然后可能关闭终端窗口,因为这似乎对正在运行的软件没有影响)。
但我不知道是否可以以及如何做到这一点。任何帮助都将不胜感激。
答案1
loader.exe
对于某些类型的程序来说这是正常行为。
加载程序需要在其运行的文件夹中包含其他程序文件(dll 和诸如此类)。如果这些文件不在当前文件夹中,则程序无法加载。
尝试:
#!/bin/bash
cd /home/user/program
wine loader.exe
exit
看:https://wiki.winehq.org/Wine_User%27s_Guide#Use_different_startup_paths
和:https://help.ubuntu.com/community/Wine
希望这可以帮助