Difference between revisions of "Wine (简体中文)"

From ArchWiki
Jump to: navigation, search
(关于)
Line 1: Line 1:
[[Category:Wine (简体中文)]]
 
 
[[Category:简体中文]]
 
[[Category:简体中文]]
 +
[[Category:Wine (简体中文)]]
 
[[cs:Wine]]
 
[[cs:Wine]]
[[en:Wine]]
 
 
[[es:Wine]]
 
[[es:Wine]]
 
[[fr:Wine]]
 
[[fr:Wine]]
 
[[it:Wine]]
 
[[it:Wine]]
 
[[ru:Wine]]
 
[[ru:Wine]]
 +
[[zh-CN:Wine]]
 
[[zh-TW:Wine]]
 
[[zh-TW:Wine]]
{{translateme (简体中文)}}
+
[[Wikipedia:Wine (software)|Wine]]是类UNIX系统下运行微软Windows程序的兼容层。在Wine中运行的Windows程序,就如同运行原生Linux程序一样,不会有模拟器那样的性能问题,而且界面与桌面环境更加相配。
{{out of date}}
+
  
= 关于 =
+
== 安装 ==
[http://www.winehq.org/ Wine] 是一个在Unix上X上的Windows API开源方案.wine是一个转换的底层接口(程序加载器)使得windows上的应用程序能够在GNU/Linux和其他POSIX标准下兼容的操作系统. Windows下的应用程序运行在wine下和运行在windows下一样,在这个仿真器下不会出现运行或者内存出错的的情况,这样windows下的应用程序在wine下和你linux桌面的其他应用程序看起来一样.
+
最新版的Wine软件包收录在:i686平台的[community]仓库、x86_64的[multilib]仓库。
 +
{{注意|x86_64平台用户需要启用[multilib]软件仓库(默认关闭),否则无法安装wine。}}
 +
# pacman -S wine
  
= 安装 =
+
另外,安装{{pkg|wine_gecko}}以模拟 Internet Explorer 支持(很多网络程序需要):
== i686 ==
+
# pacman -S wine_gecko
Wine在官方的[extra]源中可以获得:
+
  
只需要
+
=== 平台差异 ===
pacman -S wine
+
i686平台提供的Wine是标准的32位wine程序,不能运行64位Windows程序。x86_64平台的Wine则同时兼容32位和64位Windows程序。
Wine就安装好了.
+
  
== x86_64 ==
+
一种叫做[[Wikipedia:WoW64|WoW64]]的技术,让Wine能够同时运行32位和64位Windows程序,甚至是在同一个WINEARCH为win64的WINEPREFIX中(相当于一个64位Windows环境)。Wine对此支持非常有限,为避免问题,推荐用户放弃64位支持,使用win32的WINEPREFIX。详情参见:[[Wine (简体中文)#使用_WINEARCH]]
目前暂时还没有x86_64版本的wine,不过估计会很快就会被开发出来,因为开发组已经开始了相关的测试。如果你觉得将i686的库和二进制文件复制到自己的PC机上不会太麻烦的话,就可以尝试使用AUR库里的bin32-wine包: [https://aur.archlinux.org/packages.php?ID=7915 bin32-wine] [https://aur.archlinux.org/packages.php?ID=16531 bin32-wine-suse].
+
  
'''重要:''' 如果你有一个 '''nvidia'''-的显卡, 你需要安装lib32-nvidia-utils包来配置3D效果:
+
配置{{ic|1=WINEARCH=win32}}后,x86_64平台的Arch和i686平台的Arch完全相同。
  
pacman -S lib32-nvidia-utils
+
== 配置 ==
 +
Wine默认将配置文件和安装的Windows程序保存在{{ic|~/.wine}}。这样的目录称为一个"Wine prefix"或"Wine bottle"(保留原文,下文称“系统目录”)。每次运行Windows程序(包括内置程序,如winecfg)时,系统目录会自动创建(如果缺失)或更新。系统目录中存放有相当于Windows下C盘(更确切的说应是系统盘)的文件夹。
  
或者到[https://aur.archlinux.org/packages.php?K=lib32-nvidia-utils 这里] 安装更新版的lib32-nvidia-utils , 例如你使用nvidia-96xx驱动程序的话。
+
通过设置WINEPREFIX环境变量,可以更改Wine系统目录的位置。如果希望让不同的Windows程序使用不同的系统环境或配置,这一变量会非常有用。例如,对甲程序使用一个系统目录:
 +
$ env WINEPREFIX=~/.win-a wine 甲程序.exe
 +
乙程序使用另一个:
 +
$ env WINEPREFIX=~/.win-b wine 乙程序.exe
 +
两个程序将使用独立的C盘和注册表配置。
  
= 配置 =
+
以下命令会建立一个默认的系统目录,且不启动任何Windows程序:
运行下面命令创建配置文件
+
$ env WINEPREFIX=~/.customprefix wineboot -u
  winecfg
+
检查上面的设置,然后点 确认 来保存。Wine的配置文件保存在
+
  ~/.wine
+
默认 C:\> 会映射到
+
  ~/.wine/drive_c
+
  
好了! 这就是一个基础的配置。你可以运行windows程序了:
+
{{注意|Wine的系统目录与“沙箱”一类的虚拟环境截然不同。即,你在系统中有权限访问的东西,任何一个Wine程序都可以访问。Wine不是监狱。}}
  wine /path/to/something.exe
+
  
If you're having trouble getting DirectX apps to run properly, try adding the '''-opengl''' flag:
+
配置Wine的方式通常有:winecfg、Wine控制面板、regegit(注册表编辑器)。
  wine /path/to/3d_game.exe '''-opengl'''
+
* [http://wiki.winehq.org/winecfg winecfg]是Wine的图形界面配置程序。控制台下调用{{bc|$ winecfg}}(或指定系统目录:{{bc|1=$ WINEPREFIX=~/.系统目录 winecfg}})即可启动
 +
* [http://wiki.winehq.org/control control.exe]是Windows控制面板的Wine实现,通过{{bc|$ wine control}}命令启动
 +
* [http://wiki.winehq.org/regedit regedit]是Wine的注册表编辑器,比较前两者,该工具能配置更多东西。部分常用键值参见:[http://wiki.winehq.org/UsefulRegistryKeys WineHQ's article on Useful Registry Keys]
  
==声音==
+
=== 使用 WINEARCH ===
默认情况下声音问题会在运行程序时体现出来。确保''winecfg''中只有一个声音设备被选中。ALSA应该可以使用(should work out of the box)但是仍然在某些游戏中出问题或者运行缓慢, 这里有一个关于这个问题的补丁:
+
对于64位用户,如果使用[multilib]仓库里的Wine,默认创建的系统目录是64位环境的。若想使用纯32位环境,修改WINEARCH变量win32为即可:
 +
$ WINEARCH=win32 winecfg  
 +
这样就会生成32位Wine环境。若不设置WINEARCH得到的就是64位环境。
  
http://kcat.strangesoft.net/wine_thread_prio.diff \
+
通过WINEPREFIX变量,在不同的系统目录分别创建32位和64位环境:
 +
$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg
 +
$ WINEPREFIX=~/win64 winecfg
  
但是通过使用OSS并选择: winecfg -> Sound -> Hw acceleration -> Emulation 也可以修补这个声音问题。倘若你使用的是 alsa oss emulation 内核模块。(<b>注意:</b>使用 aoss 实用程序并<i>不能</i>解决这个问题;你必须载入 snd-pcm-oss 模块。)
+
注意,64位环境下也可以运行32位程序。但是,这方面支持还比较有限,目前仍推荐使用32位环境。
  
==字体==
+
{{注意|创建系统目录时,64位Wine会把所有已存在目录视作64位系统目录处理,因而不会在其中生成32位环境。要创建32位环境,必须让Wine自己创建WINEPREFIX指定的文件夹,即该文件夹之前必须不存在。}}
  
如果wine程序不能显示清晰的文字字体, 你可能没有安装微软Truetype字体。幸运的是Arch有这个包。
+
winetricks也接受WINEARCH变量,以安装Steam为例:
  pacman -S ttf-ms-fonts
+
  env WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam
运行上述命令后, 杀死所有wine服务进程并运行winecfg;现在字体应该变的清晰。
+
注意:不必手动在wineprefixes文件夹下建立steam文件夹,Wine会自动创建不存在的系统目录。
  
如果你想安装其他TTF字体,你应该安装到$C_DRIVE/windows/fonts/ (其中的 $C_DRIVE 通常是 ~/.wine/drive_c)来让wine能够识别.
+
=== 显卡驱动 ===
 +
使用Wine运行Windows游戏时,可能需要高性能的显卡驱动。[[Nvidia (简体中文)]]、[[ATI (简体中文)|Amd/ATI]]用户最好使用闭源驱动。[[Intel (简体中文|Intel]]显卡用户也可以选择开源驱动,它已经非常成熟。
  
如果字体不知何故看上去模糊不清的话,进入.wine目录,创建fontrender.txt文件,并添加以下内容:
+
要是显卡驱动有问题或者相关配置有误,控制台用Wine运行某些程序时会输出:
  [HKEY_CURRENT_USER\Software\Wine\X11 Driver]
+
  Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly
"ClientSideWithRender"="N"
+
  
Add the key to your wine configuration by executing the following command:
+
x86-64用户需要从[multilib]或[[AUR (简体中文)|AUR]]安装额外的32位库:
regedit fontrender.txt
+
* '''NVIDIA''':{{bc|# pacman -S lib32-nvidia-utils}} 关于旧版本lib32-nvidia-utils(例如nvidia-96xx驱动),请到[https://aur.archlinux.org/packages.php?K=lib32-nvidia-utils 这里]查找。
 +
* '''Intel''':{{bc|# pacman -S lib32-intel-dri}} 运行Wine时需要手动添加{{bc|1=LIBGL_DRIVERS_PATH=/usr/lib32/xorg/modules/dri}}
 +
* '''AMD/ATI''':{{bc|# pacman -S lib32-ati-dri}} 如果用的是闭源驱动,则需从AUR安装{{AUR|lib32-catalyst-utils}}
  
===开启字体平滑(抗锯齿)===
+
{{注意|安装上述软件包后,可能需要重启才能生效。}}
  
{{Box BLUE | 注意: | 一个 [http://files.polosatus.ru/winefontssmoothing_en.sh 脚本] 已经被创建以简化此过程。}}
+
=== 声音 ===
 +
Wine程序有可能遇到某些声音问题。首先,确保''winecfg''中只启用了一种声卡驱动。目前,Wine对[[Alsa (简体中文)|Alsa]]的支持最好。
  
 +
x86_64平台下使用[[Alsa (简体中文)|Alsa]]的话,需要安装{{Pkg|lib32-alsa-lib}}。如果还要使用PulseAudio,则需安装{{Pkg|lib32-libpulse}}。
  
创建一个.reg文件 (例如: aa.reg),并添加如下内容:
+
若使用[[OSS (简体中文)|OSS]],需要安装{{Pkg|lib32-alsa-oss}}。仅靠内核驱动是不行的。
  
REGEDIT4
+
安装上述软件包后,若winecfg'''仍'''无法识别声卡(Selected driver: (none)),请尝试[http://wiki.jswindle.com/index.php/Wine_Registry#Configuring_Sound registry 通过注册表配置]
+
[HKEY_CURRENT_USER\Control Panel\Desktop]
+
"FontSmoothing"="2"
+
"FontSmoothingType"=dword:00000002
+
"FontSmoothingGamma"=dword:00000578
+
"FontSmoothingOrientation"=dword:00000001
+
  
运行
 
regedit
 
并选择 
 
File -> Import registry file...
 
  
然后选择你刚创建的.reg文件,反锯齿处理字体会按照注册文件进行处理。重启wine程序。
+
运行使用某些高级声音系统的游戏,可能还需要安装{{Pkg|lib32-openal}}。
  
==程序子菜单(Sub-Menu)==
+
=== 其他函数库 ===
  
完成安装后,在你的桌面管理器菜单里很可能找不到相应项目。用wine安装了应用程序之后,系统会自动添加新装程序项目到菜单上去。如果你想创建一个Ubuntu类的Wine子菜单,那么就按接下来的步骤去做:
+
某些程序需要解析HTML、XML(使用MSXML库),需要安装{{Pkg|lib32-libxml2}}。
  
===创建菜单项(Create Menu Entries)===
+
播放音频的程序可能依赖{{Pkg|lib32-mpg123}}。
  
首先,用wine安装一个windows程序来创建基本菜单。创建好基本菜单后,你就可以添加菜单项目了。在GNOME桌面中,在桌面上点击鼠标右键然后选择“创建启动器”。在KDE/Xfce中,步骤会有所不同。使用以下设置来创建三个启动器:
+
对于使用图像处理库的程序,可能依赖{{Pkg|lib32-giflib}}和{{Pkg|lib32-libpng}},
  
'''Type''': Application
+
x86_64的加密支持需要{{Pkg|lib32-gnutls}}软件包。
'''Name''': Configuration
+
'''Command''': winecfg
+
'''Comment''': Configure the general settings for Wine
+
  
'''Type''': Application
+
=== 字体 ===
'''Name''': Uninstall Programs
+
'''Command''': wine uninstaller
+
'''Comment''': Uninstall Windows programs under Wine properly
+
  
'''Type''': Application
+
如果没有安装微软Truetype字体,Wine程序的字体显示可能会一团糟,参见[[MS Fonts (简体中文)]]。如果还是不行,试试{{ic|winetricks allfonts}}。
'''Name''': Browse C:\ Drive
+
'''Command''': wine winebrowser c:\\
+
'''Comment''': Browse the files in the virtual Wine C:\ drive
+
  
现在,在你的桌面上已经有三个启动器,是时候将它们放进菜单中了。不过,首先,当你安装了新的图标主题时,你要实现启动器的图标的动态更新功能,要做到这点,用你喜欢的文本编辑器打开启动器进行编辑,更改设置如下:
+
上述操作后,杀死wine相关进程再运行winecfg,字体应该变好看了。
  
 +
如果字体看起来很毛糙,试试用[http://wiki.winehq.org/regedit regedit]导入下列文本文件:
 +
[HKEY_CURRENT_USER\Software\Wine\X11 Driver]
 +
"ClientSideWithRender"="N"
 +
 +
=== 启动器和菜单 ===
 +
 +
Wine不会为内置程序(如winecfg、winebrowser)创建桌面启动器和菜单项。但手动安装的Windows程序通常会自动创建启动器和菜单项。在Windows下,安装程序后通常会在桌面和开始菜单建立快捷方式,而Wine下会创建遵循freedesktop.org规范的.desktop文件(即启动器,相当于快捷方式)。
 +
 +
{{小贴士|如果启动器''没有''自动创建,或者这些文件丢失了,可以尝试使用[http://wiki.winehq.org/winemenubuilder winemenubuilder]修复。}}
 +
 +
Ubuntu下,Wine项目以子菜单形式出现在系统菜单。以下步骤将实现这个效果:
 +
 +
==== 创建菜单项 ====
 +
首先,用Wine安装一个Windows程序,以建立基本的菜单。完成后,向其中添加菜单项。桌面右键选择“创建启动器...”(不同桌面环境操作有所差异),设置如下:
 +
'''类型(Type)''': 应用程序(Application)
 +
'''名称(Name)''': 配置
 +
'''命令(Command)''': winecfg
 +
'''备注(Comment)''': Wine配置工具
 +
 +
'''类型''': 应用程序
 +
'''名称''': 卸载程序
 +
'''命令''': wine uninstaller
 +
'''备注''': 卸载Wine下的Windows程序
 +
 +
'''类型''': 应用程序
 +
'''名称''': 浏览 C:\
 +
'''命令''': wine winebrowser c:\\
 +
'''备注''': 浏览Wine中虚拟的C盘
 +
现在,桌面上出现了三个启动器,下面将把它们移入菜单。不过首先,我们给这些启动器加上动态图标(由图标主题提供)。方法是,用文本编辑器打开启动器,编辑Icon项目:
  
''Configuration '' launcher:
+
''配置'' 启动器:
Icon[en_US]=wine-winecfg
+
 
  Icon=wine-winecfg
 
  Icon=wine-winecfg
''Uninstall Programs'' launcher:
+
''卸载程序'' 启动器:
Icon[en_US]=wine-uninstaller
+
 
  Icon=wine-uninstaller
 
  Icon=wine-uninstaller
''Browse C:\ Drive'' launcher:
+
''浏览 C:\'' 启动器:
Icon[en_US]=wine-winefile
+
 
  Icon=wine-winefile
 
  Icon=wine-winefile
 +
{{小贴士|多数桌面环境在上述“创建启动器”步骤即可设置图标。以第一个启动器为例,在选择图标窗口中搜索wine-winecfg,选择即可,无需手动编辑。 ——译者注}}
 +
如果图标无法显示或者你觉得很丑陋,换成其他图标也可以。右键设置启动器,应该有更改图标的地方。很多图标主题,例如[http://www.gnome-look.org/content/show.php/GNOME-colors?content=82562 GNOME-colors],都提供这些图标。
  
如果这些设置导致出现丑陋的或不存在的图标,就意味着在你安装的图标主题里没有这些图标,你就需要用自定义的图标位置去替换,你可以右键点击启动器打开属性选项来更换你喜欢的图标。有一个不错的图标主题[http://www.gnome-look.org/content/show.php/GNOME-colors?content=82562 GNOME-colors]能够很好地支持这些快捷方式。
+
现在,将启动器移入菜单。把启动器复制到 {{ic|~/.local/share/applications/wine/}} 目录即可。
 
+
现在你已经配置好了你的启动器了,接下来就可以将它们放到菜单中去。使用终端或文件浏览器将它们放到"''~/.local/share/applications/wine/''"目录中。
+
 
+
最后一步:复制下面的文本到一个叫"''wine-utilities.menu''"的文件中。
+
  
 +
诶?图标还没出现在菜单中!还剩下最后一步,创建下列文本文件:
 +
{{hc|~/.config/menus/applications-merged/wine-utilities.menu|<nowiki>
 
  <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 
  <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 
  "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
 
  "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
Line 149: Line 163:
 
   </Menu>
 
   </Menu>
 
  </Menu>
 
  </Menu>
 +
</nowiki>}}
 +
再看看菜单,应该万事大吉了。
  
然后将这个文件移动到"''~/.config/menus/applications-merged/''"文件夹。去查看一下菜单,你会发现一些清新的菜单项目等着你去用!
+
==== 修复 KDE 4 菜单问题[https://bugs.launchpad.net/ubuntu/+source/wine/+bug/263041] ====
 +
Wine菜单项有可能错误地出现在“Lost & Found(其他)”,而非Wine子菜单。原因是kde-applications.menu文件缺失MergeDir配置。
  
===KDE 4 菜单修复[https://bugs.launchpad.net/ubuntu/+source/wine/+bug/263041]===
+
编辑{{ic|/etc/xdg/menus/kde-applications.menu}}。
Wine菜单项可能会出现在 "Lost & Found" 中而不是 KDE4 的Wine菜单中。This is because kde-applications.menu is missing the MergeDir option.
+
 
+
Edit '''/etc/xdg/menus/kde-applications.menu'''
+
 
+
At the end of the file add <MergeDir>applications-merged</MergeDir> after <DefaultMergeDirs/>, it should look like this:
+
  
 +
在文件末尾处,{{ic|<DefaultMergeDirs/>}}后添加{{ic|<MergeDir>applications-merged</MergeDir>}}。修改后内容大致如下:
 
         <Include>
 
         <Include>
 
                 <And>
 
                 <And>
Line 166: Line 179:
 
         </Include>
 
         </Include>
 
         <DefaultMergeDirs/>
 
         <DefaultMergeDirs/>
         <MergeDir>applications-merged</MergeDir>
+
         '''<MergeDir>applications-merged</MergeDir>'''
 
         <MergeFile>applications-kmenuedit.menu</MergeFile>
 
         <MergeFile>applications-kmenuedit.menu</MergeFile>
 
  </Menu>
 
  </Menu>
Alternatively you can create a symlink to a folder that KDE does see:
+
 
 +
另一个方法是:
 
  ln -s ~/.config/menus/applications-merged ~/.config/menus/kde-applications-merged
 
  ln -s ~/.config/menus/applications-merged ~/.config/menus/kde-applications-merged
This has the added bonus that an update to KDE won't change it, but is per user instead of system wide.
 
  
= 使用wine来执行Win16/Win32二进制程序 =
+
这样的好处是,不会因为KDE升级而重置配置。但该方法只对一个用户有效。
  
你可以通过手动运行'''wine'''执行二进制程序
+
== 运行 Windows 程序 ==
 +
{{警告|千万不要以root身份运行Wine!详情参见[http://wiki.winehq.org/FAQ#run_as_root 本文]。}}
 +
运行Windows程序:
 +
$ wine <exe文件>
  
  wine programsname.exe
+
内置的msiexec程序可以运行MSI安装包:
 +
  $ msiexec installername.msi
  
也可以告诉 Kernel 使用 '''wine''' 作为 Win16/Win32 二进制文件的解释器。首先挂载 binfmt_misc 文件系统:
+
{{小贴士|[http://www.winehq.org Wine官方网站]提供了大量用Wine运行Windows程序方面的信息。一些常用的页面:
 +
* [http://wiki.winehq.org/FAQ 官方FAQ] —— Wine基本支持,以及常见问题解答
 +
* [http://appdb.winehq.org/ Wine程序数据库 (Wine Application Database, AppDB)] —— 特定Windows程序的Wine兼容情况(运行时的已知问题、用户评分、指南等等)
 +
* [http://forum.winehq.org/ WineHQ论坛] —— 要是看完上述网页还有问题,可以到这里咨询
  
mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
+
Windows程序无法正常运行时,请先看看这些在线资源。
 +
}}
  
或者在你的 '''/etc/fstab''' 里添加下面一行:
+
== 其他技巧 ==
 +
这里介绍一些安装Windows组件的工具。由于这些工具可能严重破坏Wine配置,没有需要时最好不要使用。
  
none  /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0
+
=== 安装 Microsoft Office ===
  
然后告诉内核如何解释Win16 和 Win32二进制程序:
+
安装Office套装前,需要先安装某些Windows组件:
  
  echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register
+
  $ WINEARCH=win32 WINEPREFIX=/path/to/wineprefix winecfg
 +
# pacman -S winetricks
 +
$ winetricks msxml3 # For MS Office 2007
 +
$ winetricks msxml3 msxml6 # For MS Office 2010
 +
$ wine /path/to/office_cd/setup.exe
  
可以把下面这行添加到'''/etc/rc.local'''让设置在每次启动时自动生效。这时,你可能希望免于切换 runlevels 时错误信息的打扰:
+
更多信息,参见[http://appdb.winehq.org/appview.php?iVersionId=4992 WineHQ上的文章]。
  
{ echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register; } 2>/dev/null
+
=== OpenGL 模式 ===
 +
很多游戏(比如魔兽争霸啦)都支持OpenGL模式,在Wine下''可能''比默认DirectX模式性能更好。一般添加{{Ic|-opengl}}启动程序即可,但''不同程序可能有所不同'':
 +
$ wine /path/to/3d_game.exe -opengl
  
现在你可以尝试一下:
+
请参考[http://appdb.winehq.org AppDB],了解特定程序的相关信息。
  
chmod 755 exefile.exe
+
=== PlayOnLinux ===
./exefile.exe
+
[http://www.playonlinux.com/ PlayOnLinux]是一个图形界面的Windows/DOS程序管理器。它提供了一些帮助配置/运行程序的脚本,能够管理多个不同版本的Wine,甚至能对不同程序使用不同Wine版本。参考[http://appdb.winehq.org AppDB],看看哪个Wine版本对你要运行的程序兼容最好。从[[AUR (简体中文)|AUR]]安装{{AUR|playonlinux}}。
  
你甚至可以删除'''.exe'''后缀, 因为内核不是通过后缀判断文件类型的.
+
=== PyWinery ===
 +
[http://code.google.com/p/pywinery/ PyWinery]是一个简单的、图形界面的Wine系统目录管理器,用它可以方便地管理不同系统目录,并从不同系统目录运行程序。[[AUR (简体中文)|AUR]]中提供了软件包{{AUR|pywinery}}。当你使用很多系统目录(一个打游戏用、一个编程用……)时,这个程序会非常有用。
  
==Wine配置程序==
+
=== Sidenet的Wine配置工具 ===
这些工具能在典型的windows程序安装中帮助你。大多数情况下这些应该作为最后办法,因为他们会严重修改你的wine配置。
+
[http://sidenet.ddo.jp/winetips/config.html Sidenet's wine-config]
  
 +
* 下载最新版本
 +
* 解压缩
 +
* 阅读 README
 +
* 运行
 +
./setup
 +
* 按提示操作
  
===WineTricks===
+
'''注意''':如[http://sidenet.ddo.jp/winetips/config.html 这里]所述,如果你拥有Windows98的许可证,那么只能够安装DCOM98。
[http://wiki.winehq.org/winetricks Winetricks] is a quick (slightly dirty) script that will allow you to install base requirements needed to run some windows programs. Installable components include DirectX 9.x, msxml (office 2007 / IE requirement), visual runtimes and many more.
+
  
To install simply:
+
=== 将Wine作为Win16/Win32程序的解释器 ===
  pacman -S winetricks
+
可以通知内核把Wine作为Win16/Win32程序的解释器。首先,挂载binfmt_misc文件系统:
 +
  # mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
 +
或者,如果你想一直这么做,将以下内容加入{{ic|/etc/fstab}}:
 +
none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0
 +
然后,告知内核如何解释(运行)Win16/Win32程序:
 +
echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register
 +
如果你想一直这么做,添加上述内容到{{ic|/etc/rc.local}}即可。最后的重定向是为了避免切换启动级别时的错误信息:
 +
{ echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register; } 2>/dev/null
 +
现在,直接运行Windows程序试试:
 +
chmod 755 exefile.exe
 +
./exefile.exe
  
You can now start winetricks (as a normal user!) with:
+
=== Wine 控制台 ===
winetricks
+
 
+
 
+
===WineTools助手===
+
(目前有一些过时了,但仍有效)
+
 
+
Winetools 是一个程序(确切地说实际上是一个脚本),能够帮助安装Wine的某些核心组件,这些组件是安装其他程序时必须得。注意这个助手不是Wine必备的,但是如果你想使Internet Explorer顺利运行,它能帮不少忙。
+
 
+
[http://www.von-thadden.de/Joachim/WineTools/ WineTools Site]
+
 
+
记住,微软要求你必须拥有IE6的授权许可来安装 DCOM98 或是 Internet Explorer 6。如果你已经拥有了一份Windows的拷贝,那就没什么需要准备了。尽管我保证即便你没有授权许可也没人来逮捕你。
+
 
+
现在从 AUR: https://aur.archlinux.org/packages.php?ID=8913 中抓取 [https://aur.archlinux.org/packages.php?ID=8913 PKGBUILD]
+
 
+
并按你的意愿构建软件包(and build the package as you would any PKGBUILD) (如果你不知道怎么做,参阅[[ABS (简体中文)]])
+
 
+
=== Sidenet Wine 设置工具 ===
+
 
+
[http://sidenet.ddo.jp/winetips/config.html wine-config]
+
 
+
* Download the latest version
+
* unpack it
+
* READ THE README
+
* execute
+
./setup
+
* Follow the instructions
+
  
'''请注意''': 像 [http://sidenet.ddo.jp/winetips/config.html 网站这里]所声明一样, 你只能被允许安装DCOM98如果你持有的是有效的Windows98授权许可。
+
有些时候,可能需要运行exe给游戏打补丁,比如给古董游戏添加宽屏支持。这时直接通过Wine运行可能没有用。那么,打开终端,运行一下命令:
  
 +
$ wineconsole cmd
  
===Wine-doors===
+
将进入一个和Windows下cmd一样的命令行环境。在该环境下试试也许就可以了。
  
[http://www.wine-doors.org/ Wine-doors]
+
=== Winetricks ===
 +
使用[http://wiki.winehq.org/winetricks Winetricks]脚本,能够方便地安装许多Windows组件,比如DirectX、msxml(被Office 2007、IE浏览器依赖)。
  
Wine-doors is a WineTools replacement. It features a GNOME GUI and works like a package manager. Works fine in 64bit. You can [https://aur.archlinux.org/packages.php?ID=11823 find it in the AUR].
+
从软件仓库安装该工具:
 +
# pacman -S winetricks
 +
以'''普通用户'''身份运行:
 +
$ winetricks
  
=== easywine ===
+
== Wine 替代产品 ==
国内的一个wine助手程序, 具体情况请添加到这里
+
网站[www.linuxgame.org]
+
  
= Archlinux上运行Win16 / Win32二进制程序的其他选择 =
+
* [[Codeweavers]] —— Codeweaver 出品的 Crossover Office: 针对办公一族
* [[Cedega]] - 针对游戏玩家
+
* [[CVSCedega]] - cedega 的 CVS source 版
+
* [[Codeweavers]] - Codeweavers' Crossover Office; 针对办公一族
+
  
= 外部资源 =
+
== 相关链接 ==
* http://www.winehq.com/
+
* [http://www.winehq.com/ Wine官方网站]
* Installing Internet Explorer 5, 5.5 and 6 with wine: [[Ies4linux]] http://wiki.archlinux.org/index.php/Ies4linux or http://www.tatanka.com.br/ies4linux/
+
* [http://appdb.winehq.org/ Wine程序数据库]
 +
* [http://linuxgamingtoday.wordpress.com/2008/02/16/quick-tips-to-speed-up-your-gaming-in-wine/ 加速Wine,显卡及OpenGL高级配置]
 +
* [http://wiki.gotux.net/code:perl:fileinfo FileInfo] —— Find Win32 PE/COFF headers in EXE/DLL/OCX files under linux/unix environment.

Revision as of 03:13, 14 July 2012

Wine是类UNIX系统下运行微软Windows程序的兼容层。在Wine中运行的Windows程序,就如同运行原生Linux程序一样,不会有模拟器那样的性能问题,而且界面与桌面环境更加相配。

安装

最新版的Wine软件包收录在:i686平台的[community]仓库、x86_64的[multilib]仓库。

注意: x86_64平台用户需要启用[multilib]软件仓库(默认关闭),否则无法安装wine。
# pacman -S wine

另外,安装wine_gecko以模拟 Internet Explorer 支持(很多网络程序需要):

# pacman -S wine_gecko

平台差异

i686平台提供的Wine是标准的32位wine程序,不能运行64位Windows程序。x86_64平台的Wine则同时兼容32位和64位Windows程序。

一种叫做WoW64的技术,让Wine能够同时运行32位和64位Windows程序,甚至是在同一个WINEARCH为win64的WINEPREFIX中(相当于一个64位Windows环境)。Wine对此支持非常有限,为避免问题,推荐用户放弃64位支持,使用win32的WINEPREFIX。详情参见:Wine (简体中文)#使用_WINEARCH

配置WINEARCH=win32后,x86_64平台的Arch和i686平台的Arch完全相同。

配置

Wine默认将配置文件和安装的Windows程序保存在~/.wine。这样的目录称为一个"Wine prefix"或"Wine bottle"(保留原文,下文称“系统目录”)。每次运行Windows程序(包括内置程序,如winecfg)时,系统目录会自动创建(如果缺失)或更新。系统目录中存放有相当于Windows下C盘(更确切的说应是系统盘)的文件夹。

通过设置WINEPREFIX环境变量,可以更改Wine系统目录的位置。如果希望让不同的Windows程序使用不同的系统环境或配置,这一变量会非常有用。例如,对甲程序使用一个系统目录:

$ env WINEPREFIX=~/.win-a wine 甲程序.exe

乙程序使用另一个:

$ env WINEPREFIX=~/.win-b wine 乙程序.exe

两个程序将使用独立的C盘和注册表配置。

以下命令会建立一个默认的系统目录,且不启动任何Windows程序:

$ env WINEPREFIX=~/.customprefix wineboot -u
注意: Wine的系统目录与“沙箱”一类的虚拟环境截然不同。即,你在系统中有权限访问的东西,任何一个Wine程序都可以访问。Wine不是监狱。

配置Wine的方式通常有:winecfg、Wine控制面板、regegit(注册表编辑器)。

  • winecfg是Wine的图形界面配置程序。控制台下调用
    $ winecfg
    (或指定系统目录:
    $ WINEPREFIX=~/.系统目录 winecfg
    )即可启动
  • control.exe是Windows控制面板的Wine实现,通过
    $ wine control
    命令启动
  • regedit是Wine的注册表编辑器,比较前两者,该工具能配置更多东西。部分常用键值参见:WineHQ's article on Useful Registry Keys

使用 WINEARCH

对于64位用户,如果使用[multilib]仓库里的Wine,默认创建的系统目录是64位环境的。若想使用纯32位环境,修改WINEARCH变量win32为即可:

$ WINEARCH=win32 winecfg 

这样就会生成32位Wine环境。若不设置WINEARCH得到的就是64位环境。

通过WINEPREFIX变量,在不同的系统目录分别创建32位和64位环境:

$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg 
$ WINEPREFIX=~/win64 winecfg

注意,64位环境下也可以运行32位程序。但是,这方面支持还比较有限,目前仍推荐使用32位环境。

注意: 创建系统目录时,64位Wine会把所有已存在目录视作64位系统目录处理,因而不会在其中生成32位环境。要创建32位环境,必须让Wine自己创建WINEPREFIX指定的文件夹,即该文件夹之前必须不存在。

winetricks也接受WINEARCH变量,以安装Steam为例:

env WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam

注意:不必手动在wineprefixes文件夹下建立steam文件夹,Wine会自动创建不存在的系统目录。

显卡驱动

使用Wine运行Windows游戏时,可能需要高性能的显卡驱动。Nvidia (简体中文)Amd/ATI用户最好使用闭源驱动。Intel显卡用户也可以选择开源驱动,它已经非常成熟。

要是显卡驱动有问题或者相关配置有误,控制台用Wine运行某些程序时会输出:

Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly

x86-64用户需要从[multilib]或AUR安装额外的32位库:

  • NVIDIA
    # pacman -S lib32-nvidia-utils
    关于旧版本lib32-nvidia-utils(例如nvidia-96xx驱动),请到这里查找。
  • Intel
    # pacman -S lib32-intel-dri
    运行Wine时需要手动添加
    LIBGL_DRIVERS_PATH=/usr/lib32/xorg/modules/dri
  • AMD/ATI
    # pacman -S lib32-ati-dri
    如果用的是闭源驱动,则需从AUR安装lib32-catalyst-utilsAUR
注意: 安装上述软件包后,可能需要重启才能生效。

声音

Wine程序有可能遇到某些声音问题。首先,确保winecfg中只启用了一种声卡驱动。目前,Wine对Alsa的支持最好。

x86_64平台下使用Alsa的话,需要安装lib32-alsa-lib。如果还要使用PulseAudio,则需安装lib32-libpulse

若使用OSS,需要安装lib32-alsa-oss。仅靠内核驱动是不行的。

安装上述软件包后,若winecfg无法识别声卡(Selected driver: (none)),请尝试registry 通过注册表配置


运行使用某些高级声音系统的游戏,可能还需要安装lib32-openal

其他函数库

某些程序需要解析HTML、XML(使用MSXML库),需要安装lib32-libxml2

播放音频的程序可能依赖lib32-mpg123

对于使用图像处理库的程序,可能依赖lib32-gifliblib32-libpng

x86_64的加密支持需要lib32-gnutls软件包。

字体

如果没有安装微软Truetype字体,Wine程序的字体显示可能会一团糟,参见MS Fonts (简体中文)。如果还是不行,试试winetricks allfonts

上述操作后,杀死wine相关进程再运行winecfg,字体应该变好看了。

如果字体看起来很毛糙,试试用regedit导入下列文本文件:

[HKEY_CURRENT_USER\Software\Wine\X11 Driver]
"ClientSideWithRender"="N"

启动器和菜单

Wine不会为内置程序(如winecfg、winebrowser)创建桌面启动器和菜单项。但手动安装的Windows程序通常会自动创建启动器和菜单项。在Windows下,安装程序后通常会在桌面和开始菜单建立快捷方式,而Wine下会创建遵循freedesktop.org规范的.desktop文件(即启动器,相当于快捷方式)。

小贴士: 如果启动器没有自动创建,或者这些文件丢失了,可以尝试使用winemenubuilder修复。

Ubuntu下,Wine项目以子菜单形式出现在系统菜单。以下步骤将实现这个效果:

创建菜单项

首先,用Wine安装一个Windows程序,以建立基本的菜单。完成后,向其中添加菜单项。桌面右键选择“创建启动器...”(不同桌面环境操作有所差异),设置如下:

类型(Type): 应用程序(Application)
名称(Name): 配置
命令(Command): winecfg
备注(Comment): Wine配置工具
类型: 应用程序
名称: 卸载程序
命令: wine uninstaller
备注: 卸载Wine下的Windows程序
类型: 应用程序
名称: 浏览 C:\
命令: wine winebrowser c:\\
备注: 浏览Wine中虚拟的C盘

现在,桌面上出现了三个启动器,下面将把它们移入菜单。不过首先,我们给这些启动器加上动态图标(由图标主题提供)。方法是,用文本编辑器打开启动器,编辑Icon项目:

配置 启动器:

Icon=wine-winecfg

卸载程序 启动器:

Icon=wine-uninstaller

浏览 C:\ 启动器:

Icon=wine-winefile
小贴士: 多数桌面环境在上述“创建启动器”步骤即可设置图标。以第一个启动器为例,在选择图标窗口中搜索wine-winecfg,选择即可,无需手动编辑。 ——译者注

如果图标无法显示或者你觉得很丑陋,换成其他图标也可以。右键设置启动器,应该有更改图标的地方。很多图标主题,例如GNOME-colors,都提供这些图标。

现在,将启动器移入菜单。把启动器复制到 ~/.local/share/applications/wine/ 目录即可。

诶?图标还没出现在菜单中!还剩下最后一步,创建下列文本文件:

~/.config/menus/applications-merged/wine-utilities.menu
 <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
 <Menu>
   <Name>Applications</Name>
   <Menu>
     <Name>wine-wine</Name>
     <Directory>wine-wine.directory</Directory>
     <Include>
 	<Filename>wine-Configuration.desktop</Filename>
     </Include>
     <Include>
 	<Filename>wine-Browse C:\ Drive.desktop</Filename>
     </Include>
     <Include>
 	<Filename>wine-Uninstall Programs.desktop</Filename>
     </Include>
   </Menu>
 </Menu>

再看看菜单,应该万事大吉了。

修复 KDE 4 菜单问题[1]

Wine菜单项有可能错误地出现在“Lost & Found(其他)”,而非Wine子菜单。原因是kde-applications.menu文件缺失MergeDir配置。

编辑/etc/xdg/menus/kde-applications.menu

在文件末尾处,<DefaultMergeDirs/>后添加<MergeDir>applications-merged</MergeDir>。修改后内容大致如下:

        <Include>
                <And>
                        <Category>KDE</Category>
                        <Category>Core</Category>
                </And>
        </Include>
        <DefaultMergeDirs/>
        <MergeDir>applications-merged</MergeDir>
        <MergeFile>applications-kmenuedit.menu</MergeFile>
</Menu>

另一个方法是:

ln -s ~/.config/menus/applications-merged ~/.config/menus/kde-applications-merged

这样的好处是,不会因为KDE升级而重置配置。但该方法只对一个用户有效。

运行 Windows 程序

警告: 千万不要以root身份运行Wine!详情参见本文

运行Windows程序:

$ wine <exe文件>

内置的msiexec程序可以运行MSI安装包:

$ msiexec installername.msi
小贴士: Wine官方网站提供了大量用Wine运行Windows程序方面的信息。一些常用的页面:

Windows程序无法正常运行时,请先看看这些在线资源。

其他技巧

这里介绍一些安装Windows组件的工具。由于这些工具可能严重破坏Wine配置,没有需要时最好不要使用。

安装 Microsoft Office

安装Office套装前,需要先安装某些Windows组件:

$ WINEARCH=win32 WINEPREFIX=/path/to/wineprefix winecfg
# pacman -S winetricks
$ winetricks msxml3 # For MS Office 2007
$ winetricks msxml3 msxml6 # For MS Office 2010
$ wine /path/to/office_cd/setup.exe

更多信息,参见WineHQ上的文章

OpenGL 模式

很多游戏(比如魔兽争霸啦)都支持OpenGL模式,在Wine下可能比默认DirectX模式性能更好。一般添加-opengl启动程序即可,但不同程序可能有所不同

$ wine /path/to/3d_game.exe -opengl

请参考AppDB,了解特定程序的相关信息。

PlayOnLinux

PlayOnLinux是一个图形界面的Windows/DOS程序管理器。它提供了一些帮助配置/运行程序的脚本,能够管理多个不同版本的Wine,甚至能对不同程序使用不同Wine版本。参考AppDB,看看哪个Wine版本对你要运行的程序兼容最好。从AUR安装playonlinuxAUR

PyWinery

PyWinery是一个简单的、图形界面的Wine系统目录管理器,用它可以方便地管理不同系统目录,并从不同系统目录运行程序。AUR中提供了软件包pywineryAUR。当你使用很多系统目录(一个打游戏用、一个编程用……)时,这个程序会非常有用。

Sidenet的Wine配置工具

Sidenet's wine-config

  • 下载最新版本
  • 解压缩
  • 阅读 README
  • 运行
./setup
  • 按提示操作

注意:如这里所述,如果你拥有Windows98的许可证,那么只能够安装DCOM98。

将Wine作为Win16/Win32程序的解释器

可以通知内核把Wine作为Win16/Win32程序的解释器。首先,挂载binfmt_misc文件系统:

# mount -t binfmt_misc none /proc/sys/fs/binfmt_misc

或者,如果你想一直这么做,将以下内容加入/etc/fstab

none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0

然后,告知内核如何解释(运行)Win16/Win32程序:

echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register

如果你想一直这么做,添加上述内容到/etc/rc.local即可。最后的重定向是为了避免切换启动级别时的错误信息:

{ echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register; } 2>/dev/null

现在,直接运行Windows程序试试:

chmod 755 exefile.exe
./exefile.exe

Wine 控制台

有些时候,可能需要运行exe给游戏打补丁,比如给古董游戏添加宽屏支持。这时直接通过Wine运行可能没有用。那么,打开终端,运行一下命令:

$ wineconsole cmd

将进入一个和Windows下cmd一样的命令行环境。在该环境下试试也许就可以了。

Winetricks

使用Winetricks脚本,能够方便地安装许多Windows组件,比如DirectX、msxml(被Office 2007、IE浏览器依赖)。

从软件仓库安装该工具:

# pacman -S winetricks

普通用户身份运行:

$ winetricks

Wine 替代产品

  • Codeweavers —— Codeweaver 出品的 Crossover Office: 针对办公一族

相关链接