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

我正在尝试在Ubuntu 14.04 LTS下使用Wine运行一个简单的程序,但是它抱怨说
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

尝试手动安装 .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

尝试再次启动相同的应用程序仍将失败,并显示:仍然
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

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

更新

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


请问您能否提供该程序的详细信息,包括适用的操作系统和Windows版本? - Wilf
这是Borderlands 2存档编辑器 - Yanick Rochon
1个回答

首先,注意到这个非常明显的警告:
------------------------------------------------------
You are using a 64-bit WINEPREFIX. If you encounter problems, please retest in a
clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------

这意味着你需要创建一个32位的Wine前缀,因为Wine在处理32位程序时效果更好 - 这可以通过在运行Wine命令之前告诉它使用哪种架构来简单完成(我认为也可以通过卸载Wine x86_64并安装Wine i386/i686来实现 - 无论如何,在运行此命令后,请保持终端打开以执行其他的Wine命令)。
export WINEARCH="win32"

这将设置在启动之前wine读取的环境变量(参见man wine)。
让其创建自己的WINEPREFIX(存储Wine虚拟驱动器的位置)也是个好主意。默认情况下,它位于~/.wine,但您可以为每个体系结构和程序创建单独的WINEPREFIX,例如在目录/home/USERNAME/.wine-PROGRAM-NAME/中创建一个WINEPREFIX:
export WINEPREFIX=~/.wine-PROGRAM-NAME/

目录不一定要存在(理想情况下不应该存在,这样就不需要覆盖现有文件),但父目录可能需要存在 - 您还应具有对其的读写权限,并且我认为由于技术原因,wineprefix 不能位于 FAT/NTFS 驱动器上(它将无法工作)。
因此,要为程序设置一个32位的 wine 前缀:
export WINEARCH="win32"
export WINEPREFIX=~/.wine-PROGRAM-NAME/
wineboot -u

你可以用程序的名字替换PROGRAM-NAME,这样以后识别程序会更容易。只要确保它只包含字母和数字,因为标点符号在不同的命令行中通常有特殊功能。
然后你应该会得到一个像这样的窗口:

the wineprefix is being updated....

然后你就可以开始了。现在你可以使用winetricks安装NET 4.0(你可能想先从这里获取最新版本):
winetricks dotnet40

这段文字应该在export WINEPREFIX=...命令之后的终端中,或者在wine命令之前放置,如下所示(对于只有一个命令行的应用程序启动器非常有用):
env WINEPREFIX=~/.wine-PROGRAM-NAME/" winetricks dotnet40

你可能还想使用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/菜单上以及有时在桌面上显示应用程序的启动器。否则,在未来运行应用程序时,您可能需要再次使用export WINEPREFIX=...wine ....(或env WINEPREFIX=... wine .....)来运行应用程序,除非您创建一个启动器(如果您需要知道如何创建,请在下方或其他地方留言....)

更多信息、故障排除等

如何安装winetricks?

您可以使用以下命令从Ubuntu软件源安装版本(或从软件中心安装Winetricks):

sudo apt-get install winetricks

你可以使用winetricks OPTIONS来做一些事情。
对于最新版本,你可以使用以下命令来下载和使用最新版本:
wget  https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks 

请注意,您需要将其作为./winetricks <OPTIONS>运行,除非它的目录在shell的$PATH中。

我不想使用终端,有什么办法吗?

您想要使用的应用程序可能可以在PlayOnLinux下运行(如果您能在这里找到它的话)- 这基本上是全GUI,并且会自动为您完成大部分步骤。

否则,您可以使用终端来轻松完成(通常比GUI程序更具控制力),只需小心输入内容(特别是如果包含sudorm等命令)。首先尝试理解每个命令的作用。

此外,其中一些步骤也可以用其他方法完成 - 无论是通过winecfg还是winetricks打开的GUI界面,你都可以完成一些步骤,但是你能做的事情仍然有限。

如何安装最新版本的Wine?

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

sudo apt-add-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get install wine1.7

如果找不到包wine1.7,请尝试再次运行安装命令,但将wine1.7替换为wine
对于一般的Wine安装和配置,您也可以尝试这个问题
我想使用的程序是为较新版本的Windows设计的,我该怎么办?
默认情况下,Wine复制了Windows XP,但某些程序不支持它,因为它已经过时了(我猜这对您来说很方便,因为您可能可以在Linux下的Wine中运行WinXP的程序,并且您可以“从轨道上摧毁WinXP”:)
无论如何,首先打开Wine配置窗口:
export WINEPREFIX=~/.wine-PROGRAM-NAME/
winecfg

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

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

WINE 下的 WINDOWS 病毒?!?!

很有可能。不要随意安装来自互联网的软件,请确保它来自可信任的网站。


3由于我很少使用Wine,所以我决定直接在我的.bashrc脚本中设置WINEARCH,然后彻底清除了~/.wine并继续执行winetricks dotnet40。现在它可以正常工作了。谢谢! - Yanick Rochon