使用 Wine 运行 .Net 4.0 应用程序

Yan*_*hon 22 mono windows wine 14.04

我试图在 Wine 中运行一个简单的程序,在 Ubuntu 14.04 LTS 下,但是它抱怨说

fixme:mscoree:parse_supported_runtime sku=L".NETFramework,Version=v4.0" not implemented
fixme:mscoree:parse_probing privatePath=L"assemblies" not implemented
The entry point method could not be loaded
Run Code Online (Sandbox Code Playgroud)

尝试手动安装 .Net 4.0 会在安装程序中产生错误,说 .Net 4.0 已经安装。

跑步 winetricks forcemono

------------------------------------------------------
You are using a 64-bit WINEPREFIX. If you encounter problems, please retest in a
clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing w_do_call forcemono
Executing load_forcemono
Using native override for following DLLs: mscoree
Executing winetricks_early_wine regedit C:\windows\Temp\_forcemono\override-dll.reg
Using override for following DLLs: mscorsvw.exe
Executing winetricks_early_wine regedit C:\windows\Temp\_forcemono\override-dll.reg
Run Code Online (Sandbox Code Playgroud)

然后尝试再次启动同一个应用程序仍然会失败

err:module:import_dll Library mscoree.dll (which is needed by L"Z:\\home\\<user>\\tmp\\saveedit_r237\\Gibbed.Borderlands2.SaveEdit.exe") not found
err:module:LdrInitializeThunk Main exe initialization for L"Z:\\home\\<user>\\tmp\\saveedit_r237\\Gibbed.Borderlands2.SaveEdit.exe" failed, status c0000135
Run Code Online (Sandbox Code Playgroud)

我尝试过 Wine 1.6 和 1.7.30,但都失败了。.Net 4.0 真的实现了吗?还是部分实施?有没有办法让这个 .Net 4.0 应用程序工作?

更新

Winetricks 抱怨dotnet40无法在 64 位系统上安装。那么,我该如何安装呢?

Wil*_*ilf 31

首先,请注意这个非常明显的警告:

------------------------------------------------------
You are using a 64-bit WINEPREFIX. If you encounter problems, please retest in a
clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

这表明您需要创建一个 32 位的 Wineprefix,因为 Wine 与 32 位的东西一起工作得更好 - 这可以通过在运行其命令之前告诉 wine 要使用的架构简单地完成(我认为这也可以通过卸载 Wine x86_64 并安装来完成) Wine i386/i686 - 无论如何,在运行此命令后保持终端打开以接收其他 wine 命令)

export WINEARCH="win32"
Run Code Online (Sandbox Code Playgroud)

这会设置 wine 在启动之前读取的环境变量(请参阅 参考资料man wine)。

让它创建自己的 WINEPREFIX(存储 Wine 虚拟驱动器的位置)也是一个好主意。默认情况下,这是~/.wine,但您可以为每个架构和程序创建单独的 - 因此要在目录中创建一个 WINEPREFIX /home/USERNAME/.wine-PROGRAM-NAME/

export WINEPREFIX=~/.wine-PROGRAM-NAME/
Run Code Online (Sandbox Code Playgroud)

该目录不必存在(理想情况下它不应该存在,因此不必覆盖内容),但父目录可能应该存在 - 您还应该拥有读取和写入它的权限,而我没有认为出于技术原因, wineprefix 可以位于 FAT/NTFS 驱动器上(它不起作用)

因此,要为程序设置 32 位 wine 前缀:

export WINEARCH="win32"
export WINEPREFIX=~/.wine-PROGRAM-NAME/
wineboot -u
Run Code Online (Sandbox Code Playgroud)

您可以替换PROGRAM-NAME为程序的名称,以便以后更容易识别该程序。只需确保它只包含字母和数字,因为标点符号在各种命令外壳中通常具有特殊功能。

然后你应该得到一个这样的窗口:

wineprefix 正在更新中....

然后你就可以出发了。现在您可以使用以下方法安装 NET 4.0 winetricks(您可能希望首先从此处获取最新版本):

winetricks dotnet40
Run Code Online (Sandbox Code Playgroud)

这应该在export WINEPREFIX=...命令之后的终端中,或者将它放在 wine 命令之前(对于应用程序启动器该命令行很有用)

env WINEPREFIX=~/.wine-PROGRAM-NAME/" winetricks dotnet40
Run Code Online (Sandbox Code Playgroud)

您可能还想使用它winetricks来安装它可能需要的其他一些东西 - 例如字体(使用选项corefonts, lucida, tahoma)。要列出 winetricks 的选项,请使用winetricks list-all.

然后,您可以使用wine "~/Downloads/PATH/TO/INSTALLER.exe". 再一次(复制该文件,然后选择“粘贴文件名”到终端,所以看起来'/home/wilf/Desktop/name spaces/installer.exe'不是file:///home/wilf/Desktop/name spaces/installer.exe'

您应该确保在运行此命令之前(尤其是在关闭终端时)或在同一行中导出了 WINEPREFIX。在让它工作(或不工作)后,您可能想要报告它在这里的工作情况(包括您做了什么等,以便您可以帮助其他人)。如果您有问题,并且输出中出现明显错误,您可以报告错误

安装后,它应该使应用程序的启动器出现在 Dash/Menu 上,有时也出现在桌面上。否则,将来要运行该应用程序,您可能需要再次使用export WINEPREFIX=...wine ....(或env WINEPREFIX=... wine .....)运行该应用程序,除非您创建了一个启动器(如果您需要知道如何操作,请在下方或某处评论....)


更多信息、故障排除等

如何安装 winetricks?

您可以使用此命令从 Ubuntu 存储库中获取版本(或从软件中心安装 Winetricks):

sudo apt-get install winetricks
Run Code Online (Sandbox Code Playgroud)

然后你可以winetricks OPTIONS用来做东西。

对于最新版本,您可以使用以下命令下载并使用最新版本:

wget  https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks 
Run Code Online (Sandbox Code Playgroud)

请注意./winetricks <OPTIONS>,除非它的目录在 shell 的$PATH.

我不想使用终端,我该怎么办?

您想要使用的应用程序可能可以在PlayOnLinux运行(如果您可以在此处找到它应该是) - 这几乎是所有 GUI 并自动为您完成大部分步骤。

否则,您可以使用终端来做到这一点很容易(你通常比如果一个GUI程序做更多的控制),只是要小心你投入(尤其是如果它包含的命令sudorm等)。首先尝试了解每个命令发生了什么。

此外,其中的一些步骤可以以其他方式完成-既winecfgwinetricks开放的图形用户界面,通过它你可以做一些措施,但同样你可以做的是有限的。

如何安装最新的 Wine 版本?

较新的 wine 版本是最新的,因此可能能够更好地运行程序(除非有影响它的回归)。要安装当前最新版本 (Wine1.7),您可以使用官方 Wine PPA

sudo apt-add-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get install wine1.7
Run Code Online (Sandbox Code Playgroud)

如果找不到包wine1.7,请尝试再次运行安装命令,但使用wine而不是wine1.7

一般安装和配置Wine,你也可以试试这个问题

我要使用的程序是为较新版本的 Windows 设计的,我该怎么办?

Wine 默认复制 Windows XP,有些程序不支持它,因为它是 EOL(我认为这很方便,因为您可能可以在 Linux 下的 Wine 下运行 WinXP 的程序,并且您可以“从轨道上取消 WinXP”:)

不管怎样,首先打开Wine配置窗口:

export WINEPREFIX=~/.wine-PROGRAM-NAME/
winecfg
Run Code Online (Sandbox Code Playgroud)

~/.wine-PROGRAM-NAME/您之前创建的 WINEPREFIX在哪里。

并在“应用程序”选项卡底部选择要复制的 Windows 版本。然后再次尝试安装该应用程序。

WINE 下的 WINDOWS 病毒?!?!

很有可能。不要安装互联网上的随机软件,尽量确保它来自受信任的站点。

  • 由于我不怎么使用 Wine,我想我会直接在我的 `.bashrc` 脚本中设置 `WINEARCH`,然后完全擦除 `~/.wine` 并继续使用 `winetricks dotnet40`。它现在有效。谢谢! (3认同)