运行 Windows 可执行文件时无法找到解释器

运行 Windows 可执行文件时无法找到解释器

我卸载了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。

Snipaste_2023-01-12_11-45-09

有关更多信息,请参阅 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 开发人员保存有关其工作文档的地方,使您的系统保持最新且安全。

相关内容