Wine 中文官方用户指南

Wine 中文官方用户指南

第一章 介绍

 

1.1 概览/关于

1.1.1 本文档的目的和目标读者 本文档,名为《Wine使用者指南》,既是一个简单的安装指南,又是一个扩展性的参考指南。本文适合新的Wine用户,也适合有经验的Wine用户。它以 在文档中提供所有配置特性和支持域来提供完全的一步一步的安装和配置指导,同时也提供起重要作用的扩展性的参考资料。


1.1.2 更多问题和评论 如果在检视这份指南,FAQ,和其他相关文档后仍然有一些东西您不能指出,您可以给我们发送邮件。《邮件列表》章节包含许多邮件列表和IRC频道,它们都 是不错的地方,您可以在那里获取帮助和提出建议。如果您有自己独到的见解,并确信您能更好地表述,您可以在Wine的文档本身添加一个 《bug 报告》或者《发布一个补丁》文件。

1.1.3 内容概览/采取的步骤  为了能够使用使用Wine,您必须首先有一个安装的工作。这个指南将帮助您把您的系统从空的,没有Wine的状态变为一个值得炫耀的新鲜的,安装最新 Wine。 第一步,《获取Wine》,举例说明多种方法来把获取的Wine的文件装到您的计算机上。 第二步,《配置Wine》,展示如何依您的个人需求来配置一个Wine的安装。 最后一步,《运行Wine》,包含特殊的步骤,可使一特定应用程序在Wine下更好运行, 并提供有用的连接,以便您可获取更多的帮助。

1.2 什么是wine?

1.2.1. Windows 和 Linux  不同的程序是为不同的操作系统设计的,大多数情况下不能在其他系统上运行。例如,Windows程序,不能在Linux上运行,因为它们包含有Linux 系统不能理解的指令,除非它们在Windows环境下被翻译。同理,Linux程序,也不能在Windows操作系统下运行,因为Windows不能解释 其所有的指令。

这个情况呈现出一个基础的问题,在那些想要同时想要在Windows和Linux下运行软件的人面前。通常的解决方法是在同一台计算机上 同时安装这两套系统,这被称为“双(重)启动”。当需要Windows程序时,使用者重启并进入Windows来执行之。当需要Linux程序时,使用者 重启并进入Linux。这个方法呈现出巨大的困难:不仅是使用者必须经受经常重启的折磨,而且两个平台的程序不能同时运行。

在系统上安装Windows也增加了额外的负担:该软件昂贵,需要独立的磁盘分区,并不能阅读多数的文件系统,使得在各个系统间共享数据变得困难。


1.2.2 什么是wine,它如何能帮助我? Wine使得在任何“类Unix”操作系统(特别是在Linux)上运行Windows程序成为可能。在其核心,Wine是一个Windows应用程序接 口(API)库,作为一个Windows程序和Linux之间的桥梁。

想象Wine是一个兼容层,当Windows程序尝试执行一个通常情况下Linux不能理解的功能(函数),Wine将把该程序的指令翻 译成Linux能够理解的指令。例如,一个程序要求系统创建一个Windows的pushbutton或text-edit field,Wine将其转换为以使用标准X11协议的视窗管理器的命令形式的Linux的等价物。

如果您有权获取Windows程序的源代码,Wine也能用来重新编译您的程序为Linux能更容易理解的格式。Wine仍然需要用来启动重新编译后的程序,但是在Linux里本地地编译Windows程序有许多优点。

更多信息尽在《Winelib使用者指南》。


1.2.3 Wine的特性 贯穿其开发过程,Wine已经在它的支持的特性和能运行的程序方面不断成长。 下面是一个不完整的这些特性的列表: ·支持运行Win32(Win 95/98, NT/200/XP), Win16(Win 3.1)和 DOS程序。 ·选择性地使用外部的第三方DLL文件(比如包含于Windows中的那些)。 ·基于X11图形显示,允许远程显示到任何X终端,甚至文本终端。 ·整合于桌面或可混合视窗。 ·游戏的DirectX支持。 ·能很好支持各种声卡驱动,包括OSS和ALSA。 ·支持alternative input devices。 ·打印:PostScript接口驱动(psdrv)到标准Unix PostScript 打印服务。 ·调制解调器,串设备支持。 ·Winsock TCP/IP 网络支持。 ·扫描仪,CD刻录机,及其他设备的ASPI接口(SCSI)支持。 ·先进的unicode和外语支持。 ·特性完全的Wine调试器(Wine debugger)和可配置的追踪记录信息来使问题捕捉更容易。

1.3 wine的版本

1.3.1 从WineHQ来的Wine Wine是一个开源项目,有许多不同版本的Wine,因此,您可以从中选择。 标准的Wine版本来自于断断续续的发布(大概一月一次),可以从互联网上 下载预先打包好的二进制形式和现成的用来编译的源代码形式。 作为一个选择,通过使用在CVS服务器上的最近的可用的源代码,您可以 安装Wine的开发版。 参见下一章,《获取Wine》,您可以了解更多细节。 1.3.2 Wine的其他版本

有许多程序是以这样或那样的方式衍生于标准Wine代码库。它们中的一些是来自于积极捐助Wine项目的公司的产品。

这些产品尝试显得突出或区别于标准版本的Wine,并提供更好的兼容性, 更容易的配置, 以及商业化的支持。如果您想要这类东西, 考虑购买这类产品也是个好主意。

表 1-1. 各种不同的Wine产品

产品 描述 发布形式

CodeWeavers CrossOver Office CrossOver Office 允许您在Linux中安装您喜爱的 Windows办公应用程序, 而不需要一个微软操作系统许可证。CrossOver 包含一个容易使用的, 单击使用的界面, 它使得安装 Windows 应用程序简单而快捷。 商业版;提供 30天不限制任何功能的演示版。

CodeWeavers CrossOver Office Server Edition CrossOver Office 服务器版允许您运行您喜爱的 Windows 办公应用程序在一个Linux下的发布的瘦客户端环境, 而每个客户机不需要微软操作系统许可证。CrossOver Office 服务器版允许您满足字面上地数百并发的用户的需求, 全部来自一个单独的服务器。

 

 


1.4 wine以外的选择

1.4.1 原生应用程序

除了运行通过 Wine 运行特定的 Windows 应用程序,一个经常的可行的选项是简单地运行一个不同的应用程序。

许多 Windows 应用程序,特别是更经常使用的,比如媒体播放器,即时通讯,以及文件共享程序都有非常好的的开源代替品。此外,相当大量的 Windows 程序已经被直接地移植到了 Linux ,完全地排除了对 Wine (或 Windows)的需要。

1.4.2 另一个操作系统

可能最显而易见的方法来使得一个 Windows 应用程序运行是简单地在 Windows 上运行它。然而,安全性,许可证费用,向后兼容性,以及机器效能问题将使这一方法变得困难,所以 Wine 是如此有用。

另外一个选择是使用 ReactOS ,它是一个完全开源的 Windows 之外的选择。ReactOS 很大程度上与 Wine 项目共享代码。不是在 Linux 的顶端运行 Windows 应用程序,而是在 ReactOS 内核的顶端运行之。ReactOS 也提供与 Windows 驱动程序文件的兼容性,允许使用硬件而无需起作用的 Linux 驱动程序。

1.4.3 虚拟机

您可以不在您的机器上全新地安装操作系统,而可以在软件层面运行一个虚拟机,并在其上安装一个不同的操作系统。这样,您可以运行一个 Linux 系统并同时运行 Windows 与您的应用程序一起在一个虚拟机里同时地在同一硬件上。

虚拟机不仅允许您在同一硬件上安装并运行不同版本的 Windows ,而且允许您运行其他操作系统,包括 ReactOS。

有许多不同的虚拟机,而且其中一些也能在不同平台上模拟 x86 硬件。开源的 Bochs 和 QEMU 能虚拟地运行 Windows 和 ReactOS 。其他的,商业虚拟机有 VMware 和 微软的 VirtualPC 。

然而,使用虚拟机有巨大的缺点。不像 Wine,这些程序是模拟器,所以不可避免的会有实实在在的速度下降。更为重要的是,在虚拟机里运行应用程序使得应用程序不能被完全地整合于当前环境之 内。例如,您不能让 Windows 系统托盘图标或应用程序快捷方式出现在您的 Linux 桌面的系统托盘图标或应用程序快捷方式的旁边。因为 Windows 应用程序必须完全地驻留于虚拟机之内。

第二章 获取wine

 

2.1 wine安装方法

一旦您已经决定 Wine 正合适您的需求,下一步是决定您想怎样安装之。有3种方法安装来自 WineHQ 的 Wine ,每一种都有其优点和缺点。

2.1.1 从一个包安装 迄今为止最为容易的安装 Wine 的方法是使用预先打包好的 Wine 的版本。这个包包含可以运行的二进制文件,它们特别地为您的发行版而编译。通常它们的功能性和完整性已被打包者测试过。 包是推荐的安装 Wine 的方法。我们使其在

WineHQ


下载页

易于获取。这些总是最近可用的包。由于受欢迎,在其他地方在官方发行版仓库都能发现 Wine 包。然而它们可能有时是过时的,取决于您的发行版。 包也易于升级,有些发行版可以无缝地升级 Wine ,只需几次点击。从源代码包创建您自己的可安装的二进制包也是可能的,虽然它已经超出了本指南的范围。

2.1.2 从一个源归档安装 有时 Wine 包并不完全符合您的需求。可能它们在您的架构或发行版上不可用,或者您需要使用您自己的编译器优化选项来创建 Wine ,并关闭一些设置。或者可能您需要在编译之前修改源代码特定的部分。

作为一个开源项目,您可以对 Wine源代码自由地做上述之事,它将随每个 Wine版本发布。这个安装方法可以通过下载一个 Wine源归档并从命令行编译来完成。如果您觉得做这些事很舒服并有特殊的需求,这个选择正合适您。

获取 Wine源归档是件容易的事。每个版本,我们都以 tar.gz 格式弄一个源代码包。您可以从

WineHQ


下载页

得到之。从源代码编译安装 Wine 比使用包安装要难一些,但是我们将深入讲解之并试图帮助您完成这个方法。

2.1.3 从CVS快照安装 如果您希望试验 Wine开发 的最新成果,或者您自己想帮助开发 Wine,您可以从我们的 CVS 服务器下载最近的源代码。关于从 Wine CVS仓库 下载的操作说明书可以在 http://www.winehq.org/site/cvs 获得。

请注意,通常的关于使用开发版本的警告对其有效。CVS服务器 上的源代码很大程度上是未经测试的,甚至不能正确地编译。但是,它是测试下一版 Wine 能如何工作的最佳途径,并且如果您要修改源代码,最好是获取最近的拷贝。CVS仓库对应用程序所有者也有用,他们可以测试应用程序是否仍然可以在下一个 Wine发布下正确工作,或者近期的补丁是否使情况有所改善。

如果你对帮助我们使得一个应用程序在 Wine 下工作感兴趣,请参阅 guide to helping applications work .

2.2 从一个包安装wine

2.2.1 安装一个全新的包 在一个全新的系统上安装一个包是非常直截了当的。简单地下载并安装包使用任何您的发行版提供的工具。通常在安装之前不需要明确地移除旧版本,因为现代的 Linux 发行版应该能自动地升级并替换之。 如果你从源代码安装了 Wine, 但是, 在安装一个 Wine 包之前,您应该移除它。 参阅《卸载从源代码安装的 Wine》获取正确的指导。

2.2.2 不同的发行版 Wine 在巨大数量的不同的 Linux 发行版上工作,也能在其他 类Unix 系统,比如 Solaris 和 FreeBSD, 每一种都有其特定的安装和管理包的方法。但是,幸运地,相同的基本思想对所有它们的都起作用,而安装 Wine 应该不比安装任何其他软件更难,不管您用的是什么发行版。卸载 Wine 包也很简单,并且在现代的 Linux 发布里通常是通过与安装包相同的易用界面来完成。

我们将不包括在各种系统打包和包管理的安装或卸载 Wine 包的方法的特点。但是,最新近的安装注记为特定发行版能够在 WineHQ 网页的

HowTo

找到。如果您需要更多的关于指出如何简单地安装一个 Wine 包的帮助,我们建议您查阅您的发行版的文档,支持论坛,或 IRC 频道。

2.3 从源代码安装wine

2.3.1 获取创建依赖关系 在 Wine 运行时,使用许多开源的库。虽然 Wine 并不严格地依赖于这些库而且能够在没有 它们中的大多数时编译,但是在编译时拥有这些库,Wine的功能性将得到提升。

在过去,许多用户问题是由于人们在从源创建 Wine 时,没有必要的开发库所致;由于这个 以及其他的原因,我们高度推荐通过二进制包安装,或者通过创建能够自动满足其依赖关系 的源代码包安装。

如果您希望手动安装创建依赖关系,有许多种方法可以检视您是否缺少一些有用的开发库。 最为直接的方法是在您编译 Wine 之前,查看 configure 程序的输出,以确定任何重要的东 西是否缺少。如果是那样,简单地安装缺少的东西,然后在编译之前重新运行 configure。 您也可以检查 configure 修改了的文件,(include/config.h.in)并检视是否有文件 configure 试图寻找但没有找到。

2.3.2 编译wine 一旦您已经安装了您需要的创建依赖关系,您已经做好了编译包的准备。在终端窗口,在导航到 Wine 源代码树后,运行下面的命令: $ ./configure

  1. make depend
  2. make
  3. make install

末尾的命令要求 root 权限。尽管您决不应该以 root 运行 Wine ,您将需要以这样的方式安装 Wine。

2.3.3 卸载从源代码安装的 Wine 要卸载从源代码安装的 Wine, 您需要再一次在终端里导航到您用来安装 Wine 的同一个目录。然后运行下面的命令:

  1. make uninstall

这个命令将需要 root 权限,并且应该从您系统上移除所有的 Wine 二进制文件。但是,它将不移除您的 Wine配置 以及位于您用户的 home目录 (主目录)里的应用程序,所以您可以自由地安装另一版本的 Wine 或者手动地删除该配置。

第三章 配置wine

 

最最通常的配置变更可以通过使用 Winecfg 工具来达成。我们将经历一个简单的,一步一步的介绍,这个介绍是对 Winecfg 的介绍。并概要的给出可用的设置选项。在下一节我们将看到您可以通过使用 regedit 做出更高级的变更,也提供一个完全的参考给所有的 Wine 配置设定。最后,一些您可能想要配置的东西超出了 Winecfg 和 regedit 的范围,我们将看看它们。


3.1 使用winecfg 在过去,Wine 使用一个特殊的配置文件,它能在 ~/.wine/config 中找到。如果您仍然使用一个提及这个文件的 Wine 的版本 (即2005年六月以前的版本)。您应该在您要做任何其他事情之前进行升级。所有的设定现在都直接地存储于注册表中并且在 Wine 启动时被 Wine 存取。

Winecfg 应该已经与 Wine 程序的其他部分被一齐安装到了您的计算机上。如果您不能指出如何启动它,尝试运行命令:

$ /usr/local/bin/winecfg

或者可能仅仅是:$ winecfg

当该程序启动了,您将注意到在窗口的上方有如下的一排标签:

·Applications (意为:应用程序)

·Libraries (意为:库)

·Graphics (意为:图形)

·Appearance (意为:外观)

·Drives (意为:驱动器)

·Audio (意为:声音/音频)

·About (意为:关于)

在 Applications (意为:应用程序) 和 Libraries (意为:库) 标签里更改设定将最能对运行一个程序产生影响。其他的设定偏重于使 Wine 本身以您希望的方式运转。

注意:Applications (意为:应用程序), Libraries (意为:库), 和 Graphics (意为:图形) 标签是联系在一起的! 如果您在 Applications (意为:应用程序) 标签里选择了Default Settings(默认设定),在 Libraries (意为:库), 和 Graphics (意为:图形)标签里的所有更改将被变更为对所有的应用程序生效。如果您已经在 Applications (意为:应用程序)标签里配置了一个特定的应用程序并且选择了它,那么在 Libraries (意为:库), 和 Graphics (意为:图形)里所做出的更改将仅仅影响该应用程序。这样允许定制设定给特定的应用程序。

3.1.1 应用程序设定 Wine 有能力模仿不同版本的 Windows 的运转。一般地,最大的区别是 Wine 以 Win9x版本 或 NT版本方式运转。一些应用程序要求特定的运转模式以运行,而更改此设置可能使一个运行有错误的应用程序工作。最近,Wine的默认 Windows 版本变成了 Windows 2000。人所共知,如果您选择 Windows 98 ,许多应用程序将工作得好些。 在该标签内您将注意到有一个 Default Settings (默认设定)入口。如果您选择之,您将看见给所有应用程序的当前默认 Windows 版本。一个问题多多的应用程序最好在默认设定之外单独地配置。要这么做: 1 点击 Add application (添加应用程序)按钮。 2 浏览直到您定位了该 .exe 文件。 3 当它被添加后您可以选择特定的 Windows 版本,Wine 将为该程序模拟之。


3.1.2 库设定 同样,一些应用程序需要特定的库,以便运行。Wine重新制造了 Windows 系统库--即所谓的 本地(原生)DLL 和完全地定制版本设计来以完全相同的方式作用而不需要来自微软的许可证。

Wine 的内建版本有许多广为人知的不足,但是许多情况下其功能性是足够的。仅使用 内建的 DLL 确保您的系统是 非微软的。

但是,Wine有能力载入 本地(原生) Windows DLL。

3.1.2.1 DLL Overrides 不是总能使用 内建DLL 运行一个应用程序的。有时 本地(原生)DLL 简单地工作得更好。 在你已定位了一个在一个 Windows 系统上的 本地(原生)DLL 后,您将需要把它放在一个合适的地方以便 Wine 找到它,而后配置使它被使用。一般说来您需要把它放在一个您已经配置为 c:/windows/system 的目录 (获取更多信息在 驱动节)。有四个 DLL 您应该决不/从不尝试使用 本地(原生)版本:kernel32.dll, gdi32.dll, user32.dll, 和 ntdll.dll。 这些库要求低级的 Windows 内核存取而其不存在于 Wine 中。 保持它在您脑海中,一旦您已经拷贝了 DLL 您需要告诉 Wine 尝试使用之。您可以配置 Wine 来在 本地(原生)DLL 和 内建的DLL 之间选择在两个不同的级别。如果您有 Default Settings (默认设定)选择在 Applications (意为:应用程序)标签,您所做的改变将影响所有的应用程序。或者,您可以通过在Applications (意为:应用程序)标签里改写全局设定在“每一个应用程序” 级别。 要添加并override FOO.DLL,键入“FOO”在标有 New override for library(意为:新的库的override)标签的盒子里:并点击 Add(添加)按钮。要改变 DLL 如何运转,选择它在 Existing overrides(存在的overrides):盒子和选择 Edit(意为:编辑)。您也可以选择 native only(意为:仅本地),builtin only(意为:仅内建),或全部关闭之。

3.1.2.2 关于系统 DLL 的助记 Wine 团队已经决定要创建 假的 DLL 文件来欺骗许多程序,这些程序要检查文件是否存在以决定某功能是否可用(比如 Wincosk 和 TCP/IP 网络)。如果这对你来说是一个问题,您可以创建空文件于配置的 c:/windows/system目录来使得程序 认为它在那里,而 Wine 的内建DLL 将被载入当程序真的需要它时。(很不幸,tools/wininstall自己并不创建这些空文件。) 应用程序有时也从物理文件检查版本资源(例如,决定 DirectX 的版本)。空文件在这种情况下不起作用,有必要安装完全本的资源的文件。这个问题正在解决中。与此同时,您仍然需要抓一些真的 DLL 文件来愚弄这些应用程序。 当然有 Wine 当前没有很好(或根本没有)实现的 DLL。如果您没有真的 Windows 可以从中拷贝必要的 DLL,您总是可以从一个 Windows DLL 归档站点得到一些,这些站点可以从 Internet 搜索引擎搜索得到。请确保遵守任何您抓到的 DLL 的许可证;有些是可再分发的,而有些不是。

3.1.2.3 缺失的 DLL 万一 Wine 抱怨缺失一个 DLL,您应该检查是否该文件为一个 公共可用DLL 或一个属于您的程序的 客户DLL(通过在 Internet 上搜索其名字)。在您已定位该 DLL 后,您需要确保 Wine 能够使用之。DLL 通常在下述位置被载入,并依从下述顺序: 1、程序被启动的目录。 2、当前目录。 3、Windows system 目录。 4、Windows 目录。 (即 Windows 根目录) 5、PATH 变量目录。 简单地说:要不把要求的 DLL 放到您的程序目录(可能显得丑陋),要不就放到 Windows system 目录。另外,如果可能,您可能不应该使用 基于NT 的 本地(原生)DLL,因为 Wine 的 NT API 支持比它的 Win9x API 支持弱(可能导致比没有 Windows 配置更差的与 NT DLL 的兼容性)。


3.1.3 图形设定 有基本地五个不同的图形设定您可以配置。对大多数人来说默认值就很好。第一个是“screen colour depth”(意为:屏幕色深),它代表着能够被显示在屏幕上的颜色的数目。老一点的图形卡曾经难以显示一系列完整色深,对其使用一特定的“8-bit” (8位)显示是能有用的。现代的视频卡,不论什么名字,只要有超过 8MB 显存,使用完全的 24-bit(24位)或 32-bit(32 位)色深是没问题的。

下面一些设定主要影响游戏,并有些明显。您能够阻止鼠标从一个 DirectX 程序(例如,一个游戏)的窗口中离开,其默认值是那个 box 被勾选。有许多的原因使得您可能想那样做,至少包括:如果把鼠标配置为局限在一个更小的区域,玩游戏会更加容易;另一个打开此选项的另一个原因,是为了更 精确的控制鼠标。Wine偏移鼠标的位置,来模拟 Windows 鼠标的运作方式 。相似地,“desktop double buffering”(意为:桌面双倍缓冲,指的是“渲染的时候并不直接写前台,而是首先在后台一个缓冲中渲染,然后交换缓冲,可以获得比较稳定的动画图 像的写屏技术”)它允许更平滑的屏幕刷新,游戏可以从中获益,默认值是打开之。作为交换,内存使用量将增加。

您可能会发现Emulate a virtual desktop(模拟一个虚拟桌面)非常有用。在这个情况下,所有程序将在一个独立的窗口中运行。您可能会发现这个非常有用,特别是在测试有错误的游戏 (可能不成功地)改变屏幕分辨率时。限制他们在一个窗口中能允许对他们的更多控制以减少实际可能的费用。您可能想要尝试的分辨率大小是 640x480 (默认值) 或 800x600。

最后,您可以配置一些 Direct3D 设定。在大多部分这些设定是自动探测的,但是您可以强制它们以一个特定的方式运行。有些游戏探测潜在的系统来检视它是否支持特殊的某些特性。通过关闭这些 Wine 将不会报告能力用一个某一方式呈报游戏。这将导致游戏运行得更快以图形的质量的费用或者图形或游戏根本不能运行。


本部分感谢SSO和for(;z;);两位大大提供关于 桌面双倍缓冲 的解释(文中划线部分),仅表谢意!


3.1.4 驱动器设定 Windows 要求一个相当严格的启动器配置,Wine 模拟之。大多数人熟悉该标准的符号:“A:”驱动器代表软盘,“C:”驱动器代表主系统盘,等等。Wine 使用相同的概念并将这些驱动器映射到当前的本地文件系统上。

Wine 的驱动器配置相对地简单。在 Winecfg 的 Drives 标签您将看见用来添加和移除可用的驱动器的按钮。一个新的 entry 将会被制作并且一个默认的驱动器 mapping 将会出现。您可以在 Path: 框里改变这些驱动器指向哪里。如果您不确定具体的路径,您可以选择“Browse”(浏览)并寻找之。移除一个驱动器就简单得只需要选择之并点击 “Remove”(移除)。

Winecfg 能自动地探测您系统上可用的驱动器。推荐您在尝试手动配置驱动器前使用之。简单地点击“Autodetect”(自动探测)按钮来使 Wine 寻找您系统上的驱动器。

也许您有兴趣在 Winecfg 之外配置您的驱动器设定。幸运地,这种情况也很简单。所有的驱动器设定居于一个特殊的目录~/.wine/dosdevices。每个“驱动器”简单地是一个到其真实所在的连接。Wine 自动地建立2个驱动其在您首次运行它的时候:

$ 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/system 即是说 ~/.wine/drive_c/windows/system 的意思。


3.1.5 音频设定 Wine 可以使用几种不同的音频子系统工作,您可以在“Audio”(意为:音频/声音)标签下选择他们。“Autodetect”(自动探测)按钮能为你把它全 部配置出来,或者您可以手动地选择一个驱动。老一点的Linux 发行版使用 2.4 内核或更早的版本典型地使用“OSS”(开放声音系统)。新一点的 2.6 内核已经转换到了“ALSA”(Advanced Linux Sound Architecture,先进 Linux 声音架构)。如果您正在使用KDE,不管使用何种内核,您或许也可以使用“aRts”(the Analog Realtime Synthesizer,模拟[类比]实时合成器),如果您正在使用GNOME您或许也可以使用“EsounD”(The Enlightened Sound Daemon,Enlightened桌面管理器的声音守护进程)。OSS 和 ALSA 声音驱动得到了最充分的测试,所以如果可能的话,推荐您坚持使用它们。如果您需要使用“Jack”或“NAS”您可能已经知道为什么了。

DirectSound 设定主要被游戏使用。您可以选择什么级别的硬件加速您想要,但是对大多数人来说“Full”(意为:完全)不错。


3.1.6 外观 Wine 能够载入 Windows 的主题,如果您有可用的主题。 当然,这肯定不是使用 Wine 或者应用程序所必须的,它确实能允许您定制一个程序的外观和感观。Wine 支持新一点的 MSStyles 型主题。不像老一点的 Windows Plus!型主题,uxthem引擎支持特殊格式的 .msstyles 文件,这种 .msstyles 文件能改变所有的 Windows控件 的主题。

这多少类似于现代 Linux 桌面版已支持多年的 主题 的性质。

如果您喜欢试验之: 1、下载一个 Windows XP 主题。请确保它含有一个 .msstyles 文件。 2、创建一系列新目录于您的 假Windows驱动器: $ mkdir -p ~/.wine/drive_c/windows/Resources/themes/主题名字 3、移动(剪切).msstyles 到那个 主题名字 目录。 4、使用 Winecfg 的新的 Appearance(意为:应用程序)标签来选择新主题。

3.2 使用注册表和Regedit

您在 Winecfg 里做的所有设定变更,除了驱动器设定,基本上都存储在注册表里。在 Windows 里,这是一个应用程序和操作系统配置的中央存储仓库。同样地,Wine 实现一个注册表,而一些在 Winecfg 里找不到的设定能在注册表里变更。(实际上有更多的机会您需要深入注册表来变更一个应用程序设定而非在 Wine 本身。)

现在, Wine 本身使用注册表来存储设定的事实已引起争议。有的人争辩道这样它就太像 Windows 了。相反地,有很多事物需要考虑。首先,不可能避免实现一个注册表,很简单,因为应用程序期望能存储其设定于那里。以便 Wine 存储和读取在一个单独配置文件里的设定将会要求一套独立的代码来基本上做 Win32 API 所做的,而这些 Wine 已经实现。最后,不像 Windows, Wine 的注册表是用纯文本写成的,并且能使用您喜爱的文本编辑器进行修改。即使大多数神志情形的系统管理员(以及 Wine 开发者)疯狂地咒骂 Windows 注册表扭曲变态的特性,Wine 也有必要设法以某种方法支持之。


3.2.1 注册表结构 OK... 就这么滴吧,let's 深入注册表一点,来看看它是如何展开的。Windows 的注册表是一个精心制作的树形结构,连大多数 Windows 程序员也不完全明白它是怎样展开的,它有着不同的“ hives”和大量的连接在其中;要完全复盖它的内容超出了本文档的范畴。但是您现在就可能需要了解如下的注册表键:

HKEY_LOCAL_MACHINE 这个基本的根键(在 Win9x 里它被存储于隐藏文件 system.dat 里)包含所有与当前 Windows 安装有关系的东西。它通常被简写为 HKLM 。

HKEY_USERS 这个基本的根键(在 Win9x 里它被存储于隐藏文件 user.dat 里)包含该安装的每一个用户的配置信息。

HKEY_CLASSES_ROOT 它是一个到 HKEY_LOCAL_MACHINE/Software/Classes 的连接。它包含一些数据,它们描述一些事物,诸如文件关联,OLE 文档处理器,以及 COM 类。

HKEY_CURRENT_USER 它是一个到 HKEY_USERS/your_username 的连接。例如,您的个人配置。


3.2.2 注册表文件 现在,您可能想知道的是如何翻译成 Wine 的结构。在上面描述的注册表布局事实上存在于三个不同的文件,这些文件存在于每个用户的 ~/.wine 目录中。

system.reg 这个文件包含 HKEY_LOCAL_MACHINE 。

user.reg 这个文件包含 HKEY_CURRENT_USER 。

userdef.reg 这个文件包含 HKEY_USERS/.Default (例如,默认用户的设定)

这些文件在您首次使用 Wine 时被 wineprefixcreate 自动地创建。一系列的全局设定被存储于 c:/windows/inf/wine.inf 并且被 rundll32.exe 程序处理。当您首次运行 Wine 时 wine.inf 被处理来组装初始的注册表。要获取更详细的信息,您可以查看wineprefixcreate 脚本来检视这一切是如何完成的。在升级 Wine 后,wineprefixcreate 也可以用来升级默认的注册表键。

正如我们所提到的,您可以编辑那些 .reg 文件,使用任意您想要的文本编辑器。请确保您这么做的时候 Wine 不在运行,否则所有的变更将丢失。


3.2.3 使用Regedit 要读取并变更注册表,一个简单一点的方法是使用工具——regedit。类似于它所代替的 Windows 程序,regedit 用来提供一个系统级别的注册表视图,包含所有的键。简单地运行 regedit 它就应该弹出来。您将会立即注意到在文本文件中显示得像密码般的键被组织得井井有条,层次分明。

在注册表中导航,点击左边的键名,并深入下一层。要删除一个键,点击之并从 Edit(意为:编辑)目录选择“Delete”(删除)。要添加一个键或值,定位您想要放它的地方并从Edit(意为:编辑)目录选择选择“New” (新建)。同样地,您修改一个存在的键或值,在右手边的窗格里高亮之,并从Edit(意为:编辑)目录选择选择“Modify”(修改)。 另一个达到同样效果的方法是右键单击键或值。

可能对 Wine 使用者来说,比较感兴趣的是存储于 HKEY_CURRENT_USER/Software/Wine 里的设定。大多数您在 Winecfg 里变更的设定存储于此目录的此区域。

3.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 做相同的事,但是那个文件包含用户特定的设定。每一个用户应该拥有他们自己的那个文件的版本并拥有修改它(用户自己的版本)的许可。 您将想注意驱动器mappings。如果您正在共享 system.reg 文件您将想确保每一个用户的注册表设定与 ~/.wine/dosdevices 中的启动器mappings 相兼容。概括来说,您保持您的驱动器mappings与 wineprefixcreate 提供的默认配置越接近,这越容易成功。您可能或不能共享一些或全部的真的“C:”驱动器上您原先已经安装了的应用程序。一些应用程序要求可以写特殊的设定 到驱动器,特别是那些为 Windows 95/98/ME 设计的应用程序。 注意 tools/wineinstall 脚本过去做一些这种事如果您以 root 用户身份安装了 Wine 源,但是现在它不再做这些。 最后请注意:当心您对管理员帐户所做的一切 —— 如果您拷贝或连接管理员的注册表到全局注册表,任何用户可能有能力读取管理员的首选项,这对存储于这里的敏感信息可能不好(密码,个人信息,等等)。只使 用管理员帐户来安装软件,而不是用来做日常工作;请使用普通用户帐户来做日常工作。


3.2.5 注册表键的完全列表

您将在


developer's wiki


找到一份最新的有用的注册表键和值的列表。


3.3 其他要配置的东西 这一节的意思是想提及其他的您可以配置的设定。它也当做一个技巧和窍门的集合。


3.3.1 串口和并口

串口和并口配置非常类似于驱动器配置 —— 简单地创建一个符号连接在 ~/.wine/dosdevices 使用设备的名字。

Windows 串口按照这么一个习惯命名:一个词“com”后面接一个数字。比如 com1,com2, 等等。 类似地,并口使用“lpt”后接数字。比如 lpt1。

您应该直接地连接它们到相应的 Unix 设备,诸如 /dev/ttyS0 和 /dev/lp0 。要配置一个串口和一个并口,运行下列命令: ln -s /dev/ttyS0 com1 ln -s /dev/lp0 lpt1

3.3.2 网络共享 Windows 共享能被映射到 unc/ 目录里以便任何尝试存取 //myserver/some/file 的东西将在 ~/.wine/dosdevices/unc/myserver/some/file/ 里查找。例如,如果您 使用 Samba 来挂载 //myserver/some 于(到)/mnt/smb/myserver/some,那么您可以做: ln -s /mnt/smb/myserver/some unc/myserver/some 来使之在 Wine 中可用(别忘啦如果它不存在,请先创建该 unc 目录!)

3.3.3 字体 字体配置,曾经是个令人厌恶的问题,现在简单得多啦。如果您有一系列的 TrueType 字体在 Windows 里,您可以简单地拷贝 .ttf 文件们到 c:/windows/fonts 中。 (译者注:c:/windows/fonts 指 Wine 的 虚拟Windows 主盘 里的目录,别搞错喔~~)

3.3.4 打印机 Wine 能直接地与 CUPS打印系统 (CUPS, Common UNIX Printing System 通用 Unix 打印系统)互动,来查找您系统上可用的打印机。配置 Wine 的打印机就简单到确保您的 CUPS 配置工作。


3.3.5 扫描仪

在 Windows 里,扫描仪使用 TWAIN API 来存取当前的硬件。Wine 的内建的 TWAIN DLL 简单地将那些请求发送给 Linux 的 SANE 库。所以,要在 Wine 下利用您的扫描仪您首先需要确保您能够使用 SANE 存取之。在此之后您需要确保您有 xscanimage 可用。当前 xscanimage 是和 “sane-frontends (sane前端)包”一起发行的,但它可能不能安装到您的发行版上。现在已知扫描仪存取有一些问题存在。如果您发现它能够工作,请考虑升级本指南的这一 节,并提供详细的关于在 Wine 下使用 SANE 的细节。


(译者提示:您是怎么用的?在什么发行版下?安装了哪些包?怎么配置的?扫描仪型号?等等)

3.3.6. ODBC 数据库 在 Wine 里的 ODBC 数据库 系统,类似于打印系统,被设计钩对 Unix 系统于一高水平。不是去确保所有的Windows 代码在 Wine 下工作,而是使用一个合适的 Unix ODBC 供应商,比如 UnixODBC。 因此,如果您配置 Wine 去使用 内建的 odbc32.dll ,此 Wine DLL 将接入到您的 Unix ODBC 包,并让其做该工作。 但是,如果您配置 Wine 去使用 本地(原生)的 odbc32.dll , 它将尝试使用 本地(原生)的ODBC32 等驱动程序。


3.3.6.1 配置Unix上的ODBC数据库 要在 Wine 下使用 Unix ODBC 数据库的第一步当然就是要使 Unix ODBC 系统自己能工作起来啦。这个方法包括下载 源代码 或 RPM包 等。有多种 Unix ODBC系统 可用;笔者曾经使用过的一种叫UnixODBC (with the IBM DB2 驱动). 也有 ODBC-ODBC 桥 ,它可以用来存取一个 微软 Access 数据库。 一般地,这类系统将包含一个工具,例如 isql,它将允许您从命令行存取数据以便您能检查该系统是否工作。

下一步就是要使 Unix ODBC 库 和 内建的odbc32 DLL 相勾结(^_^,换句话说就是使 Unix ODBC 库 钩住内建的odbc32 DLL)。内建的odbc32 DLL (当前地) 检查环境变量 LIB_ODBC_DRIVER_MANAGER 来寻找ODBC 库 的名字。例如在笔者的 .bashrc 文件里有如下的行:

export LIB_ODBC_DRIVER_MANAGER=/usr/lib/libodbc.so.1.0.0

如果该环境变量没有设置,那么它寻找一个库名曰“libodbc.so”,这样您可以添加一个符号连接到您系统上与之等价的库文件。例如,以 root 身份您可以运行如下命令:

$ ln -s libodbc.so.1.0.0 /usr/lib/libodbc.so $ /sbin/ldconfig

配置这个的最后一步是确保 Wine 被设定为运行 内建的odbc32.dll版本。通过修改 DLL 配置 可以达此目的。这个 内建DLL 仅仅作为调用的代码和 Unix ODBC 库 之间的残馀部分。

如果您遇见了任何问题,您可以在运行 Wine 之前,使用 WINEDEBUG=+odbc32 命令,就可以跟踪(调试)发生了什么。

一句警告。 Some programs actually cheat a little and bypass the ODBC library. For example the Crystal Reports engine goes to the registry to check on the DSN(数据集名). The fix for this is documented at unixODBC's site where there is a section on using unixODBC with Wine. (这段是结合机器翻译并稍作修改的:有些程序实际上有点骗人并绕过 ODBC库,例如水晶报表引擎会去注册表检查DSN。关于这个的修补方法被提供于 UnixODBC 的主页那里有一节是关于在 Wine 下使用 UnixODBC 的。)


3.3.6.2 使用Windows上的ODBC数据库


本地(原生)的 ODBC 驱动已经被报告可以为多种数据库(包括 MSSQL 和 Oracle)工作。事实上,有些如 MSSQL 只能通过一个 Winelib 应用程序被存取。不是仅仅拷贝 DLL 文件,多数 ODBC 驱动 要求一个 基于Windows的安装向导被运行来配置诸如注册表键之类的东西。

为了安装 MSSQL 支持,您将首先需要到 microsoft.com 下载并运行 mdac_typ.exe 安装向导。为了配置您的ODBC连接 您必须接下来在 Wine 下运行 CLICONFG.EXE 和 ODBCAD32.EXE 。(CLICONFG.EXE 疑为CLICONFIG.EXE或CLCONFIG.EXE 误)您可以在 windows/system 目录里找到他们,在运行 mdac_typ 后。

比较这些程序的输出和在 Windows 机器上有何不同。有些东西,比如协议,可能会缺失 —— 因为他们需要和操作系统一齐安装。如果是这样,您可能可以从一个 存在的 Windows 安装 拷贝缺失的功能和任何需要的注册表键值。一个本地(原生)的 Windows安装配置在 Wine 上应该与在 Windows 本地以同样的方式工作。

已经在 Wine 下成功地测试的 类型: 数据类型 有用性 微软 MS SQL 100%

3.3.6.3 使用Windows上的ODBC数据库成功报告 请报告任何其他的成功事例到 wine-devel 邮件列表。

第四章 运行Wine


本章将描述运行 Wine 的所有方面,例如,基本的 Wine 启(调)用,各种 Wine 支持程序的命令行参数,等等。

4.1 基础使用:应用程序和控制面板小程序 假定您正在使用假的 Windows 安装,您使用与您在 Windows 里相同的方法来安装应用程序到 Wine 中:通过运行安装向导。您可以只接受默认安装路径,大多数安装向导会默认安装到 “C:/Program Files”,这不错。如果应用程序安装向导要求创建快捷方式图标,您可能会发现 Wine 在您的桌面和您的应用程序目录里创建图标。如果这事发生了,您可以通过点击(译者注:有的桌面管理器单击有的桌面管理器双击)启动应用程序。 标准的卸载东西的方法是对这种应用程序提供一个 unistaller,通常注册到 “添加/删除应用程序”控制面板小程序。要使用 Wine 上的等价物(替代品),运行 uninstaller 程序(它位于在 Wine 源[代码]目录里的programs/uninstaller/ 目录)于一个终端: $ uninstaller 有些程序安装关联的控制面板小程序,典型的这类例子是 IE 和 QuickTime,您可以在终端中使用下列命令 Wine 来使用控制面板: $ wine control 它将打开一个窗口,窗口中有已安装的控制面板小程序,就类似于在 Windows 里。 如果应用程序不安装任何目录或桌面项目,您将需要从命令行运用该应用程序。请记住您把它安装在哪里了,然后使用类似下面的命令: (译者提示:请根据您的安装目录进行修改) $ wine "c:/program files/appname/appname.exe" 将可能工作。目录并不区分大小写,但请记住一定带上双引号(半角英文)。有些程序并不总是使用显而易见的名字来命名其目录和 EXE 文件,故您也许需要进入程序文件目录去看看哪里放了些什么。


4.2 如何来运行Wine 您可以简单地调用 wine 命令行来获取简单的帮助信息:

Wine 20040405 Usage: wine PROGRAM [ARGUMENTS...] 运行特定的程序

wine --help 显示本帮助并退出
wine --version 输出版本信息并退出

第一个参数应该是您想要 Wine 执行的文件的名字。如果可执行文件在 Path 环境变量里,您可以简单地给出可执行文件名。 但是,如果可执行文件不在 Path 里,您必须给出可执行文件的全路径(以 Windows 格式,而非 UNIX 格式!)。 例如,给一个下列的 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

(注意反斜线逃逸符 “/”!)

要获取运行文本模式(CUI,文本界面)可执行文件的详细信息,请参阅下面相关章节。

( 译 者 注 :$ wine c://myapps//foo.exe 貌似 使 用 $ wine "c:/myapps/foo.exe" 也是可以滴,请注意命令中的皆为半角英文双引号或单引号 )

4.3 类似 Explorer 的图形化Wine环境 如果您喜欢使用一个图形化的界面来管理您的文件,您可能想考虑使Winefile 。这个 Winelib 应用程序是来自 Wine 的并且能从其他 Wine 程序找到。它是来检视您驱动器配置和定位文件的有用方法。另外您能够直接从Winefile执行程序。请注意,很多功能没有被实现。

4.4 wine命令行选项 : 4.4.1 --help 和 4.4.2 --version --help 显示简单的命令行帮助页。 --version 显示 Wine 版本字符串。对验证您的安装有用。

4.5 环境变量


4.5.1. WINEDEBUG=[channels] Wine 并不是完美的, 并且许多Windows程序还是不能在没有bugs的情况下运行于wine下(但那么,很多程序也不能完美运行在wine下)。为了使人比较容易追踪找到 在每个bug后面的成因,wine提供你一些侦错频道能让你轻易的进入每个除错频道。 每个除错频道, 当被激活, 将会引起登录信息被显示到你调用的wine控制台。在那里,你能在你的空闲时后重新传入给一个文件的讯息而且调查它。但是你首先要注意, 一些侦错频道能产生难以置信那么多数量的记录信息。 在很多丰富的主要罪犯中都是接替每一次发出一个记录信息当wine 32功能被调用, 追踪窗户信息传递的win, 和一定全部存在每个单独得侦错频道的一个别名。对于一个复杂的应用程序,你的侦错记录能容易地大于1MB 或者更大。 接替痕迹能时常产生记录信息超过 10 MB,视乎你运行程序多久。 (你将会想检查 RelayExclude 注册修正的关键传播痕迹报告). Logging会一点点的相当的降低wine的速度, 因此不要使用 WINEDEBUG ,除非你真的做需要记录文件。在每个侦错频道里面,你能更进一步叙述一个信息类别, 过滤出不同的严重的错误。 四个信息类别是: trace, fixme, warn, err(痕迹,修复自己,警告,犯错)。 为了要打开一个侦错频道, 使用形式类别+频道。 为了把它关掉,使用类别-频道。 为了要列出相同的超过一个频道的 WINEDEBUG 选,用逗点隔开他们。 例如, 去请求大量除错频道的警告类别信息, 你可以像这样调用wine: $ WINEDEBUG=warn+heap wine program_name

如果你停止所要的信息类别, wine将会为那一个频道显示来自所有的四个类别的信息: $ WINEDEBUG=heap wine program_name 如果你想看到除接替频道的所有记录信息, 你可以像这样做: $ WINEDEBUG=+all,-relay wine program_name

这里是一张wine debug频道清单和类别。很多频道将会增加(或减少)在以后的版本中。

表 4-1. Debug 频道

accel adpcm advapi animate aspi

atom avicap avifile bidi bitblt

bitmap cabinet capi caret cdrom

cfgmgr32 class clipboard clipping combo

comboex comm commctrl commdlg computername

console crtdll crypt curses cursor

d3d d3d_shader d3d_surface datetime dc

ddeml ddraw ddraw_fps ddraw_geom ddraw_tex

debugstr devenum dialog dinput dll

dma dmband dmcompos dmfile dmfiledat

dmime dmloader dmscript dmstyle dmsynth

dmusic dosfs dosmem dplay dplayx

dpnhpast driver dsound dsound3d edit

enhmetafile environ event eventlog exec

file fixup font fps g711

gdi global glu graphics header

heap hook hotkey icmp icon

imagehlp imagelist imm int int21

int31 io ipaddress iphlpapi jack

joystick key keyboard listbox listview

loaddll local mapi mci mcianim

mciavi mcicda mcimidi mciwave mdi

menu menubuilder message metafile midi

mmaux mmio mmsys mmtime module

monthcal mpeg3 mpr msacm msdmo

msg mshtml msi msimg32 msisys

msrle32 msvcrt msvideo mswsock nativefont

netapi32 netbios nls nonclient ntdll

odbc ole oledlg olerelay opengl

pager palette pidl powermgnt print

process profile progress propsheet psapi

psdrv qcap quartz ras rebar

reg region relay resource richedit

rundll32 sblaster scroll seh selector

server setupapi shdocvw shell shlctrl

 

原文引用地址:http://wiki.ubuntu.org.cn/Wine%E7%AE%80%E4%BB%8B

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值