返回列表    

[教学] Wine移植详细教程 实例讲解,简单易上手

本帖最后由 jrandrew 于 10/10/25 06:00 PM 编辑

前言:
    事实上,用wine移植windows程序并不是非常难的事情。我写这个傻瓜教程,希望让大家都能用wine进行简单的移植,而不必去看那厚厚的英文版的manual。为这目的,我会从实例一步步教起,在过程中讲解各种相关的知识(这比看枯燥的手册好多了),并且尽可能简单直白。所以,即使你电脑基础并不怎样,也完全可以掌握。
    有些名词我会用英文,以免大家以后查阅英文资料时无法理解

    高手请无视本教程
   
    Wine,就是Win Emulator,模拟windows环境的软件,通过它可以让Unix内核的系统跑window平台的软件。Wine是一个开源项目,最早应用在Linux上,同样也可以用在MacOS平台上。目前Wine的稳定版本为1.2。(开源项目——项目本身所有或部分代码是公开的,任何人可以根据自己需求修改代码,比较好的代码会被收录,加入到项目中。一般来说,开源项目生命力较强,Java就是最好的例子)
    Wine本身是开源免费的,但目前有一些商业化的基于wine的软件,比如Transgaming的Cider,Codeweaver的Crossover。这些相信大家很熟悉,但它们是收钱的。所有这些基于Wine的软件本质上都差不多,所以用哪个并没有太大区别。在此,我建议大家使用Wineskin。Wineskin也是一个开源项目,它其实就是有GUI(图形化用户界面。Wine本身是没有图形界面的)的Wine,让操作更方便。

准备工作:
    http://davidbaumgold.com/tutorials/wine-mac/我参考这个写的

1.安装XCode
    恩……安装Wine必须先安这个。到http://developer.apple.com/免费申请成为apple的开发者。在这个页面https://developer.apple.com/devcenter/mac/index.action下载最新版的XCode,FTP上似乎也有下载。
    这个东西贼大,做好心理准备。
2.安装MacPorts
    MacPorts是用来安装开源Packages的软件。它会告诉你有什么Package可供安装,类似Linux下apt-get
    http://www.macports.org/install.php根据自己的系统选择相应的包(直接点蓝色的系统的代号,如Leopard),下载后双击即可。这个东西很小
3.配置MacPorts
    打开Terminal.app,(在应用Application/工具Utility中),将以下内容拷入按回车
        echo export PATH=/opt/local/bin:/opt/local/sbin:\$PATH$'\n'export MANPATH=/opt/local/man:\$MANPATH | sudo tee -a /etc/profile
    以上内容我就不解释了。因为要权限,它会让你输密码,登录时的那个就是了。
    如果执行正确,会出现一下两行:
        export PATH=/opt/local/bin:/opt/local/sbin:$PATH
        export MANPATH=/opt/local/man:$MANPATH
    再输入以下内容
    if [ `sysctl -n hw.cpu64bit_capable` -eq 1 ] ; then echo "+universal" | sudo tee -a /opt/local/etc/macports/variants.conf; else echo "not 64bit capable"; fi
4.安装Wine
    重新打开Terminal,输入以下内容(又要密码)
    sudo port install wine-devel
    这就运行MacPorts开始下载并且安装Wine了,期间Terminal会出现很多信息。由于连国外网速较慢,半小时左右能搞定。
5.安装Wineskin
    到此为止,你已经能使用wine运行windows程序了。如果你需要图形界面,到Wineskin主页的下载页http://wineskin.doh123.com/Latest_Update.html下载Wineskin。这玩意儿很小

好了,准备工作就都完成了
由于我自己懒得直接用wine,下面没有wine的操作说明。概念是相同的,逻辑也是相同的,就是操作方法不一样,请至wine主页http://www.winehq.org/查看Manual

移植第一个程序:Notepad学会最基本的操作
http://wineskin.doh123.com/Manual.html这是Wineskin主页上的用户手册,有兴趣可看一下

打开Wineskin,可看到如下界面:

对几个基础概念做一下说明:
Wrapper:封装的包,简单理解就是一个.app。以后简称“包”
Engine:最早Wine用的是X11的窗口,这要求用户和移植者的X11版本相同。Engine让不同的机器跑在相同的配置下,如Crossover的WS4WineCXG9.1.0

第一个程序:notepad
1.安装一个Engine。在Wineskin主页上下载一个engine,或是在程序Engine标签下点击Manually download and install engines。注意,最新的并不代表最好的。现在随便下载一个就行了
2.到程序的Wrappers标签下,在第一栏填入Notepad,下面的下拉框选择刚安装的Engine,点击Create。如下图:

3.到Basic Usage标签下,点击Run WineskinSettings.app,打开配置程序。这是相当重要的程序,很多设置都可以在里面完成。
选择Advanced,Wineskin Configuration。这里可以做一些最最基本的配置。点击Windows EXE旁边的choose,选择windows/system32/notepad.exe。Save and Exit

4.关闭Wineskin Settings,点击Run Wrapper,好了,你的notepad可以用了。


第二个程序:NeverBall学会安装程序、学会配置窗口
1.下载Neverballhttp://neverball.org/download.php这个类似Balance的游戏似乎有人在本版发过。注意,这里我们要下的是Windows版,不要下Mac版
2.创建包,方法同上,名字随意
3.在Wineskin.app/Basic Usage的下拉菜单中选择刚才创建的包,打开WineskinSettings,方法同上。点击Install Windows Software,选择刚下的安装文件,按正常方法安装。

4.安装完成后会弹出窗口让你选择运行的exe,选neverball.exe,然后是运行时窗口的标题(就是最上面那行,如上面的notepad是Untitled-notepad)。这两个设置平时都可以在Wineskin Settings/Advanced/Wineskin Configuration中完成。

5.回到Wineskin Settings,点击Set Screen Option,选择Fullscreen。Save and Exit

6.运行Nerverball.app。这时程序应该是全屏的,但是游戏是窗口化的。到游戏中设置成全屏即完全正常。


第三个程序:WarcraftIII了解Winetrick
之前都是小打小闹,从现在开始,你将开始频繁遇到令人头疼的各式各样的Runtime Error
1.搞到一个PC版的魔兽,确保它能在PC上正常运行
2.创建包,此时注意,包名字内不能有空格。同时,包的存放路径必须没有空格。默认情况下,所有创建的包都是在~/Wineskin目录下(~代表/Users/用户名),如果你的用户名没有空格就没有问题。(Winetrick要求Wrapper的路径中不能有空格)
3.设置成全屏(注意要先选择包再打开Wineskin Setting)
4.将魔兽整个文件夹拷贝至创建的包内(在.app上右击,选Show Package Content打开目录),位置随便,建议Program Files下。
5.进入Wineskin Configuration,Windows EXE选择war3.exe
6.如果你此时运行这个包,会得到如下结果:

魔兽很仁慈,它还告诉你哪里错了,不像有些程序,完全没有头绪。从提示可以发现缺少Directx组件
7.打开Wineskin Settings/Advanced/Wineskin Tools/Run Winetricks
下拉菜单中选择d3dx9,点击Run,等待。Wineskin会先从网上下载所需组建,然后安装。

8.这下可以玩了!
9.如果旁边有两条黑的,回到mac,分辨率设为1024*768,游戏中做相同设置即可全屏
这个移植的魔兽就和PC上的一样,不像Mac版的联机时老是掉线

接下来介绍一下Winetrick
    有些程序需要一些组件的支持才能运行,如上面的魔兽需要DirectX。在早期,wine中安装组件是很麻烦的,你需要手动将所有需要的dll文件放到指定目录,有时甚至需要修改注册表。Winetrick是非官方的程序,但被广为采用,它使安装组件变得非常简单。你可以在winetrick的官方网页上查询到所有的winetrick和说明。
    winetrick还有些pseudopackages。这些其实并不是真正的组件,只是一系列操作的封装,以组件的形式提供,方便使用。如其中的win98一项,是通过一些列的设置使这个wrapper的环境用起来像Windows98。

Wineskin Settings工具说明
    至此,我相信你开始感到乐趣了,可以看一看一些比较无聊的功能介绍。

Wineskin.app
    Basic Usage页中间有6个按钮,依次为打开Wineskin Setting、更换当前包的Engine、重命名包、生成WineskinSC包、查看包的C盘、打开包所在文件夹。最后两项方便你做一些文件操作。
    WineskinSC包和普通包的区别在于是否内置Engine。普通的包放到别的电脑上是不能运行的,除非那台电脑正好装了你用到的Engine,而WineskinSC包内置了Engine,理论上任何装了X11的Intel机子都可以直接运行。这是发布你的包时候用的。
Wineskin Settings
    Advanced/Test Run是debug工具,它能在包运行完后提供一些信息帮助你找出问题。经我仔细检查,一般来说,这些信息基本无用。
    Advanced/Wineskin Tools中有6个工具。
    Run Wine Config(winecfg.exe)    可以对当前包进行一些高级的设置,如声音(Audio)、库(Libraries)。有些功能和winetrick中的pseudopackages重复。Winecfg好像也是非官方的软件。
    Run Register Editor(regedit.exe)    修改当前包的注册表。如果不知道注册表是什么  当我没说
    Rebuild the wineprefix    修复包用的。当你换Engine时可能文件会写错,导致包不可运行
    Create a custom EXE launcher    可以另定义一个Windows EXE,类似Wineskin Configuration里面。比如有个软件有两个EXE,负责不同的功能,可以分别运行。注意:它们不能同时运行。新创建的EXE可以在包的目录下找到
    Kill all Wineskin related processes    有时Wineskin的程序不能正常结束,这会导致你无法再打开某个包。可以通过这个工具强行关掉,Wineskin.app里面的kill process有相同功能

软件大致就这样了,接下来说明一下如何发布自己制作的包

发布Wrapper的方法
    现在魔兽争霸III移植完成了,你很激动地想要和别人分享,应该怎么做呢?直接把包拷贝给别人?最好按照下面的说明做。

修缮
    刚创建完的包是很粗糙的。Wineskin在创建包时会有些用不到的文件也在里面。如果你对Windows系统很熟悉,那么你可以很快地删除一些用不着的文件,如果你并没有那么熟悉,可以慢慢一点点地删,同时不停地测试程序是否能运行。
    另外,Wineskin的图标的确是有点丑,你可以在Wineskin Configuration和Custom EXE launcher中给它们替换一个图标。或是直接将包名/Contents/Resources下的Wineskin.icns替换掉。至于如何制作ICNS文件,XCoder中的组件Icon Composer.app可以胜任。默认位置在/Developer/Applications/Utility下。
正版认证?方便传输?
    如果你有强烈的版权意识,或者你想让你的包更容易传输,将包里的游戏删除,只发布一个空的壳,并写详细的使用文档告诉使用者如何将程序放进去。
发布
    运行Wineskin.app中的Export to WineskinSC Wrapper,默认生成的位置在~/wineskin/Exported-Wrappers

移植的普适方法

1.创建包
2.安装或是拷贝游戏
3.设置窗口模式。对于那些原本就是全屏且不支持窗口化的游戏一定要用全屏模式,不然会出无法解决的Bug
4.上网搜该游戏在Windows下不能运行的原因和解决方法。一般都是某某组件没装,用winetrick安装相应组件即可。
5.如果该游戏比较知名,到wine的AppDB中搜索。AppDB是wine的移植数据库,它由庞大的程序员队伍维护。很多游戏已经有前人尝试移植,他们会把自己移植的过程及结果公布,照着他们说的做基本就可以了。AppDB上的移植基本都是在Linux平台下的,所以结果可能和Mac有些出入。另外,限于当前Wine的技术,有些软件就是没法移植的,比如Sims2(别跟我说Aspyr,这个坚挺的公司竟然都是开发原生版的)。我最近参照的一个移植是Call Of Duty 5,虽然现在还没解决没声音的问题,但至少从本来的完全不能运行,经过参考变成了可以游戏
6.如果还不行,发布你的移植过程和结果到AppDB中,说不定有人会和你来讨论

另外说一下中文支持的事:Wine的中文支持非常差,即使你在winetrick中安装了wenquanyi(中文、日文、韩文支持),大部分的程序都令人失望。我尝试过移植飞信,但是所有字符都是问号

练习
    如果你想找东西练习一下,我建议以下两款游戏。本人亲测可移植,并且只是简单地使用以上说明的方法。

1.Insaniquarium这是我认为Popcap除了大战僵尸最好玩的游戏。挺多年前的了,而且没有出Mac版。上Popcap官网可下试玩版。百度谷歌可搜到破解版
2.我前几天在本版发的行会2:文艺复兴。那时候也只是随便从学校PT上下了个游戏试试,没想到效果还挺好。这游戏挺大


基本应用就到此为止了,以下是进阶应用,需要一定的电脑基础

    由于我自己也只接触Wine移植一个月,事实上我的技术也少得可怜,我需要看完Wine的源代码或是开发文档才能有进一步的理解,但这…………工作量太大,并且我没有足够的动机。那些能够完全掌握Wine的人,我必定没有资格来指导。所以我下面就写一些可能会派上用处的技巧,有些即使不能工作,应该也达到了抛砖引玉的效果。

(以下会一点点更新)

从魔兽改键说起:同一包运行多进程
    魔兽移植成功了,可是mac没有小键盘,物品使用很不方便,特别是对于打Dota的同学。以前在Win下时用Warkey(键盘映射软件),那么能不能也一起移植过来呢?

    上文说明了如何用Wineskin Tools来创建一个Custom EXE Launcher,但是这个EXE和主程序是无法同时运行的。Wineskin Configuration中有一个选项Use Start.exe提供了解决方法。钩上后,你能够将Windows EXE设定为cmd.exe,或是直接一个批处理文件。于是我写了下述代码:
        start /b "C:\Program Files\War3\warkey\warkey.exe"
        "C:\Program Files\War3\war3.exe"

    保存为run.bat,将Windows EXE设为run.bat。结果很美好,warkey和魔兽同时启动了,可我才发现我键盘上找不到Scroll Lock来开启warkey。我想起以前在Win下是通过屏幕键盘osk.exe来解决的,但是wine下没有osk.exe,网上下了一个也无法运行,看来是不支持。
    于是我换了一款不需要Scroll Lock的软件,同样完全无效。这就很麻烦,不知道问题出在Wine还是该软件。
    我又通过该注册表的方法修改Win的键盘映射(可通过KeyTweak软件完成),结果发现Wine完全无视我改的注册表。但是根据这个思路,好歹也是有解决方法的。这个麻烦无比的解决方法就是:直接修改Wine中的键盘映射表。具体方法:打开dlls/x11drv/keyboard.c,根据需要修改以下映射表
    static const int main_key_scan[MAIN_LEN] =
    {
        /* this is my (102-key) keyboard layout, sorry if it doesn't quite match yours */
        0x29,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,
        0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,
        0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x2B,
        0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,
        0x56 /* the 102nd key (actually to the right of l-shift) */
    };

    修改完后需要重新编译Wine
   
    同样,用批处理的方法可以让你运行某些游戏的内存修改器或者变速齿轮。我在机子上 变速齿轮+工业大亨2 测试完全成功。理论上其他游戏也可以和修改器同时运行。然而有个严重的问题:wine没有提供win下ALT+TAB切换的功能。也就是说,一旦你打开了全屏的游戏,你再也不能去操作修改器了。另外一个问题是当你打开多个进程时,键盘响应可能会出现问题。可能发生键盘事件被其他程序响应,导致无法正常游戏。

    魔兽改键的问题虽然解决得不好,但由此我想到:有了cmd,那我就有了整个世界啊 ~但如果我在一个包里装了n多n多软件同时运行,那为何不干脆用虚拟机呢 。

Mac下的文件关联File Association(未解决,等待高手)

    比如你移植了一个Notepad,可是双击txt压根就不可能用Notapad来打开。这个问题在Linux上已得到解决http://ubuntuforums.org/showthread.php?t=884777&page=1。它的方法是写一段命令,打开文件时自动调用这段命令,通过命令打开正确的exe并且直接载入文件。
    Mac下也可以写出这样的命令,但是Mac下只允许文件关联到.app,仍旧白搭。网上搜了搜,有介绍说用Automator的。由于我既不熟悉Automator,也从未在Mac平台进行过开发,所以我难以解决这个问题。希望高手不吝赐教(需要将参数传给包里面的exe,不知道怎么搞)
    好消息是,即将(我也不知道什么时候)推出的Wineskin2.0将支持这项功能。所以,等一等吧~
附件: 您所在的用户组无法下载或查看附件
29

评分次数

支持继续更新...
楼主太辛苦了,我原来在linux下安装过,这个好像在麻烦一些哟

zhd1254 于 10/10/24 07:45 PM 补充以下内容:
现在有个问题是苹果的中文输入法不能带到wine的程序中
非常棒,楼主威武
楼主太辛苦了,我原来在linux下安装过,这个好像在麻烦一些哟

zhd1254 于 10/10/24 07:45 PM 补充以下内容:
现在有个问题是苹果的中文输入法不能带到wine的程序中
zhd1254 发表于 10/10/24 06:13 PM
Wine的问题是相当多啊,中文的支持简直惨不忍睹。我建议wine下就不要用中文了
1

评分次数

可是我要输入中文的啊,总不能一直打拼音啊
顶贴,搞点积分
可是我要输入中文的啊,总不能一直打拼音啊
zhd1254 发表于 10/10/24 09:04 PM
那我这两天再试试

话说这个帖子怎么被移动了,我个人认为放在软件区或游戏区比较合适
不错,CrossOver 贵了点
The best way to predict the future is to invent it. -- Alan Kay
不错,有时间学习下!
Mac·简单·实用·高效
http://opnir.com
版大,我认为这贴在软件区或者游戏区会比较有前途
很强大 。需要花很多时间学习啊
很强大 。需要花很多时间学习啊
weizh126 发表于 10/10/25 06:23 PM
不多。如果准备工作都做好了的话,移植一个魔兽5分钟都不用
写得很好
继续努力
写得很好
谢谢楼主
返回列表