Wine (简体中文)

From ArchWiki
Revision as of 02:57, 19 June 2013 by Cuihao (Talk | contribs)

Jump to: navigation, search
翻译状态: 本文是英文页面 Wine翻译,最后翻译时间:2013-06-19,点击这里可以查看翻译后英文页面的改动。

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary end

获取更详细的介绍请浏览项目官方网站wiki页面。

安装

警告: 如果您的账户能浏览某些文件或资源,Wine运行的程序也可以。Wine不是沙箱。如果很重视安全,请考虑使用虚拟化

通过 pacman官方仓库安装软件包 wine 即可获取 Wine 模拟器。 对于64位系统,需要启用 Multilib 仓库。

另外,您可能需要安装 wine_geckowine-mono 软件包。它们分别用于运行依赖于 Internet Explorer 和 .NET 的程序。不过,也可以随后通过 Wine 在需要时下载安装这些组件。但如果提前下载安装,您就可以离线使用它们,而且 Wine 不必为了每一个 WINEPREFIX 都单独下载。

平台差异

默认的Wine是32位的程序,也是i686的Arch软件包。所以它不能运行64位的Windows程序(反正是罕见的)。

然而,x86_64的Wine软件包目前以 --enable-win64方式编译。这个参数激活了WoW64的Wine版本。

  • 在Windows中,这个复杂的子系统允许用户同时使用32位和64位的Windows程序,甚至是在同一目录。
  • 在Wine中,用户将必须建立单独分开的目录/前缀。这项Wine功能仍是试验阶段,并建议用户使用一个win32WINEPREFIX。浏览Wine64以获取有关这个的详细信息。

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

注意: 如果在64位环境中执行winetricks或其它程序出现问题,请试试创建一个新的32位WINEPREFIX. 参见下面的#使用 WINEARCH

配置

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

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

例如,如果您使用 $ env WINEPREFIX=~/.win-a wine-A程序.exe参数来运行一个程序。另一个使用 $ env WINEPREFIX=~/.win-b wine-B程序.exe参数,这两个程序将使用独立的C盘和注册表配置。

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

$ env WINEPREFIX=~/.customprefix wineboot -u

配置Wine的方式通常有:

  • 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位版本的wine将视全部目录如同64位系统目录,也将不会在已存在的目录中创建任何32位的.创建32位系统目录,您必须让Wine创建指定的WINEPREFIX目录。

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

env WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam
小贴士: 编辑 ~/.bashrc,使得 WINEPREFIX 和 WINEARCH 永久生效。
注意: 不必手动在 wineprefixes 文件夹下建立 steam 文件夹,Wine会自动创建不存在的系统目录。

显卡驱动

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

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

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

x86-64用户需要从multilibAUR安装额外的32位库:

注意: 安装上述软件包后,可能需要重启X才能生效!

声音

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

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

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

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

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

其他函数库

某些程序(如 Office 2003)需要解析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不会为内置程序(如winecfgwinebrowser)创建桌面启动器和菜单项。但手动安装的Windows程序通常会自动创建启动器和菜单项。在Windows下,安装程序(如setup.exe)通常会在桌面和开始菜单建立快捷方式,而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:\.desktop</Filename>
     </Include>
     <Include>
 	<Filename>wine-Uninstall Programs.desktop</Filename>
     </Include>
   </Menu>
 </Menu>

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

Gnome3 中清理 Wine 菜单启动项

系统全局的菜单启动器安装在 /usr/share/applications/,清除相应程序的“.desktop”文件即可从整个系统删除该启动器。

如果这样还是无法解决问题,那么很可能 Wine 的启动器存放在用户级别的 ~/.local/share/applications/wine/Programs/ 目录中。删除相应的“.desktop”文件即可清理对应启动项。删除整个 Programs 文件夹将清理所有 Wine 程序的启动项。

修复 KDE 4 菜单问题

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

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

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

<Menu>
        <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

技巧

小贴士: 此外您可能会感兴趣以下文章的开始所提供的链接

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

安装 Microsoft Office

更新(2013年4月9日):对于 Wine 1.5.27,下面所述的步骤已经不必要了。先安装 winbind(包含在 samba 中),然后执行:

$ export WINEPREFIX="<用户家目录中的某一可写目录>"	
$ export WINEARCH="win32"
$ wine /到/office安装盘/的路径/setup.exe

可以把上述 export 语句加入 bashrc 文件。

安装结束后,打开 Word 或 Excel,联网激活。完成后,关闭程序,执行 winecfg,在“函数库”选项卡中把 riched20 设置为“Native (Windows)”。这样 PowerPoint 就可以正常工作。 (使用 Office Home/Student 2010 和 wine 1.5.27 测试。在线激活有效)

安装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上的文章

注意: playonlinux 提供了一个自定义安装脚本,简化了 Office 2003、2007 和 2010 的安装。您只需提供 setup.exe 或 ISO 文件,这个脚本就可以指导您完成安装,完全不需要自己设置 Wine。

OpenGL 模式

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

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

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

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

可以通知内核把Wine作为Win16/Win32程序的解释器。

设置过程在 systemdinitscripts 下有所差异。

systemd

通知内核识别和执行 Win16/Win32 程序的方式:

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

To make the setting permanent, create a configuration file in /etc/tmpfiles.d with the following contents: 测试效果,若一切正常,可以使该设置永久生效。在 /etc/tmpfiles.d 目录创建新的配置文件,内容为:

/etc/tmpfiles.d/enable-doswin-exe.conf
w /proc/sys/fs/binfmt_misc/register - - - - :DOSWin:M::MZ::/usr/bin/wine:

说明一下,和 initscripts 不同,systemd 会自动挂载 /proc/sys/fs/binfmt_misc,所以只需要通过临时文件机制向内核写入配置即可。

更多信息,参见 Systemd (简体中文)#临时文件

initscripts

首先,挂载 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浏览器依赖)visual运行库还有其他更多的。

您可以使用pacman或者从AUR上获取winetricks-svnAUR软件包来安装该工具:

运行:

$ winetricks

第三方工具

这些程序有其自己的主页和支持论坛。

CrossOver

CrossOver 有单独的wiki 页面.

PlayOnLinux

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

PyWinery

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

它在默认情况下使用winetricks打开.exe文件,所以你可以选择你有的任何Wine的配置。

Q4wine

Q4Wine 是一个图形界面的系统目录(wine-prefix)管理器。它的特色是可以把 QT 主题导入 Wine 配置,使两者完美整合。q4wine 软件包在 [multilib] 仓库中提供。

相关链接