WineGuide
翻译:寒蝉退士
译者声明:译者对译文不做任何形式的担保,译者对译文不拥有任何权利并且不负担任何义务。
原文:http://www.winehq.org/site/docs/wineusr-guide/index
第 1 章. 介绍
1.1. 文档概述
原文链接修改为https://wiki.winehq.org/Wine_User's_Guide[1]
1.1.1. 本文档用途和目标受众
这份wine用户指南,是一个简单的安装指南和丰富的参考指南。该指南是为wine新用户以及经验丰富的用户提供全方位的一步一步的安装和配置说明,以及与所有配置功能和支持方面相关的广泛的参考材料。
1.1.2. 进阶使用的问题和意见
如果你查阅了本指南,F&Q,以及其它有关文件后,还有一些无法弄清楚后的,我们很乐意听取您的意见。邮件列表部分包含几个邮件列表和IRC频道,所有这些都是寻求帮助并提供建议很好的地方。如果你特别精明,相信的自己可以有更好的解释,你可以发送错误报告或自己访问和编辑维基。
1.1.3. 内容概述
为了能够使用wine,你必须先有一个工作站的安装。本指南将帮助您从一个空白的系统至一台拥有一个有最新的wine的安装过程。 第一步,获取wine,说明获取wine的文件到您的计算机的各种方法。 第二步,配置wine,展示了如何根据您的个人需求定制wine的安装。 最后一步,运行wine,涵盖了你可以在wine下运行一个特定的应用程序的具体步骤,并提供了如果你需要进一步帮助的有用的链接。
1.2. Wine 是什么?
编写: John R. Sheets <[email protected]>
1.2.1. Windows 和 Linux
许多人面临着拥有的软件不能在他的计算机上运行的困扰。随着 Linux 近来的流行,因为操作系统的不同而发生的更加频繁。你的 Windows 软件不能在 Linux 上运行,而你的 Linux 软件不能在 Windows 上运行。
对这个问题的一个常见的解决方法是在一个计算机上同时安装这两个操作系统,成为一个 "双引导" 系统。如果你想在 MS Word 中写一个文档,你可以启动 Windows;如果你想运行 GnuCash,一个 GNOME 财务应用程序,你可以关闭你 Windows 任务(session)并重启动到 Linux。问题是你不能同时使用它们。每次在 MS Word 和 GnuCash 之间前后切换,你必须再次重启动。很快就会厌倦的。
如果你可以在同一个系统上运行所有你的程序,而不管它们是为 Windows 还是 Linux 写的,生活就容易多了。在 Windows 上,这实际上不可能。
但是,Wine 使在 Linux (或 Solaris)上同时运行本地 Windows 应用程序和本地 Linux 应用程序成为可能。你可以在 MS Word 和 GnuCash 之间共享桌面空间,交叠窗口,图标化它们,甚至从同一个启动项(launcher)运行它们。
1.2.2. wine的原理和作用
Wine 是 win32 库的一个 UNIX 实现,由上百个志愿开发者从头(from scratch)写成并在一个开放源代码许可之下发行。任何人都可以下载并阅读源代码,并修理存在的缺陷。Wine 社区众多有才干的程序员在增进 Wine 上花费了上千个小时的个人时间,所以它可以很好的与 win32 应用编程接口(API)一起工作,并保持与 Microsoft 相同的开发步调。
Wine 可以用两种不同的方式运行应用程序: 作为预编译的 Windows 二进制程序,或作为本地编译的 X11 (X Window 系统) 应用程序。前面的方法使用模拟把一个 Windows 应用程序和连接到 Wine 库上。通过 Wine 安装或简单的把 Windows 可执行文件复制到你的 Linux 系统上,你可以用模拟器直接运行你的 Windows 应用程序。
用 Wine 运行 Windows 应用程序的另一种方法需要拥有这个应用的源代码。不用本地 Windows 编译器编译它,象对其他 UNIX 应用程序所做的那样,你要用本地 Linux 编译器编译它 -- 例如 gcc -- 并连接上 Wine 库。这些本地连接的应用程序被称为 Winelib 应用程序。
1.2.3. Wine 的功能
wine所携带的特征,及可以运行的程序种类,都在不断的增长。这些功能的部分列表如下:
支持Win32的(Win9x/NT/Win2000 / XP /7/8) 程序,部分Win64和DOS程序
选择使用外部厂商的 DLL(比如,原始的 Windows DLL)
基于 X11 的图形显示器(到任何可能的 X 终端的远程显示器),文本模式控制台
Desktop-in-a-box 或可混合的窗口
对游戏的非常高级的 DirectX 支持
对声音的良好支持,可替换(alternative)的输入设备
打印机: 支持固有 Win16 打印机驱动程序,内部 PostScript 驱动程序
支持调制解调器、串行设备
Winsock TCP/IP 连网
ASPI 接口 (SCSI) 支持扫描仪、CD 刻录机 ...
Unicode 支持,相对高级的语言支持
Wine 调试器和可配置的跟踪日志消息
1.3. wine的版本
wine是一个开源项目,并有许多不同版本的wine供您选择。WineHQ目前提供基于时间的三个分支版本:稳定,发展,分期。 稳定的分支是上年度发行计划,有轻微的更新。这个版本的现有的代码在应用程序和游戏中已经工作得很好,目标是对测试新版本不感兴趣的用户。 开发和分期分支是每两周发布计划。开发分支是主分支,其中修复bug,并添加新的功能。 分期分支是开发分支加入几百个还没准备纳入主要分支的实验补丁。
这些版本可以通过Internet下载,有打包的二进制的形式和未编译源代码两种。此外,还可以通过使用Git仓库的最新可用的源代码安装wine的最先进的最新开发版本(更新一次,每周5天)。
wine的每个版本都有一个版本标记,格式如下:
wine-x.y.z
这代表wine版x.y.z. (有关标签的列表,在这里看到。)
x是主版本号。到目前为止,因为目前的版本编号系统中引入了更换一次。它将与下一个稳定版本(预计在2016年晚期)发生改变。 y是次要版本号。在秋天2015年开始,这一预期每年更换一次,每年秋季的稳定版本。如果y是偶数,那么这是一个“稳定”的版本。如果y是奇数,那么这是一个开发或升级版本。 z是版本号。为开发和分期的版本中,这是每两周递增。对于稳定版本,仅维护者决定更新时,版本号才递增。 分期分支与相应的开发分支相同的版本号,但附加“staging”的版本,例如,1.9.4-staging。
如果您使用的git,标签会添加git描述命令,看起来像:
wine-X.Y.Z-n-gccccccc
其中,n是补丁数量/应用的提交自X.Y.Z被释放,并ccccccc是最近提交ID十六进制数字的前几位数。例如:
wine-1.1.19-228-g1e256e4, wine-1.1.25-311-g3d6bb38, wine-1.1.32-584-g10b0b86。
只是wine的稳定版本之前,有所谓的“候选版本”,它具有以下形式的标签:
wine-x.y-rcn
表示 wine-x.y 的第n个候选版本
1.4. wine的替代品
有很多不通过wine运行其他软件的方法。如果你使用Wine运行应用程序遇到困难,您可能希望考虑,想想这些方法的可行性。
1.4.1. 原生应用
如果不是在wine下运行特定的Windows应用程序,一个经常可行的方案是运行不同的可以替代(原有功能)的*unix应用程序。许多尤其是较常用的Windows应用程序,如媒体播放器,即时通讯,文件共享,有相似的非常优秀的开源软件。此外,Windows程序的相当数量被移植到了Linux直接,完全省去了wine(或Windows)需要。这些替代方案应该通过系统包管理工具找到。
1.4.2. 其他操作系统
最明显的方法是直接在Windows上运行它。然而,安全性,许可证成本,向后兼容性,和机器的效率问题,可以显得困难的,这就是为什么wine是摆在首位。
1.4.3. 虚拟机
在软件层面上运行一个虚拟机,并在其上安装不同的操作系统。因此,你可以运行Linux系统,并在同一时间同时在同一硬件在虚拟机上运行Windows操作系统和应用程序。虚拟机不仅让您在相同的硬件安装和运行不同版本的Windows,还包括其他操作系统。
有几种不同的虚拟机产品摆在那里,有的还能够模拟不同平台上的x86硬件。开源Bochs,VirtualBox和QEMU几乎可以同时运行Windows和ReactOS。另外,商用虚拟机的产品包括VMware和微软的Virtual PC。
但是有显著缺点,不像wine这类模拟器,使用虚拟机必然会导致相当大的运行速度损失。此外,运行在虚拟机内的应用程序不能充分结合当前环境中的应用。例如,你不能将虚拟机中Windows系统的托盘图标或程序快捷方式,放在Linux的桌面,因为Windows的应用程序必须在虚拟机中。
第 2 章. 获得 Wine
一旦你已经认为wine是最适合你的,下一步就是决定要如何安装它。有三种方法从WineHQ,每个都有自己的优点和缺点安装wine。
2.1. 从包管理器安装
在 Debian 系统的多数情况下,你可以用一个简单的命令安装 Wine,作为 root:
# apt-get install wine
将通过 Internet 连接到一个 Debian 归档,接着下载 Wine 包并安装到你的系统上。
Redhat/RPM 用户可以使用 http://www.rpmfind.net 来搜寻可获得的 Wine RPM 二进制包。 这个页面包含以字母"W"开头的所有 rpm 包的一个列表,包括一些 Wine 包。 添加合适的更新源以后,运行:
# yum install wine
其它版本类似。
2.2. 从源代码安装
有时候,wine包不完全适合您的需求。也许他们是不适用于您的架构或发行,或者你想使用自己的编译器优化或禁用某些选项,或者你需要修改编译前的源代码的特定部分建立wine。作为一个开源项目,你可以自由地做所有这些事情与wine的源代码,其设置有逢wine发布。这种安装方式可以通过下载一个wine源存档,并通过命令行编译完成。如果您习惯了这样的事情,并有特殊的需求,这个选项可能适合你。
获得wine源档案很简单。每一个版本中,我们把压缩格式TAR.BZ2源包在WineHQ下载页面。并从源代码编译安装wine。
2.3. 从 Git 获得 Wine 源代码
Wine Git 的官方 Web 页是 http://source.winehq.org/。
首先,你需要使用 Git 得到最新的 Wine 源代码的一个复件。在 bash 中,过程可能如下:
git clone git://source.winehq.org/git/wine.git cd wine
这将从 winehq.com 取回整个 Wine 源代码树并把它放置到当前目录中(实际上在‘wine’子目录中 )。 Git 有大量命令行参数,所以有多种方式从修订历史中的某个地方取回文件。
2.4. 编译wine源代码
一旦你安装你需要的编译依赖,在终端窗口,在已经浏览到wine的源代码树,运行以下命令:
$ ./configure $ make depend $ make # make install
最后的命令需要root权限。虽然你不应该root权限运行的wine,你仍需要用这种方式安装。
2.5. 用补丁更新 Wine
如果你有 Wine 源代码,与二进制发布相反,你可以选择向源代码树提供补丁来修理缺陷并增加实验性的特征。可能你已经发现了一个缺陷,请向 Wine 邮件列表报告,并接收一个补丁来修理这个缺陷。你可以用 patch 命令运用补丁,它从 stdin 接受补丁:
$ cd wine $ patch -p0 < ../patch_to_apply.diff
要删除补丁使用 -R 选项:
$ patch -p0 -R < ../patch_to_apply.diff
如果你想要测试一下是否成功的提供了补丁(例如,如果这个补丁是从这个树的(比当前)老或新的版本建立的),你可以使用 --dry-run 参数来运行补丁而不写任何文件:
$ patch -p0 --dry-run < ../patch_to_apply.diff
patch 是从一个文件中提取补丁的聪明的方法,所以如果你保存了一封邮件,其中包含了给你的硬驱动器上的一个文件的内置(inline)的补丁,你可以在其上调用补丁而不须剥除邮件头部和其他文本。 patch 忽略看起来不象补丁的所有东西。
FIXME: 进一步解释 -p0 选项...
第 3 章. 运行 wine
本章将介绍wine运行的各个方面,例如 基本的wine调用,各种wine支持的命令行参数
3.1. 如何运行wine
你可以简单地调用wine命令来获得一个小的帮助信息:
用法:wine PROGRAM [ARGUMENTS...] 运行指定的程序
第一个参数应该是你想要的wine要执行的文件的名称。如果可执行文件在Path环境变量中,你可以简单地给可执行文件名。但是,如果可执行文件不在Path中,必须给予充分的可执行文件路径。例如,给定以下的位置:
Path="c:\windows;c:\windows\system;e:\;e:\test;f:\"
你可以运行文件 c:\windows\system\foo.exe 的有:
$ wine foo.exe
但是,你必须运行文件 c:\myapps\foo.exe 的使用此命令:
$ wine c:\\myapps\\foo.exe
(注意反斜杠转义'\')或:
$ wine ~/.wine/drive_c/myapps/foo.exe
有关运行文本模式(CUI)可执行文件的详细信息,请阅读文本模式程序部分。
3.2. 控制面板和程序
应用在wine中,会以在Windows中相同的方式去安装:通过运行安装程序。你可以只接受在哪里安装默认值,多数的安装程序将默认为C:\Program Files\文件,这是合适的。如果应用程序的安装要求,你可能会发现,wine在您的桌面上,创建了应用程序菜单图标。如果出现这种情况,您可以通过点击图标启动应用程序。
卸载事情的标准方式是为应用程序提供卸载程序,通常用“添加/删除程序”控制面板小程序注册。与访问wine等同,运行卸载程序(它位于一个wine源目录中的程序/卸载程序/目录)在终端:
$ wine uninstaller
某些程序会安装相关的控制面板小程序,这方面的例子是Internet Explorer和QuickTime的。您可以通过在终端运行进入wine控制面板:
$ wine control
这将打开安装的控制面板小程序的窗口,在Windows。
如果应用程序没有安装菜单或桌面项目,你需要运行命令行应用程序。记住,你安装了,是这样的:
$ wine "C:\Program Files\appname\appname.exe"
可能会做的问题。路径不区分大小写,但请记住,包括双引号。有些程序并不总是使用他们的目录和可执行文件命名明显,所以你可能要看看Program Files目录里面看到了什么放在哪里。
参见:命令列表。
3.3. 类似资源管理器的图形环境工具
如果你更喜欢使用图形界面来管理您的文件,你可能要考虑使用使用Winefile。这是wine自带的Winelib应用程序,可与其它wine项目被发现。这是查看您的驱动器的配置和定位文件的有用方法,再加上你可以直接从使用Winefile执行程序。请注意,很多功能尚未实现。
3.4. wine命令行选项
wine --help 显示了一个小的命令行帮助页面。
wine --version 显示wine版本字符串。用于验证您的安装。
3.5. 环境变量
3.5.1. WINEDEBUG=channels
wine是不完美的,许多Windows应用程序仍然不能无缺陷的在Wine中运行。为了让人们更容易跟踪每个错误背后的原因,wine提供了大量的调试通道,你可以发现它的。
每个调试通道,激活时,会触发记录显示给你的地方wine调用控制台消息。从那里,你可以将消息重定向到文件,并在您的休闲检查。
有关调试频道的更多详情,请查看wine开发人员指南。
3.5.2. WINEDLLOVERRIDES = "DLL文件名=OVERRIDES"
应用程序并不总是可能运行于内建的DLL的。有时,配合原生DLL可以更好地工作。虽然这些DLL顶替也可以用winecfg设置他们,但是你可能想使用WINEDLLOVERRIDES环境变量进行设置。
例子:
$ WINEDLLOVERRIDES="comdlg32,shell32=n,b" wine program_name
尝试第一次加载COMDLG32和SHELL32库,原生Windows DLL文件,如果原生加载失败,尝试内建的版本。
$ WINEDLLOVERRIDES="comdlg32,shell32=n;c:\\foo\\bar\\baz=b" wine program_name
尝试加载COMDLG32和SHELL32库,只是原生的Windows DLL;此外,加载 c:\foo\bar\baz.dll 只是内建库。
$ WINEDLLOVERRIDES="comdlg32=b,n;shell32=b;comctl32=n;oleaut32=" wine program_name
尝试加载内置的COMDLG32库,如果内置的加载失败,尝试原生版本;负载SHELL32只是内置的版本,COMCTL32始终为原生;OLEAUT32将被禁用。
有关DLL顶替的详细信息,请参阅DLLOVERRIDES本指南的部分。
3.5.3. WINEARCH=winXX
指定Windows架构来支持。可以被设置为Win32(仅支持32位应用程序),或Win64的(支持了WoW64模式的64位应用程序和32位的)。 由给定的wine前缀所支持的结构被设定为前缀的创建时间和之后不能改变。如果WINEARCH的架构与现有的前缀不匹配,wine将拒绝启动运行。(注:WINEPREFIX翻译为“前缀”)
3.5.1. WINEPREFIX=路径
3.5.4.1. 我的C:驱动器在哪里?
wine使用的是虚拟C:驱动器,而不是你真正的C:驱动器。在此所在的目录被称为“WINEPREFIX。”
默认情况下,它在你的home目录的.wine/drive_c子目录。 (MacOSX上,看到了MacOSX的常见问题如何找到这一点。)
~/.wine只是默认WINEPREFIX(又名“配置目录”或“瓶”)。
可以存储虚拟Windows在其他地方,您可以更改前缀wine通过改变WINEPREFIX环境变量(wine之外)使用。
要做到这一点,运行像在终端如下:
export WINEPREFIX=~/.wine-new wine winecfg
那么wine将建立在 ~/.wine-new 的配置目录。
您可以重命名,移动,复制和删除前缀不影响他人,和每个前缀都有自己的wineserver实例。
无论你看看 ~/.wine 或 $HOME/.wine 此Wiki中,你可以用通常 $WINEPREFIX替换它。
3.5.4.2. 如何创建一个64位系统上的32位WINEPREFIX?
目前有许多32位应用程序在64位WINEPREFIX工作的一些显著错误。要解决这个问题,你可以创建一个使用32位WINEARCH环境变量的一个新的WINEPREFIX。
在终端,输入:
WINEARCH=win32 WINEPREFIX=path_to_wineprefix winecfg
要用的新建路径,不要使用现有目录为WINEPREFIX。
一旦32位WINEPREFIX被创建,您不必再在命令行中指定WINEARCH使用它,作为现有WINEPREFIX的结构不能改变。
请注意,如果WINEPREFIX不是默认,安装任何东西时(包括winetricks),你必须指定WINEPREFIX变量:
WINEPREFIX=path_to_wineprefix wine start /unix path_to_installer
3.5.4.3. 如何运行两个程序,像在不同的计算机上?
在这里采用不同的WINEPREFIX将帮助你,因为他们模拟两个Windows计算机上,在本质。
正常运行的第一个程序:
WINEPREFIX="$HOME/.wine-first" wine first-program.exe
第二个需要在不同的前缀下运行,所以我们需要改变WINEPREFIX环境变量:
WINEPREFIX="$HOME/.wine-second" wine second-program.exe
第一的Program.exe和第二的Program.exe可以是同一程序的两个拷贝。
3.5.5. OSS音频驱动设置
如果您使用的是OSS音频驱动程序,你有多个设备,(即/dev/dsp*, /dev/mixer*)可以指定要与下面的环境变量要使用哪一个:
AUDIODEV=audio device MIXERDEV=mixer device MIDIDEV=MIDI device
举个例子:
$ AUDIODEV=/dev/dsp4 MIXERDEV=/dev/mixer1 MIDIDEV=/dev/midi3 wine program_name
3.6. wineserver命令行选项
-h
显示wineserver命令行选项的帮助信息。
3.7. 文本模式程序(CUI:控制台用户界面)
文本模式程序是程序,它输出仅做出来的文本(惊喜!)。在Windows中的术语,它们被称为CUI(控制台用户界面)的可执行文件,由反对GUI(图形用户界面)的可执行文件。的Win32 API提供了一套完整的API来处理这种情况,从基本特征是这样的文本打印,多达高层次的功能(如全屏幕编辑,色彩支持,光标移动,鼠标支持),通过像行编辑或功能去生/熟的输入流支持
鉴于特征的范围广以上,并在*niX上目前的使用情况,wine出来与运行控制台程序(又名一个可执行CUI)三种不同的方法:
bare streams wineconsole with user backend wineconsole with curses backend
这里的名字有点模糊。 “bare streams”是指没有额外支持的wine提供给Unix控制台访问和Windows控制台访问之间进行映射。两种其它方法需要使用特定的wine程序(wineconsole),其提供扩展设施。
第 4 章. 配置 Wine
4.1. 使用winecfg
现在所有的设置直接存储在注册表中,wine启动时可以访问到。
winecfg和其它部分应该已经安装在计算机上了。如果你不能弄清楚如何启动它,尝试先运行winecfg。
当程序启动时,你会发现有沿窗口顶部的标签:
应用程序 函数库 显示 桌面集成 驱动器 音频 关于
其中的“应用程序”和“函数库”选项卡设置对于一个应用程序的运行影响最大。其他设置则专注于让wine本身展示的方式。
注:应用程序,函数库和显示连在了一起!如果你在应用程序中选择“默认设置”,所有的库和显示选项卡中所做的更改将被更改为所有应用程序。如果你已经配置了应用程序选项卡下的特定应用程序,并将它选中,然后在库或图形所做的任何更改将只影响该应用程序。这样可以为特定应用自定义设置。
4.1.1. 应用程序设置
wine有模仿不同版本的Windows的行为的能力。一般情况下,最大的区别在于是否wine表现为9x版本或NT版本。 一些应用程序需要特殊的功能,更改此设置可能会导致应用程序发生错误行为。wine默认的Windows版本是Windows XP中。 如果你选择Windows 98,某些旧的应用程序可能有更好的表现。 在选项卡,你会发现有一个默认设置项。如果你选择,你会看到当前的所有应用程序使用默认的Windows版本。很复杂的应用最好从应用界面设置单独配置。要做到这一点:
点击添加应用程序按钮。 浏览,直到找到可执行文件。 它被添加后,您可以选择特定的Windows版本,作用于该应用程序。
4.1.2. 函数库设置
同样,一些应用程序需要特定的库才能运行。wine再现了Windows的系统库(所谓的原装的DLL),设计了运行方式相同,完全自定义的版本,但没有从微软要求的许可证。wine其内置版本DLL存在许多已知的不足之处,但在许多情况下,功能是足够的。仅使用内置的DLL可以确保你的系统是免费的。然而,wine 拥有装入原装的Windows DLL的能力。
只使用内置的DLL时,有时不能够运行应用程序,所以有时推荐原装DLL版本作为一个具体问题的解决方法。有的可能会直接复制到配置的目录 c:\WINDOWS\SYSTEM32(更多的驱动器中的部分),而另一些可能需要使用一个安装程序,请参见winetricks下一节。 这些DLL的原装版本不起作用:KERNEL32.DLL,GDI32.DLL,user32.dll和ntdll.dll,要求内置的版本不能被替换。
考虑到这一点,一旦你复制的DLL你只需要告诉wine尝试使用它。您可以配置wine在原装和内置的DLL两个不同级别之间进行选择。如果您在应用程序选项卡中选择默认设置,您所做的更改会影响到所有的应用程序。或者,您可以通过添加并选择在应用程序选项卡的应用程序覆盖在每个应用程序级别的设置。
要添加FOO.DLL一个顶替,进入FOO到函数库的新增库框并点击添加按钮。要改变DLL的行为,现有覆盖范围内选择它,然后选择编辑。默认情况下,新的加载顺序将是原装的Windows库优先于wine内建的(原装优先内建然后)。您也可以选择原装唯一,或者只有内置,或完全禁用它。
DLL文件通常会加载顺序如下:
当前目录。 Windows系统目录中。 Windows目录。 PATH变量目录。
注册表 [HKCU\software\wine\DllOverrides] 段
<DLL>{,<DLL>,<DLL>...} = <FORM>{,<FORM>,<FORM>...}
例如,要装载内置的 KERNEL 对(这里大小写都行):
"kernel,kernel32" = "builtin"
要装载固有 COMMDLG 对,但如果它们不工作则尝试内置的:
"commdlg,comdlg32" = "native,builtin"
要装载 COMCTL32:
"comctl32" = "native"
下面是一个很好的通用设置:
[DllOverrides] "advapi32" = "builtin, native" "comdlg32" = "builtin, native" "comctl32" = "builtin, native" "crtdll" = "builtin, native" "ddraw" = "builtin, native" "dinput" = "builtin, native" "dsound" = "builtin, native" "msvcrt" = "native, builtin" "msvcr80" = "native, builtin" "msvcp80" = "native, builtin" "riched20" = "native, builtin" "winmm" = "builtin" "winsock" = "builtin"
注意: 如果对于这个尝试将是失败的,它会使用第二个选项。
4.1.3. 显示设置
基本上有五个不同的图形设置可以配置。对于大多数人默认的就可行。
第一设定主要影响游戏和有点不言自明的。您可以防止鼠标离开全屏程序的窗口(例如游戏),默认是没有那个盒子检查。使用虚拟桌面时所最需要。
您可能会发现它有助于勾选模拟的虚拟桌面。在这种情况下,所有的程序将在单独的窗口中运行。您可能会发现这很有用,以此来考验越野车的游戏,变化(可能失败)的屏幕分辨率。他们围到一个窗口可允许在可用性下降的可能牺牲更多的控制权。你可能想尝试尺寸为800×600(默认值)或1024×768。
4.1.4. 驱动器设置
Windows要求wine模仿相当刚性的驱动配置。大多数人都熟悉的标准符号A:表示软盘,驱动器C:代表主系统磁盘驱动器等。wine使用相同的概念,这些驱动器映射到底层的本地文件系统。
wine驱动器配置相对简单。运行winecfg,在驱动器选项卡下,你会看到按钮来添加和删除可用的驱动器。当您选择添加一个驱动器,新的条目将被制成,默认驱动器映射将出现。您可以更改此驱动器通过改变什么的路径指向框。如果你不确定的路径,你可以选择浏览搜索它。卸下驱动器是选择驱动器,然后单击删除一样简单。
winecfg有自动检测您的系统上可用的驱动器的能力。我们建议您在尝试手动配置驱动器之前尝试。您只需通过自动检测按钮点击为您的系统上的驱动器wine搜索。
你可能有兴趣使用winecfg以外的方法,配置驱动器的设置,在这种情况下,你很幸运,因为它是相当容易的。所有的驱动器设置驻留在一个特殊的目录: ~/.wine/dosdevices。每个“驱动器”很简单,就是它实际驻留的链接。wine自动设置了两个驱动器上的第一次运行wine:
$ ls -la ~/.wine/dosdevices/ lrwxrwxrwx 1 wineuser wineuser 10 Jul 23 15:12 c: -> ../drive_c lrwxrwxrwx 1 wineuser wineuser 1 Jul 23 15:12 z: -> /
要添加其他驱动器,例如您的CD-ROM,只需创建一个指向一个新的链接:
$ ln -s /mnt/cdrom ~/.wine/dosdevices/d:
记用于链接DOS样式命名约定的 - 格式为一个字母后跟一个冒号,如 a:。所以,如果链接到你的C:驱动器指向 ~/.wine/drive_c,你可以解释为 c:\windows\system32 的意思 ~/.wine/drive_c/windows/system32。
4.1.5. 音频设置
wine可以用很多不同的音频子系统工作。你可以看到所选驱动程序,wine音频选项卡下的算出你。
您可以手动选择哪个设备将用于输出,输入,声音输出和语音输入。例如,您可以选择您的声音设备的数字输出而不是模拟之一。
4.1.6. 桌面集成
如果你让他们提供的wine可以加载Windows主题。允许您自定义程序的外观和样式,虽然这肯定不是使用wine或应用程序的必须步骤。wine支持较新的MSStyles类型的主题。不同于旧式Microsoft Plus!风格主题,该主题引擎支持特殊.msstyles文件,可以作用于所有的Windows控件。这是或多或少的同类主题化的现代桌面Linux都支持了多年。如果您想尝试了这一点:
下载Windows XP的主题。要确保它包含一个.msstyles文件。 使用winecfg的桌面集成选项卡安装,并选择新的主题。
4.2. 注册表和注册表编辑器
所有你通过winecfg的改变,除开驱动器设置以外,最终存储在注册表中。在Windows中,这是应用程序的结构和操作系统的中央储存库。同样地,Wine实现一个注册表,而winecfg没有发现的一些设置也可以在其中被改变(其实有很多设置,你需要动用注册表来改变的比wine本身的设置,一个偶然的机会)。
现在,wine本身使用注册表来存储设置,而这个事实一直存在争议。有些人认为它是太像Windows操作系统。为了解决这个问题有几件事情需要考虑。首先,实现一个注册表是完全不可能避免,因为应用程序需要在那里存储其设置。为了让wine在一个单独的配置文件中储存和访问设置,将需要另一套独立的代码做和Win32 API同样的事情。而这些的功能在wine中已经实现。(因此设计两套方案是没有必要的。)
4.2.1. 注册表结构
Windows注册表是一个复杂的树状结构,而甚至大多数Windows程序员都不能充分认识到注册表中的布局方式,以及其中不同的主键和千丝万缕的联系;一个完整的讲解远超出了本文的范围。本文只是您可能需要知道的最基本的注册表项:
HKEY_LOCAL_MACHINE
这个基本的键包含关于当前Windows安装的一切。
HKEY_USERS
这个基本的键包含每个用户安装的配置数据。
HKEY_CLASSES_ROOT
这是HKEY_LOCAL_MACHINE\Software\Classes的一个链接。它包含了描述之类的东西比如文件关联,OLE文档处理程序和COM类的。
HKEY_CURRENT_USER
这是HKEY_USERS\your_username的一个链接,即你的个人配置。
4.2.2. 注册表文件
上面描述的注册表布局在每个用户的~/.wine目录中的三个不同的文件:
system.reg
此文件包含HKEY_LOCAL_MACHINE。
user.reg
此文件包含HKEY_CURRENT_USER。
userdef.reg
此文件包含HKEY_USERS\.DEFAULT(即默认用户设置)。
这些文件被自动创建在您使用Wine的第一次。一组全局设置被存储在wine.inf文件和由RUNDLL32.EXE程序处理。运行wine第一次wine.inf文件被处理,以填充初始注册。如果wine.inf变化,例如升级到新版本的wine时,注册表也自动更新。
手动编辑这些文件修改注册表,是不可取的,因为它们是由wine内部管理。使用Regedit.exe,REG.EXE或使用标准的注册表功能的程序。
4.2.3. 使用注册表编辑器
一个简单的方法来访问和更改注册表是使用注册表编辑器工具。regedit取代了Windows中类似的程序,用来提供包含所有键的注册表系统级视图。当您启动它,你会立即注意到在文本文件中显示的神秘钥匙是以分层方式进行组织。
要通过注册表中导航,点击左侧的按键更深入的研究。要删除密钥,请单击它并选择从编辑菜单中删除。要添加一个键或值,找到你想要把它并选择新建从编辑菜单。同样,您可以通过在右侧窗格中突出显示,并从编辑菜单中选择修改修改现有的密钥。执行这些相同的操作另一种方法是在键或值单击鼠标右键。
与wine用户相关的设置存储在HKEY_CURRENT_USER\SOFTWARE\wine键值中。大多数winecfg更改的设置,写入到该区域的注册表中。
4.2.4. 系统管理技巧
有了上面的文件结构,可以为系统管理员配置系统,使系统的安装wine(和应用程序)可以被所有用户共享,而且还让广大用户都拥有自己的个性化配置。在安装了wine和希望用户能够访问的windows应用软件以后,管理员可以将由此产生的system.reg复制到全局注册表目录(我们假定将驻留在/usr/local/etc),如下:
cd ~root/.wine cp system.reg /usr/local/etc/wine.systemreg
甚至将这些符号链接返回到管理员帐户,使其以后安装的应用程序更容易全局化:
ln -sf /usr/local/etc/wine.systemreg system.reg
你也许会做同样的user.reg为好,但该文件中包含用户特定的设置。每个用户都应该有自己的该文件的副本的权限来修改它一起。
你要注意的驱动器映射。如果你共享system.reg文件,你会想要确保的注册表设置,在每个用户的~/.wine /的DosDevices驱动器映射兼容。根据经验,一般情况下,越接近你把你的驱动器映射到默认的配置,更容易,这将是管理。您可能会或可能无法共享部分或全部实际的C:驱动器最初安装应用程序。一些应用程序需要编写特定的设置到驱动器的能力,特别是那些专为Windows 95/98 / ME。
请注意,使用的 tools/wineinstall 脚本,做一些这个,如果你安装了Wine源作为根,但它不再一样。
谨慎的最后一句话:小心你的管理员账号怎么办 - 如果你复制或链接管理员的注册表到全局注册表,任何用户可能能够读取管理员的喜好,这可能不是如敏感信息的好(密码,个人信息,等等)存储在那里。只有使用管理员帐户来安装软件,而不是日常工作;使用普通用户帐户的。
4.2.5. 注册表键的完整列表
你会发现在维基有用的注册表项和值的向上最新名单。
4.3. 其他事项配置
这部分是你可以用来配置剩下的事情。它也可作为技巧和窍门的集合来获得最大的使用Wine的。
4.3.1. 串行和并行端口
串口和并口配置非常类似于驱动器配置 - 简单地创建~/.wine/DosDevices与该设备的符号链接。遵循串行端口后跟一个数字,如COM1,COM2等等。同样,并行端口使用LPT后跟一个数字,例如LPT1字融为一体的命名约定。你应该直接链接到这些相应的Unix设备,例如/dev/ttyS0来和/dev/lp0的。请确保您有需要的访问权限给该设备。 例如,要配置一个串口和一个并口,运行以下命令:
ln -s /dev/ttyS0 com1 ln -s /dev/lp0 lpt1
4.3.2. 网络文件夹共享
Windows共享可以使任何试图访问 \\myserver\some\file的映射到 UNC/目录将查找的~/.wine/dosdevices/unc/myserver/some/file。 例如,如果您使用的Samba挂载 \\myserver\some 一些在 /mnt/smb/myserver/some ,那么你可以做
ln -s /mnt/smb/myserver/some unc/myserver/some
(不要忘记创建UNC目录,如果它不存在)。
4.3.3. 字体
字体配置,以前是一个棘手的问题,现在要简单得多。 (注:wine1.5以后已经解决了中文字体显示的问题,不需要再复制simsun.ttf到c:\windows\fonts。)
4.3.4. 打印机
wine可以用本地CUPS打印系统直接交互来查找您系统上可用的打印机。wine配置打印机是确保您的CUPS配置的作品一样简单。wine仍然需要lpr命令(从CUPS),打印文档时。
如果不使用CUPS,老BSD的打印系统使用:
所有的 /etc/printcap文件的打印机在wine自动安装。 wine需要为每个打印机PPD文件(generic.ppd自带wine)。 打印文档时使用lpr命令
4.3.5. 扫描仪
在Windows中,扫描仪使用TWAIN API来访问底层硬件。wine内置TWAIN DLL简单地将那些请求发送给Linux的SANE库。因此,利用扫描仪在wine你首先需要确保您可以通过SANE访问它。之后,你需要确保你有xscanimage可供使用。目前,它是随理智前端包,但它可能无法与您的分发来安装。扫描仪的访问目前已知有问题。如果你发现你的作品时,请考虑更新用户指南的这一部分使用SANEwine提供细节。
4.3.6. ODBC数据库
wine的内置ODBC系统中,与打印系统,被设计成在较高水平横跨到Unix系统挂钩。而不能确保所有的Windows代码在Wine的工作,它使用一个合适的Unix ODBC供应商,如unixODBC数据。因此,如果您配置wine使用内置的ODBC32.DLL,wineDLL将接口到你的Unix ODBC包,并让这做的工作,而如果您配置wine使用本机ODBC32.DLL它会尝试使用本土的ODBC32等。
第 5 章. Wine的错误报告和调试
5.1. 验证您的wine配置
看看从wine--version输出,以确保您正在运行最近wine的版本。 看在 ~/.wine/dosdevices ,以确保你的c:指向正确的挂载点。 在使用不同的Windows版本的设置。 使用不同的启动路径 修改DLL的加载顺序设置 确保有与wine依赖的这些包没有任何问题 使用不同的图形用户界面模式 重新配置wine 变化wine帐户的新版本
5.2. 调试 --debugmsg [通道]
Wine 仍不完善,并且许多 Windows 应用程序仍然不能在 Wine 下运行而没有 bug(但它们中的许多程序在本地 Windows 下运行也不能没有 bug!)。为了易于人们找出(track down)导致每个 bug 的原因。Wine 提供了许多用于窃听的调试通道。
每个调试通道在活跃的时候,将触发把日记消息显示到你调用 wine 的控制台上。你可以把消息从它重定向到一个文件中并在你有空时检查它。但是要事先警告你! 一些调试通道可以生成难以置信的大量日记消息。最多产的犯罪分子(offender)有 relay,它在每次调用一个 win32 函数的时候吐出(spits out)一个日记消息,win ,它跟踪 windows 消息传递,当然还有 all ,它是所有现存的调试单一通道的一个别名。对于一个复杂的应用程序,你的调试日志文件可能很容易的就达到 1 MB 和更多。依赖于你运行程序多长时间,一个 relay 经常可以生成多于 10 MB 日志消息。记录日志使 Wine 减慢许多。所以除非你真的想要日记文件,否则不要使用 --debugmsg。
在每个调试通道中,你可以进一步指定一个 message class,来过滤出不同严重程度的错误。四个消息类是: trace、fixme、warn、err。
要开启一个调试通道,使用形式 class+channel。要关闭它,使用 class-channel。要在同一个 --debugmsg 选项中列出多于一个通道,用逗号分隔它们。例如,要求在 heap 通道中的 warn 类消息,你可以项下面这样调用 wine:
$ wine --debugmsg warn+heap program_name
如果你去掉了消息类,wine 将显示这个通道的所有四类消息:
$ wine --debugmsg +heap program_name
如果你想查看除了 relay 通道的所有日志消息,你可以象下面这样去做:
$ wine --debugmsg +all,-relay program_name
下面是在 Wine 中所有调试通道和类的一个主列表。在以后的版本中可能增添(或减去)更多的通道。
all accel advapi animate aspi atom avifile bitblt bitmap caret cdrom class clipboard clipping combo comboex comm commctrl commdlg console crtdll cursor datetime dc ddeml ddraw debug debugstr delayhlp dialog dinput dll dosfs dosmem dplay driver dsound edit elfdll enhmetafile event exec file fixup font gdi global graphics header heap hook hotkey icmp icon imagehlp imagelist imm int int10 int16 int17 int19 int21 int31 io ipaddress joystick key keyboard ldt listbox listview local mci mcianim mciavi mcicda mcimidi mciwave mdi menu message metafile midi mmaux mmio mmsys mmtime module monthcal mpr msacm msg msvideo nativefont nonclient ntdll odbc ole opengl pager palette pidl print process profile progress prop propsheet psapi psdrv ras rebar reg region relay resource richedit scroll segment seh selector sendmsg server setupapi setupx shell snoop sound static statusbar storage stress string syscolor system tab tape tapi task text thread thunk timer toolbar toolhelp tooltips trackbar treeview ttydrv tweak typelib updown ver virtual vxd wave win win16drv win32 wing wininet winsock winspool wnet x11 x11drv
关于调试通道的详情,请查看 Wine 开发者指南。
5.3. 报告bug
收集具体问题细节及当前环境,在论坛,或IRC频道反馈。
第六章. 找出和报告缺陷
6.1. 如何报告一个缺陷
编写:Gerard Patel
(提取自 wine/documentation/bugreports)
有两种方式来报告一个缺陷。其一是使用一个简单的 perl 脚本,如果你不想花很长时间来生成报告则建议你使用这种方式。它被设计来供所有人使用,从新手到高级开发者。你也可以通过困难的方式制作一个缺陷报告 -- 高级开发者可能有此偏好。
6.1.1. 简单的方式
要使这种方法工作你的计算机上必须有 perl。要找出你是否有 perl,可运行 which perl。如果它返回象 /usr/bin/perl 这样的东西,则你有可运行的 Perl。否则跳到(skip on down to)"困难方式"。如果你不确信,继续进行好了。当你运行这个脚本时,如果你没有 perl,状况是会是显而易见的。
把目录改变为 <dirs to wine>/tools
键入 ./bug_report.pl 并给随着这个目录。
向 comp.emulators.ms-windows.wine newsgroup 发送一个消息并加上 "Nice Formatted Report" 附件。如果可能的话,上载完整的调试输出到一个 web/ftp 服务器并在你的消息中提供地址。
6.1.2. 困难的方式
一些简单的建议可以使你的缺陷报告更有用(这样更容易得到回答和修理):
尽可能多的传送信息。
这意味着我们更多的信息而不是一个简单的 "我运行 MS Word 的时候它崩溃了。你知道为什么吗?" 至少包括下列信息:
你使用的 Wine 版本(运行 wine -v)
你使用的操作系统,什么发布(如果是的话),和什么版本
编译器和版本(运行 gcc -v)
Windows 版本,如果你安装了的话
你正在尝试运行的程序,它的版本号,和从中获取这个程序的一个 URL(如果可获取的话)
你启动 wine 的命令行
你认为有关的或有帮助的任何其他信息,如在 X 问题的情况下 X 服务器版本,libc 版本等。
加上 --debugmsg +relay 选项重新运行程序(比如,wine --debugmsg +relay sol.exe)。
如果在运行你的程序时 Wine 崩溃了,这些信息对于对我们找出导致崩溃的原因很重要。这可能输出大量(好多 MB)信息,所以最好输出到一个文件中。在 Wine-dbg> 提示符出现的时候,键入 quit。
你可能想要尝试 +relay,+snoop 而不是 +relay,但是请注意 +snoop 是非常不稳定的并且经常比一个简单的 +relay 更早崩溃! 如果在这种情况下,则请只使用 +relay!! 在多数情况下加上 +snoop 时的缺陷报告是没用的!
要跟踪输出请使用下列命令:
所有 shell:
$ echo quit | wine -debugmsg +relay [other_options] program_name >& filename.out; $ tail -n 100 filename.out > report_file
(这将把 wine 的调试信息只打印到文件接着自动退出。使用这个命令可能是个好主意,因为 wine 打印输出太多的调试信息,它们会溢出终端,吞噬 CPU。)
tcsh 和其他 csh 式样的 shell:
$ wine -debugmsg +relay [other_options] program_name |& tee filename.out; $ tail -100 filename.out > report_file
bash 和其他 sh 式样的 shell:
$ wine -debugmsg +relay [other_options] program_name 2>&1 | tee filename.out; $ tail -100 filename.out > report_file
report_file 将包含最后一百行调试输出,包括寄存器复制和回溯(backtrace),这是信息中最重要的部分。即使你不理解它们的意思,也请不要删除它们。
传送你的报告到新闻组 comp.emulators.ms-windows.wine
在你的帖子中,包括第1部分的所有信息,并插入在第二部分中的输出文件中的文本。如果你这样作了,你收到一些有帮助的响应的机会就会很大。
6.1.3. 问题和注释
如果读了本文档之后还有一些东西搞不明白,或者认为可以解释的更好,或者是应该包括的,请向 comp.emulators.ms-windows.wine 发帖子来让我们知道如何改进这个文档。
原文出处:http://www.linuxgame.org/bbs/?thread-61-1-1.html
原文作者:寒蝉退士