![运行 Windows 可执行文件时无法找到解释器](https://linux22.com/image/56944/%E8%BF%90%E8%A1%8C%20Windows%20%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E6%97%B6%E6%97%A0%E6%B3%95%E6%89%BE%E5%88%B0%E8%A7%A3%E9%87%8A%E5%99%A8.png)
我卸载了wine,并通过编译源安装了更高版本的wine。
但是,当我运行 exe 可执行文件(其路径位于$PATH
)时,它无法像以前那样工作:
$ PDFXCview.exe
run-detectors: unable to find an interpreter for /home/tim/program_files/document/pdfxchange_portable/PDFXCview.exe
我不知道为什么在卸载旧的 wine 并安装新的之前我能够直接运行这个可执行文件。我现在怎样才能找到$ PDFXCview.exe
工作呢?
笔记:
$ wine /home/tim/program_files/document/pdfxchange_portable/PDFXCview.exe
将工作。
$ wine PDFXCview.exe
wine: cannot find L"C:\\windows\\system32\\PDFXCview.exe"
不起作用。注意,路径PDFXCview.exe
仍然是$PATH
谢谢。
答案1
我卸载了wine,并通过编译源安装了更高版本的wine。但是,当我运行 exe 可执行文件(其路径位于 $PATH 中)时,它无法像以前那样工作。
正如您明显看到以下工作正常
wine file.exe
但以下不
# for a file in the current directory
./file.exe
# for a file that is included your path
file.exe
我的 wine 版本是 debian/jessie-backports 的 v1.8.3,并且
至少应该有效到 v1.6.2(这是 debian/jessie 中的默认版本)。
您必须执行以下操作:
sudo apt-get install wine-binfmt
sudo update-binfmts --import /usr/share/binfmts/wine
现在您应该能够执行如上所示的二进制文件,
而不必使用 wine 调用它。
该exe
文件还必须标记为可执行文件:
chmod a+x file.exe
答案2
Linux 有一种允许注册插件的机制,以便内核在被指示执行文件时调用解释器程序:binfmt_misc。看chroot 如何使用 qemu 进行交叉编译环境?以获得更详细的概述。
您的 Wine 包/usr/bin/wine
作为其安装脚本的一部分或通过包中包含的启动脚本注册为 Windows 可执行文件的解释器。您可以对您的自制wine
.一些发行版有一种机制,包可以注册解释器,然后在启动时将解释器注册到内核中,例如update-binfmts
在 Debian 及其衍生版本上。或者,可以在启动期间将解释器注册到内核中:写信给/proc/sys/fs/binfmt_misc/register
。我建议您查看以前使用的软件包并调整以前有效的方法。
答案3
应该是和systemd冲突造成的。
请检查文件/etc/wsl.conf
并查看是否在设置systemd = true
下添加了该标志[boot]
,如下所示。如果是这样,请将其切换为 false。
有关更多信息,请参阅 https://learn.microsoft.com/en-us/windows/wsl/wsl-config#per-distribution-configuration-options-with-wslconf
答案4
好吧,仔细听。这是你做的。
将其放入 /usr/bin/pdfxcview.exe
#!/bin/bash
# Call up a command;
wine /home/tim/program_files/document/pdfxchange_portable/PDFXCview.exe
然后,从终端调用:
$ chmod +x /usr/bin/pdfxcview.exe
^ 将可执行位设置为打开。
$ pdfxcview.exe
软件自由不是很好吗?好像有关于路径的评论。如果您通过键入“env”打印您的环境,您可能会看到您的 Program Files 目录。
Launchpad Librarian 是 Ubuntu 开发人员保存有关其工作文档的地方,使您的系统保持最新且安全。