Mac使用Wine运行Windows软件 | Bruce's Blog

Wine简介

什么是Wine?

Wine是“WINE Is Not an Emulator”(WINE不是一个模拟器)的缩写,这种缩写是一种递归缩写,即把缩写本身又放进缩写的意思里面。

Wine 是一个可以在其他系统(比如 macOS、Linux、Android)上运行 Windows 程序的轻量级兼容层。Wine 和虚拟机、模拟器不同,Wine 只翻译 Windows 系统调用,所以应用程序可以获得接近原生程序的性能。依托这个原理,Windows 游戏和应用程序运行时不会占用大量内存,也没有性能损耗,Windows 程序就如同原生程序一般在您的系统高效运行,并且高度集成。甚至在某些情况下,应用程序在 Wine 运行还可以获得比在 Windows 下还要优越的表现。

Wine与虚拟机的区别

Wine与虚拟机不同的是,Wine只是对Windows Api的Linux实现或Mac实现,而虚拟机是对硬件的模拟,简单的说,Wine是一个能让Windows程序在Mac/Linux等系统上运行的工具

Wine的相对于虚拟机的优点:

  • 当你需要打开Windows软件的时候,直接用Wine打开即可,不需要像虚拟机那样先启动虚拟机,所以打开软件的速度上比虚拟机快很多(即使虚拟机只是睡眠了,启动速度也未必有Wine快)。

  • Wine本身占用资源极少,而虚拟机就算不启动程序,也会因为Windows系统本身的启动而占用很多系统资源,直观的反应就是Mac发热增加,风扇呼呼转(如果你在外没有插电源,那么这会让你电池的电消耗的更快,意味着你能用的时间就短了)。

  • Wine让你的感觉Windows软件和Mac是融为一体的,而不是在另一个系统里的,虽然虚拟机的融合模式也能做到这个,但是流畅性并没有Wine的强(这个不是绝对,说流畅性没有Wine强,一个原因是虚拟机占用资源多,另一个原因是我有时候不想用Win软件就把虚拟机睡眠,要用的时候又打开,这么一来一去,有时候恢复会有问题,反正使用体验不好)。

Wine的相对于虚拟机的缺点:

  • 虚拟机可以安装任何系统,进而在安装的系统里安装软件,而Wine只能让你运行Windows软件(因为它本身就是为Windows而生的)。

  • 假如你虚拟机安装的Windows系统,理论上虚拟机能运行任何Windows系统能运行的软件,但Wine并不一定能,可能有些Windows软件无法用Wine启动。

该用Wine还是虚拟机:
看情况,如果你只是想平时运行一个两个Windows软件,那么可以用Wine,如果你需要一个完整的Windows系统来做一些实验之类的那只能用虚拟机,比如我写这篇文章,就是因为我要用网易云音乐上传自己下载的歌到《我的音乐云盘》里,而Mac版虽然有我的音乐云盘,也能听里面的歌,但却没有上传功能,所以我只能用Windows版的,但平时我又不开其它的Windows软件,没必要为了用一个网易云音乐而开一个虚拟机占用这么多系统资源,搞的我电脑发烫、风扇呼呼转。

Wine的种类

  • Wine

  • WineBottler

  • PlayOnMac

  • WineSkin

  • CrossOver

事实上Wine只有一种,它的官网是WineHQ,其余四种都是基于Wine的,因为Wine是开源的(Github)。

Wine的开源代码是CrossOver所属公司CodeWeavers开发的,当然后面由于有开源爱好者的加入,所以现在的Wine的源码贡献除了大概2/3来自CodeWeavers,也有大概1/3的代码来自开源代码贡献者。所以CrossOver就相当于Wine的商业版,它是所有Wine里面更新的最快,匹配新系统最快的,这也因为它是收费软件的原因。

WineBottler是一个开发者的业余爱好,所以更新比较慢,PlayOnMac是专注于在Mac上玩Windows游戏的,WineSkin貌似也与WineBottler类似,不过它已经很老了,最新的都在2017年。

在Mac上安装WINE

安装Wine

理论上Wine是可以直接用brew安装的,但事实上我测试了用brew install wine安装的还是sierra的版本,而我现在系统是Mojave,所以还是手动下载Mac WINE安装吧。

其中第一个Stable是稳定版,Development是开发版,而Staging是待发布的,真机测试的版本,是在发布Stable之前模拟测试的版本,由于写本文时发现稳定版跟Staging版版本号相差挺多的,所以我下了Staging版本:

Wine需要xquartz的支持,如果没有安装xquartz就直接安装Wine会报以下错误(xquartz是苹果系统中支持窗口界面的一个项目):

所以我们要先安装xquartz,使用如下代码即可安装(当然也可以自己下载安装包来安装):

brew cask install xquartz
Bash
Copy

用brew安装xquartz的输出信息(到最后一步要输入管理员密码):

brew cask install xquartz
==> Satisfying dependencies
==> Downloading https://dl.bintray.com/xquartz/downloads/XQuartz-2.7.11.dmg
######################################################################## 100.0%^@
==> Verifying SHA-256 checksum for Cask 'xquartz'.
==> Installing Cask xquartz
==> Running installer for xquartz; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
Password:
Sorry, try again.
Password:
^@installer: Package name is XQuartz 2.7.11
installer: Installing at base path /
installer: The install was successful.
🍺  xquartz was successfully installed!

安装完xquartz后再双击安装Wine,按下图选择(即让所有用户都可以使用):

勾选64位支持(避免到时你要用它运行一些64位的软件):

点击安装:

安装完后有这个图标:

但不幸的是,你点击上图的图标并不会有一个Wine的界面跳出来,而是直接弹出一个终端界面,告诉你如果要运行Wine,可以用以下的命令(所以说这是一个只能用命令操作的Wine):

操作的命令非常简单,wine /path/to/xxxx.exe(即wine命令空一格,然后放上.exe程序的路径,回车即可运行):

################################################################################
#                           Wine Is Not an Emulator                            #
################################################################################

 Welcome to wine-4.13 (Staging).

 In order to start a program:
   .exe: wine program.exe
   .msi: wine msiexec /i program.msi

 If you want to configure wine:
   winecfg

 To get information about app compatibility:
   appdb Program Name

要运行wine的命令,我们需要把wine的命令加入到环境变量中,在~/.bashrc~/.zshrc文件中添加如下配置(如果你安装的是Stable版就要把Staging修改为Stable)

export PATH=/Applications/Wine\ Staging.app/Contents/Resources/wine/bin:$PATH
Bash
Copy

然后source一下使刚刚添加的环境变量生效

# 默认用这个
source ~/.bashrc
# 如果你安装过zsh,那就用这个
source ~/.zshrc
Bash
Copy

安装winecfg(用于配置wine)

在终端输入winecfg回车,由于默认没有这个命令,它会弹出提示下载(Download),点击Download即可:

安装的过程中会弹出这个(没安装完就弹出来了):

提示安装就点安装:

安装好之后,要把wine的命令目录放到环境变量里,在~/.bashrc~/.zshrc中添加以下代码(其中app名字我的是“Wine\ Staging.app”,如果是stable版本,也许是“Wine.app”,总之要保证路径存在):

export PATH=/Applications/Wine\ Staging.app/Contents/Resources/wine/bin:$PATH
Bash
Copy

再读取一下修改后的配置:source ~/.bashrcsource ~/.zshrc,读取配置后,用which wine命令查看一下是否正确加入了环境变量,如果加入了,那么会有一个路径出来,如果没有加载,那就什么都没有,这样就要检查路径是否对了。

用Wine运行Windows程序

Wine运行windows程序要使用命令运行,命令非常简单:

wine /path/to/xxxx.exe
Bash
Copy

对于少数不是.exe的windows程序,比如.msi格式的,要这样执行

wine msiexec /i /path/to/xxxx.exe
Bash
Copy

对于安装包来说,可以用这种方式运行,因为安装只安装一次,但对于启动已经安装好的程序来说,每次用命令就显得麻烦。

其实比较好的方法是在~/.bashrc./.zshrc中添加一个alias,比如我这个,直接在终端敲netease回车,就打开了:

alias netease='wine ~/.wine/drive_c/Program\ Files\ \(x86\)/Netease/CloudMusic/cloudmusic.exe'
Bash
Copy

当然也可以直接右击xxxx.exe然后选择使用Wine打开:

然后就会显示软件的安装界面,就跟在Windows下一样安装,不过安装路径你可以选,你可以选一个Mac的路径安装,也可以默认安装在C盘,但其实这个“C盘”是在你的用户目录下的.wine目录里面的,不过.wine目录由于是.开头,所以是隐藏目录,默认你是看不见的,要按command+shift+.才会显示(再次按就隐藏回去),这个C盘的路径为~/.wine/drive_c,进去就会发现里面的目录结构是跟真正的Windows的C盘结构是一样的。

下图就是我把网易云音乐安装到C盘后的路径,最终能运行的是cloudmusic.exe那个文件,要运行它,也是一样wine+路径,当然也可以右击它,选择使用Wine.app打开(装Windows版是为了使用它的上传音乐到我的音乐云盘的功能,Mac版没有上传功能):

但是按上面的方法,每次要找到它来启动也太麻烦了,所以不建议安装到C盘,而是自己建一个文件夹,比如我在家目录下创建一个文件夹,然后把它拖到方面的左侧栏里:

然后把所有程序都安装到WineSoftwares文件夹里面,要运行的时候,就找到里面的.exe文件,然后在终端输入wine,空格,然后把这里的.exe文件拽到终端里,回车即可运行。

当然也可以把软件都装到默认的C盘,然后把C盘直接拖到访达左侧,这样也能快速访问到C盘。

在Wine官网有一个AppDB,它是用于记录一些Windows的软件是否已经在Wine上测试过可用,我看貌似没太大参考价值,因为我看上面的网易云音乐是1.9.2测试过,但现在都2.5.5了而且我也能正常用。

解决乱码问题

一般来说,只要在~/.bashrc~/.zshrc中添加这个环境变量应试是可以解决

export LC_ALL=zh_CN.UTF-8
Bash
Copy

注意添加后要source一下。其实对一般人来说可能不添加也能解决,毕竟一般默认应该就有这个环境变量,而我这边要添加是因为我系统语言用的英文。

如果上面方法解决不了,则要用以下方法(但同时上边方法也得用)。

去网上下载一个simsun(新宋体)字体,一般解压后你能看到有simsun.ttfsimsun.ttc文件,我们双击simsun.ttf点击安装,即会自动安装到macOS字体文件目录~/Library/Fonts/中。

安装后,我们要把该字体文件创建一个软链接到wine下的windows系统字体文件夹中,直接使用以下命令即可

ln -s ~/Library/Fonts/simsun.ttf ~/.wine/drive_c/windows/fonts/simsun.ttf
Bash
Copy

打开wine的windows系统注册表文件

vim ~/.wine/system.reg
Bash
Copy

在里面搜索LogPixels,应该能搜索到下图所示的配置,其中的00000060表示分辨率(十六进制),单位是DPI

用在线转换工具可以看到十六进制的60是十进制的96,适当增加这个数字有助于提高wine运行的windows程序界面文字的清晰度,比如有些人把它改为70

修改win.ini

vim ~/.wine/drive_c/windows/win.ini
Bash
Copy

win.ini最后添加以下配置(主要是配置菜单等的文字大小,如果你觉得不合适,可以改一下数字)

[Desktop]
menufontsize=13
messagefontsize=13
statusfontsize=13
IconTitleSize=13
Ini
Copy

更改注册表,把以下内容保存到一个文件中wine_zh.reg(其实文件名随意,只要使用的时候用上你写的这个文件名即可)

REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\FontSubstitutes]
"Arial"="simsun"
"Arial CE,238"="simsun"
"Arial CYR,204"="simsun"
"Arial Greek,161"="simsun"
"Arial TUR,162"="simsun"
"Courier New"="simsun"
"Courier New CE,238"="simsun"
"Courier New CYR,204"="simsun"
"Courier New Greek,161"="simsun"
"Courier New TUR,162"="simsun"
"FixedSys"="simsun"
"Helv"="simsun"
"Helvetica"="simsun"
"MS Sans Serif"="simsun"
"MS Shell Dlg"="simsun"
"MS Shell Dlg 2"="simsun"
"System"="simsun"
"Tahoma"="simsun"
"Times"="simsun"
"Times New Roman CE,238"="simsun"
"Times New Roman CYR,204"="simsun"
"Times New Roman Greek,161"="simsun"
"Times New Roman TUR,162"="simsun"
"Tms Rmn"="simsun"
Ini
Copy

在Mac的终端中,使用以下命令把刚刚创建的注册表文件添加到注册表中

regedit wine_zh.reg
Bash
Copy

你也许会奇怪,Mac上哪来regedit这个命令?这不是Windows的注册表命令吗?其实它是你安装Wine之后才有的,而且我们在~/.bashrc中添加了wine环境变量才有的。

到这里,配置就完成了,现在用wine运行你的windows程序看看,还乱码不?

对了,再提一下,别忘了在~/.bashrc~/.zshrc中添加这个环境变量然后source一下

export LC_ALL=zh_CN.UTF-8
Bash
Copy

安装WineBottler

WineBottler的更新比较慢,都是作者自己晚上业余时间写的,这只是它的hobby(业余爱好),所以支持的Mac系统版本也比较旧(虽然写着支持High Sierra,Mojave的上一个版本,但其实是支持Mojave的),而且这个作者竟然还有微博。

下载WineBottler后,按这个安装:WineBottler。

安装CrossOver

CrossOver是收费软件,149RMB永久授权,其实不贵,如果要方便,可以买这个CrossOver for Mac 18 简体中文【标准版 + Mac】,这是官网安装教程:如何在 Mac 上安装 CrossOver。


参考:Mac下安装与使用Wine4最全指导。

(0)

相关推荐