分享

[分享]我使用的wine指南(魔兽世界,魔兽争霸3,CS等都是参考这份指南wine成功的)

 黄三岁大爱人生 2019-09-21
这是我使用wine的指南,关于wine的知识很多都是在这份指南学到的
我现在重新整理了下,希望对大家有帮助

翻译作者:HonestQiao

原文(官方):http://www./Docs/wine-user/
原文(简体中文):http://linux./bbs/viewthre ... tid=610366

--------------------------------------------------------------------------------

目录

1. 介绍
1.1. Wine 是什么?
1.1.1. Windows 和 Linux
1.1.2. 模拟与本地连接
1.2. Wine 要求和特征
1.2.1. 系统要求
1.2.2. Wine 的功能
2. 获得 Wine
2.1. Wine 的多种形式
2.2. 为 Debian 系统获得 Wine
2.3. 为 Redhat 系统获得 Wine
2.4. 为其他发布获得 Wine
2.5. 从 FTP 归档获得 Wine 源代码
2.6. 从 CVS 获得 Wine 源代码
2.7. 用补丁更新 Wine
3. 安装/编译 Wine
3.1. WWN#52 特征: 替代 Windows
3.1.1. 安装概述
3.1.2. 注册表
3.1.3. 目录结构
3.1.4. 系统 DLL
3.2. 安装 Wine 而无须 Windows
3.3. 处理 FAT/VFAT 分区
3.3.1. 介绍
3.3.2. 以 root 运行 Wine
3.3.3. 挂装 FAT 文件系统
3.3.4. 隐蔽 FAT 文件系统
3.4. SCSI 支持
3.4.1. Windows 要求
3.4.2. LINUX 要求
3.4.3. 一般信息
3.4.4. 注意/缺陷
4. 配置 Wine
4.1. 一般配置
4.1.1. Wine 配置文件
4.1.2. 我如何做一个?
4.1.3. 我把它放在哪里?
4.1.4. 如果它不工作怎么办?
4.2. Win95/98 外观
4.3. 配置 x11drv 驱动器
4.3.1. x11drv 操作模式
4.3.2. [x11drv] 段
4.4. 注册表
4.4.1. 注册表结构
4.4.2. 使用 Windows 注册表
4.4.3. Wine 注册表数据文件
4.4.4. 系统管理
4.4.5. 缺省的注册表
4.4.6. [registry] 段
4.5. wine 的驱动器标签和系列号
4.5.1. 支持什么?
4.5.2. 如何设置?
4.5.3. 例子
4.5.4. 要做/开放的要点
4.6. Dll 加载
4.6.1. DLL 类型
4.6.2. [DllDefaults] 段
4.6.3. [DllPairs] 段
4.6.4. [DllOverrides] 段
4.7. 键盘
4.8. 处理字体
4.8.1. 字体
4.8.2. 设置一个 TrueType 字体服务器
4.9. 在 Wine 中打印
4.9.1. 打印
4.9.2. Wine 的 PostScript 驱动程序
5. 运行 Wine
5.1. 如何运行 Wine
5.2. 命令行选项
5.2.1. --debugmsg [通道]
5.2.2. --desktop [几何]
5.2.3. --display
5.2.4. --dll
5.2.5. --dosver
5.2.6. --help
5.2.7. --language
5.2.8. --managed
5.2.9. --synchronous
5.2.10. --version
5.2.11. --winver
6. 找出和报告缺陷
6.1. 如何报告一个缺陷
6.1.1. 容易的方式
6.1.2. 困难的方式
6.1.3. 问题和注释




第 1 章. 介绍
目录
1.1. Wine 是什么?
1.2. Wine 要求和特征
1.1. Wine 是什么?
编写: John R. Sheets <jsheets@codeweavers.com>;

1.1.1. Windows 和 Linux
许多人面临着拥有的软件不能在他的计算机上运行的困扰。随着 Linux 近来的流行,因为操作系统的不同而发生的更加频繁。你的 Windows 软件不能在 Linux 上运行,而你的 Linux 软件不能在 Windows 上运行。

对这个问题的一个常见的解决方法是在一个计算机上同时安装这两个操作系统,成为一个 "双引导" 系统。如果你想在 MS Word 中写一个文档,你可以启动 Windows;如果你想运行 GnuCash,一个 GNOME 财务应用程序,你可以关闭你 Windows 任务 (session)并重启动到 Linux。问题是你不能同时使用它们。每次在 MS Word 和 GnuCash 之间前后切换,你必须再次重启动。很快就会厌倦的。

如果你可以在同一个系统上运行所有你的程序,而不管它们是为 Windows 还是 Linux 写的,生活就容易多了。在 Windows 上,这实际上不可能。[1] 但是,Wine 使在 Linux (或 Solaris)上同时运行本地 Windows 应用程序和本地 Linux 应用程序成为可能。你可以在 MS Word 和 GnuCash 之间共享桌面空间,交叠窗口,图标化它们,甚至从同一个启动项(launcher)运行它们。

1.1.2. 模拟与本地连接
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 应用程序。

Wine 用户指南将关注于使用 Wine 模拟器运行预编译的 Windows 应用程序。Winelib 用户指南将覆盖 Winelib 应用程序。

 
注释
[1] 从技术的角度上,如果你有两个连网的计算机,一个运行 Windows 而另一个运行 Linux,并且你在这个 Windows 系统上运行了某种 X 服务器软件,你可以把 Linux 应用程序导出到 Windows 系统上。不幸的是,多数正规的 win32 X 服务器是商业产品,它们通常都很贵。如果你只有一个计算机那么这种方案就解决不了问题。


1.2. Wine 要求和特征
编写:Andreas Mohr <amohr@codeweavers.com>;

1.2.1. 系统要求
要运行 Wine 需要满足下列条件: 

一台计算机 ;-) Wine: 目前只支持 PCs >;= i386。Winelib: 可支持其他平台,但有点困难。

一个 UNIX 类的操作系统如 Linux、*BSD、Solaris x86。

>;= 16MB 的 RAM。在此之下所有东西都是不可用的。“良好”的执行需要 >;= 64 MB。

一个 X11 window 系统(XFree86 等)。Wine 为其他图形显示驱动器做了准备,但写支持不是很容易的。文本控制台显示驱动器基本上是可用的。

1.2.2. Wine 的功能
希望你已经设法完全满足了上述要求。现在我们告诉你 Wine 能做/支持的: 

支持执行 DOS、Win 3.x 和 Win9x/NT/Win2000 程序(支持多数 Win32 的控件)

选择使用外部厂商的 DLL(比如,原始的 Windows DLL)

基于 X11 的图形显示器(到任何可能的 X 终端的远程显示器),文本模式控制台

Desktop-in-a-box 或可混合的窗口

对游戏的非常高级的 DirectX 支持

对声音的良好支持,可替换(alternative)的输入设备

打印机: 支持固有 Win16 打印机驱动程序,内部 PostScript 驱动程序

支持调制解调器、串行设备

Winsock TCP/IP 连网

ASPI 接口 (SCSI) 支持扫描仪、CD 刻录机 ...

Unicode 支持,相对高级的语言支持

Wine 调试器和可配置的跟踪日志消息



第 2 章. 获得 Wine
目录
2.1. Wine 的多种形式
2.2. 为 Debian 系统获得 Wine
2.3. 为 Redhat 系统获得 Wine
2.4. 为其他发布获得 Wine
2.5. 从 FTP 归档获得 Wine 源代码
2.6. 从 CVS 获得 Wine 源代码
2.7. 用补丁更新 Wine
2.1.Wine 的多种形式
标准 Wine 发布包括许多不同的可执行、库、和配置文件。要使 Wine 良好的工作必须正确的设置所有这些文件。本章将指导你通过必要的步骤把 Wine 安装到你的系统上。

如果你运行的 Linux 的发行使用包来跟踪安装的软件,你可能走运了: Wine 的一个预编译的版本可能已经存在于你的系统中了。前三节将告诉你如何找到最新的 Wine 包并安装它们。你应该小心在不同的发布之间混用包,即使是同一个发布的不同版本之间。经常是一个包只能在它所编译的发布上运行。我们将覆盖 Debian、Redhat 和其他发布。

如果你不够幸运的获得给你的操作系统的一个包,或者你偏好一个新版本的 Wine,它比现存的包要新,你必须下载 Wine 源代码并在你自己的机器上亲自编译它。不要担心,这不是很难,特别是与 Wine 一起的还有许多有用的工具。你无须有任何编程经验来编译和安装 Wine,但有一些 UNIX 管理经验就更好了。我们将覆盖如何从 FTP 归档取回并编译官方源代码,还有如何从 CVS (并发版本系统)获得最新 (cutting edge up-to-the-minute fresh)的 Wine 源代码。二者的源代码安装的过程是类似的,并且你一旦掌握了其中一个,你处理另一个应当没有任何问题。

最后,你可能有一天需要知道如何向你的 Wine 版本提供补丁。可能你找到了 Wine 中的一个未发现的缺陷,请向 Wine 邮件列表报告,并从某个开发者接受一个补丁来修理这个缺陷。本章的最后一段将告诉你如何安全的提供补丁以及如果补丁不工作如何复原。[/color]


2.2. 为 Debian 系统获得 Wine
在 Debian 系统的多数情况下,你可以用一个简单的命令安装 Wine,作为 root:

# apt-get install wine

apt-get 将通过 Internet 连接到一个 Debian 归档(所以,你必须在线),接着下载 Wine 包并安装到你的系统上。完事了。

当然,Debian 的 Wine 预打包的版本可能不是最新的发行。如果你运行 Debian 的稳定版本,你可以通过从不稳定发布获取包来得到一个稍微新点的 Wine 版本,但这可能有点冒险,依赖于不稳定发布从稳定发布分叉多远。你可以在 www. 使用包查找引擎找到给各种 Debian 发行的 Wine 二进制包的一个列表。

如果要安装的一个包不是你的发布的一部分,你需要使用 dpkg 而不是 apt-get。因为 dpkg 不为你下载文件,你必须自己下载。依从在包查找引擎上的链接找到所需的包,接着点击 Go To Download 页面按钮并依从指示。保存文件到你的硬盘,接着在其上运行 dpkg。例如,如果你把文件保存到你的主目录中,你可以进行下列动作来安装它:

$ su -
<键入 root 口令>;
# cd /home/user
# dpkg -i wine_0.0.20000109-3.deb

你可能还需要安装 wine-doc 包,如果你使用 Wine 的 2.3 发布(Woody),则还需要 wine-utils 包。[/color]


2.3. 为 Redhat 系统 获得 Wine
Redhat/RPM 用户可以使用 rpmfind.net 来搜寻可获得的 Wine RPM 二进制包。 这个页面包含以字母"W"开头的所有 rpm 包的一个列表,包括一些 Wine 包。[/color]


2.4. 为其他发布获得 Wine
如果你的系统不是 Debian 或 Redhat,第一步是看 WineHQ 下载页。这个页面列出了许多 Wine 的分类混合的(assorted)二进制(预编译)归档文件。

Lycos FTPSearch 是搜寻杂类发布包的另一个有用的资源。


2.5. 从 FTP 归档获得 Wine 源代码
如果你想要的 Wine 的版本没有现存的包,你可以自己下载源代码并在你的机器上编译它。如果以前从未做过,第一次时可能感觉有点恐怖,你将发现这通常是非常顺畅的,特别是在新近的 Linux 发布上。

获得源代码的最安全的方式是从官方 FTP 归档获取。在 Wine 发布中的 ANNOUNCE 文件中(如果你已经下载了它的话)有一个最新列表。下面是(可能过时了)承载 Wine 的 FTP 服务器的一个列表:

ftp://metalab.unc.edu/pub/Linux/ALPHA/wine/development/

ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/

ftp://ftp.infomagic.com/pub/mirrors/lin ... velopment/

ftp://orcus.progsoc.uts.edu.au/pub/Wine/development/

官方发布加上了"Wine-YYYYMMDD.tar.gz"格式的日期标注。你最好的赌注是获得最新的发布。

FIXME: 解释如何 un-tar、从一个 tarball 编译和安装 Wine。[/color]


2.6. 从 CVS 获得 Wine 源代码
Wine CVS 的官方 Web 页是 http://www./dev.html

首先,你需要使用 CVS 得到最新的 Wine 源代码的一个复件。你可以通过设置 CVSROOT 环境变量来告诉它到那里去找到源代码树。你还必须匿名登录到 wine CVS 服务器上。在 bash 中,过程可能如下:

$ export CVSROOT=:pserver:cvs@cvs.:/home/wine
$ cvs login
Password: cvs
$ cvs checkout wine

这将从 取回整个 Wine 源代码树并把它放置到当前目录中(实际上在‘wine’子目录中 )。 CVS 有大量命令行参数,所以有多种方式从修订历史中的某个地方取回文件。此后,你可以只获取更新的文件:

$ cvs -dP update

cvs update 从源代码树的内部工作。你不需要 CVSROOT 环境变量来运行它。你只需要在代码树中。-d 和 -P 选项确保你的本地 Wine 树目录结构与远程仓库相同步。

在你做了变动之后,你可以通过 cvs diff -u 建立一个补丁,它把输出发送的 stdout(-u 控制这个补丁的格式)。所以,要建立一个 my_patch.diff 文件,你可以这样做:

$ cvs diff -u >; my_patch.diff


你可以从树中的任何地方调用 cvs diff(如同 cvs update),并且它将总是从这一点上递归的获取文件。你还可以指定一个单一的文件或子目录:

$ cvs diff -u dlls/winaspi >; my_aspi_patch.diff

做点实验,这是非常凭直觉的。


2.7. 用补丁更新 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
目录
3.1. WWN #52 特征: 替代 Windows
3.2. 安装 Wine 而无须 Windows
3.3. 处理 FAT/VFAT 分区
3.4. SCSI 支持
如何安装 Wine...

3.1. WWN #52 特征: 替代 Windows
编写: Ove Ken <ovek@>;

3.1.1. 安装概述
一个 Windows 安装由许多不同部分组成。

 

注册表。即使在一个新安装的 Windows 系统中,都假定存在许多键并包含着有意义的数据。

目录结构。应用程序期望在指定的预先决定的位置找到和/或安装东西。期望多数这些目录存在。但与 Unix 目录结构不同,多数这些位置是硬编码的(hardcode),并通过 Windows API 和注册表来查找。在 Wine 安装上这提出了额外的要求。

系统 DLL。在 Windows 中,它们通常驻留在 system (或 system32)目录中。一些 Windows 应用程序在尝试装载它们之前在这些目录中检查它们的存在。当应用程序要求一个 DLL 而 Wine 不能装载它们自己的内部 DLL(.so 文件)时,Wine 不模拟不存在文件的存在。

尽管用户可以自由的自己设置所有的东西,Wine 小组仍将制作自动 Wine 安装脚本 tools/wineinstall,做我们认为必要的所有事情;除非你知道正在做什么,否则不推荐运行常规的 configure && make depend && make && make install 周期。此时,可使用 tools/wineinstall 来建立一个配置文件、安装注册表、并建立自己的目录结构。

3.1.2. 注册表
缺省的注册表在文件 winedefault.reg 中。它包含目录路径、类 ID、及其他东西;在多数 INSTALL.EXE 或 SETUP.EXE 运行之前必须安装它。在以前的文章中有对注册表非常详细的介绍。

3.1.3. 目录结构
下面是 Windows 应用程序和安装器所期望的基本格局。没有它,这些程序不能正确操作。

 

C:\ 主磁盘驱动器的根目录
Windows\ Windows 目录,包含 .INI 文件、附件等
System\ Win3.x/95/98/ME 给公用 DLL 的目录
WinNT/2000 给公用 16-bit DLL 的目录

System32\ WinNT/2000 给公用 32-bit DLL 的目录
Start Menu\ 程序启动项目录结构
Programs\ 到应用程序的程序启动项连接(.LNK 文件)
Program Files\ 应用程序二进制文件(.EXE 和 .DLL 文件)

 

Wine 通过把它们的虚拟驱动器根放置到 Unix 文件系统中用户可配置点上来模拟驱动器,所以你自己选择 C: 的根应该在哪 (tools/wineinstall 会问你的)。如果你选择了,比如 /var/wine 作为你的虚拟驱动器 C 的根,则你应该把它放置到你的 ~/.wine/config 文件中:

[Drive C]
"Path" = "/var/wine"
"Type" = "hd"
"Label" = "MS-DOS"
"Filesystem" = "win95"



使用这个配置,被 windows 应用程序当作为 "c:\windows\system" 的目录将被映射为 UNIX 文件系统中的 /var/wine/windows/system 。注意你必须指定 "Filesystem" = "win95" 而不是 "Filesystem" = "unix",来使 Wine 模拟 Windows-相容的(大小写不敏感)文件系统,否则多数应用程序将不能工作。

3.1.4. 系统 DLL
Wine 小组决定需要建立伪 DLL 文件来欺骗那些通过检查文件存在来确定是否可获得一个特征(比如 Winsock 和它的 TCP/IP 连网)的应用程序。如果你也有这个问题,你可以在 system 目录中建立一个空文件来让应用程序认为它存在,而在应用实际要求它的时候 Wine 将装载它的内置的 DLL。(不幸的是, tools/wineinstall 自身不建立这样的空文件。)

应用程序有时还尝试从物理文件中检查资源的版本(例如,要确定 DirectX 版本)。在这种情况下空文件就不起作用了,必须有完整版本资源的安装文件。当前正在处理这个问题。目前,你仍需获取一些真实的 DLL 来欺骗这些应用程序。

对于那些 wine 目前未很好实现(或根本未实现)的 DLL。如果不拥有一个真实的 Windows,则有的人将会窃取所需的 DLL,总是可以从象 http://solo./dllarchive/ 这样的地方得到一个 DLL 归档。



3.2. 安装 Wine 而无须 Windows
编写:James Juran <juran@cse.psu.edu>;

(提取自 wine/documentation/no-windows)

Wine 的一个主要目标是允许用户运行 Windows 程序而无须在它们的机器上安装 Windows。Wine 实现了通常由 Windows 提供的主要 DLL 的功能。所以,一旦完成了 Wine,使用 Wine 将不需要拥有一个安装好的 windows。

Wine 已经进行到足够的程度,它已经可以运行你的目标程序而无须安装好的 Windows。如果你要尝试,请依从下列步骤:

 

建立空 C:\windows、C:\windows\system、C:\windows\Start Menu、和 C:\windows\ Start Menu\Programs 目录。不要把 Wine 指向充满了旧有安装和不干净的注册表的 Windows 目录。(Wine 在你的 home 目录中建立一个特殊的注册表,在 $HOME/.wine/*.reg 中。你可能需要删除这些文件)。

把 ~/.wine/config 中的 [Drive C] 指向你希望 C: 所在的地方。参照 Wine 手册页来的得到更详细的信息。记住使用 "Filesystem" = "win95"!

使用 tools/wineinstall 来编译 Wine 并安装缺省注册表。或者如果你偏好自己做,编译 programs/regapi,并运行: programs/regapi/regapi setValue < winedefault.reg

运行和/或安装你的应用程序。

因为 Wine 仍未最终完成,一些应用程序与固有 Windows DLL 一起运行要比与 Wine 的替代品一起运行更好。Wine 被设计为使之可能。Juergen Schmied (和其他人)关于如何进行有一些提示。这里假定在配置文件中你的 C:\windows 目录不指向一个固有 Windows 安装而是指向一个独立的 Unix 文件系统。(例如, "C:\windows" 是位于 "/home/ego/wine/drives/c" 下的一个真实的子目录 "windows")。

 

运行应用程序并加上 --debugmsg +module,+file 参数来找出所须的文件。把所须的文件逐个复制到 C:\windows \system 目录中。但不要复制 KERNEL/KERNEL32、GDI/GDI32、或 USER/USER32。它们实现了 Windows API 的核心功能,而必须使用 Wine 的内部版本。

编辑 ~/.wine/config 中的 "[DllOverrides]" 段,为你要使用的 Windows DLL 在 "builtin" 之前指定 "native"。详情请参见 Wine 手册页。

注意尽管 Wine 寻找一些网络 DLL 但不需要它们。Windows MPR.DLL 目前不能工作;你必须使用内部实现。

把 SHELL/SHELL32 和 COMDLG/COMDLG32、COMMCTRL/COMCTL32 成对的复制到你的 Wine 目录中(使用这些 DLL 是"干净的")。确保在 ~/.wine/config 的"[DllPairs]"段中指定了这些。

要一致: 只一起使用同一个 Windows 版本的 DLL。

把 regedit.exe 放置到 C:\windows 目录中。(Office 95 与一个空注册表一起工作时导入一个 *.reg 文件,对 Office 97 不清楚)。

如果你要浏览程序的帮助功能还要添加 winhelp.exe 和 winhlp32.exe 。[/color]




3.3.处理 FAT/VFAT 分区
编写:Steven Elliott <elliotsl@mindspring.com>;

(提取自 wine/documentation/linux-fat-permissions)

本文描述工作在 Linux 中对 FAT 和 VFAT 文件系统的权限,焦点是为 Wine 配置它们。

3.3.1. 介绍
Linux 可以使用 FAT (老的 8.3 DOS 文件系统) 或 VFAT (新的 Windows 95 或后来的长文件名文件系统) 模块访问 DOS 和 Windows 文件系统。在双引导(Linux + Windows)系统上,要通过 Wine 访问现存的应用程序和它们的数据,挂装 FAT 或 VFAT 文件系统是提供的主要的方式。

按照 ~/.wine/config 文件的指示,Wine 把挂装的 FAT 文件系统比如 /c,映射成驱动器字母比如 "c:"。下列摘录自一个 ~/.wine/config 文件:

[Drive C]
"Path" = "/c"
"Type" = "hd"



尽管在长文件名支持上 VFAT 文件系统优于 FAT 文件系统,在本文剩余部分中使用术语 "FAT" 来参照 FAT 文件系统和它的衍生品。还有,本文通篇使用 "/c" 作为 FAT 挂装点的例子。

多数现代 Linux 发布要么检测现存的 FAT 文件系统要么允许配置现存的 FAT 文件系统,这样,可以要么持久的(在引导时)要么在需要的时候,在一个位置上如 /c 挂装它们。在任何一种情况下,缺省的,权限可能被配置成:

~>;cd /c
/c>;ls -l
-rwxr-xr-x 1 root root 91 Oct 10 17:58 autoexec.bat
-rwxr-xr-x 1 root root 245 Oct 10 17:58 config.sys
drwxr-xr-x 41 root root 16384 Dec 30 1998 windows



这里所有的文件都属于 "root",都在 "root" 组中并只能被 "root" 写(755 权限)。 这限制了应用程序要想写文件系统的任何部分,只能以 root 运行 Wine。

有三种主要的途径来克服上面段落提及的受限制的权限:

 

以 root 运行 Wine

用更少受限制的权限来挂装 FAT 文件系统

通过完全或部分复制它来隐蔽 FAT 文件系统

在下面的小节中将讨论每种方式。

3.3.2. 以 root 运行 Wine
要给予 Wine 所运行的应用程序无限制的对 FAT 文件系统访问,以 root 运行 Wine 是最简单和最直接的方式。以 root 运行 wine 还允许应用程序做与 FAT 文件系统无关的事情,比如监听小于 1024 的端口。 以 root 运行 Wine 是危险的,原因是对应用程序在系统上的所作所为没有限制。

3.3.3. 挂装 FAT 文件系统
可以用比缺省更少受限制的权限挂装 FAT 文件系统。要么变更挂装 FAT 文件系统的用户,要么显式的变更挂装的 FAT 文件系统的权限。 FAT 文件系统从挂装 FAT 文件系统的进程继承权限。因为挂装 FAT 文件系统的进程通常是以 root 运行的一个启动脚本,FAT 文件系统继承 root 的权限。这导致在 FAT 文件系统上的文件有类似于用 root 建立的文件的权限。例如:

~>;whoami
root
~>;touch root_file
~>;ls -l root_file
-rw-r--r-- 1 root root 0 Dec 10 00:20 root_file



它匹配属主、组和除了缺少‘x’之外在 FAT 文件系统上见到的文件权限。在 FAT 文件系统上的权限可以通过改变 root 的 umask (unset permissions bits)来变更。例如:

~>;umount /c
~>;umask
022
~>;umask 073
~>;mount /c
~>;cd /c
/c>;ls -l
-rwx---r-- 1 root root 91 Oct 10 17:58 autoexec.bat
-rwx---r-- 1 root root 245 Oct 10 17:58 config.sys
drwx---r-- 41 root root 16384 Dec 30 1998 windows



用 umask 码 000 挂装 FAT 文件系统给予所有用户对它的完全控制。在挂装的时候提供额外的控制,显式的指定 FAT 文件系统的权限。与 FAT 权限相关的有三个挂装选项: uid、gid 和 umask。在手动挂装文件系统的时候可以指定它们。例如:

~>;umount /c
~>;mount -o uid=500 -o gid=500 -o umask=002 /c
~>;cd /c
/c>;ls -l
-rwxrwxr-x 1 sle sle 91 Oct 10 17:58 autoexec.bat
-rwxrwxr-x 1 sle sle 245 Oct 10 17:58 config.sys
drwxrwxr-x 41 sle sle 16384 Dec 30 1998 windows



给予 "sle" 在 /c 上完全控制权限。可以通过在上面列出的选项添加到 /etc/fstab 文件中而使之成为永久:

~>;grep /c /etc/fstab
/dev/hda1 /c vfat uid=500,gid=500,umask=002,exec,dev,suid,rw 1 1



注意 umask 码 002 一般用于用户私有组文件权限中。在 FAT 文件系统上这个 umask 确保在指定组(gid)中的所有用户可以完全访问所有文件。

3.3.4. 隐蔽 FAT 文件系统
隐蔽提供了精细的控制粒度。通过复制部分最初的 FAT 文件系统,应用程序可以安全的在复制的这部分上工作,而继续直接读其余的部分。这是通过符号连接完成的。例如,考虑一个叫 AnApp 的应用程序必须能读写 c:\windows 和 c:\AnApp 目录而可读整个 FAT 文件系统的的一个系统。在这个系统中 FAT 文件系统有缺省的权限,出于安全的原因或缺乏 root 访问权限而不应该被改变。在这个系统上可以用下列方式设置一个隐蔽目录:

~>;cd /
/>;mkdir c_shadow
/>;cd c_shadow
/c_shadow>;ln -s /c_/* .
/c_shadow>;rm windows AnApp
/c_shadow>;cp -R /c_/{windows,AnApp} .
/c_shadow>;chmod -R 777 windows AnApp
/c_shadow>;perl -p -i -e 's|/c$|/c_shadow|g' /usr/local/etc/wine.conf


上述命令给予所有用户对 windows 和 AnApp 目录完全的读写访问,而只有 root 可以写访问其他目录。[/color]


3.4. SCSI 支持
编写: Bruce Milner;补充:Andreas Mohr <amohr@codeweavers.com>;

(提取自 wine/documentation/aspi)

这个文件描述设置 Windows ASPI 接口。

警告/警告/警告!!!!!!
  如果不正确使用可能会使你的系统报废
如果正确使用可能会使你的系统报废


我已经说过,ASPI 是从 windows 程序到 SCSI 设备的直接连接。ASPI 只转发程序发送到 SCSI 总线上 SCSI 命令。

如果在你的设置文件中使用了错误的 SCSI 命令,你可以向不合适的设备发送完全伪造的命令 - 例如格式化你的硬设备(假定这个设备给予你权限 - 如果你以 root 运行,所有赌注都将失去)。

所以请确保把程序不需要的所有 SCSI 设备的权限设置为尽可能的受限制!

设置扫描仪的指导: (至少让扫描仪工作起来) (同样适用于其他设备如 CD 刻录机, MO 驱动器,...,诸如此类)

3.4.1. Windows 要求
扫描仪软件需要使用 "Adaptec" 兼容驱动器(ASPI)。至少与 Mustek 一起,它们允许你选择使用内置卡或 "Adaptec (AHA)" 兼容驱动器。任何其他方式都不能工作。支持通过 DOS ASPI 驱动器(例如, ASPI2DOS) 访问扫描仪的软件。 [AM]

你可能需要这个软件的一个真实的 windows 安装来正确设置 LUN's/SCSI id。我也不是非常确定。

3.4.2. LINUX 要求
在 linux 下必须支持你的 SCSI 卡。对未知 SCSI 卡将不能工作。甚至对廉价的垃圾 "扫描仪专用" 控制器在网上都有特定的 Linux 驱动程序。如果你要使用你的 IDE 设备,你需要使用 ide-scsi 模拟器。阅读 http: //www./HOWTO/CD-Writing-HOWTO.html 来获得 ide-scsi 设置指导。把 SCSI 驱动程序编译到你的内核中。

对于最新的(2.2.x)内核好象不要求别的什么了: Linux 缺省使用比 Windows 小的 SCSI 缓冲区。定义了 SG_BIG_BUFF(在 sg.h 中)的内核建造缺省设置太低。SANE 计划推荐 130560 好象就工作的很好。这要求重新建造系统内核。

为扫描仪建造一个设备(一般 SCSI 设备) - 关于设备编号请参见 http://www./HOWTO/SCSI-Prog ... HOWTO.html 的 SCSI 编程 HOWTO。

我建议让扫描仪设备对一个组可写。我建立了一个叫 scanner 的组并添加上了我自己。以 root 运行会增加向不适当的设备发送错误 SCSI 命令的危险。使用常规用户,你将受到更好的保护。

对于 Win32 软件(WNASPI32),Wine 在适当的位置进行自动检测。对于 Win16 软件(WINASPI),你需要在 ~/.wine/config 中为你的特定扫描仪添加一个 SCSI 设备条目。格式是 [scsi cCtTdD],这里的 "C" = "controller"、"T" = "target"、D=LUN

例如,我设置扫描仪为 controller 0、Target 6、LUN 0。 [scsi c0t6d0]
"Device" = "/dev/sgi"


对你的特定的 SCSI 设置可能不同。

3.4.3. 一般信息
我使用一个包 "ipplus" 承载 mustek 扫描仪。这个程序使用 TWAIN 驱动器规定来访问扫描仪。

(TWAIN 管理器)

  ipplus.exe <--->; (TWAIN INTERFACE) <--->; (TWAIN DATA SOURCE . ASPI) ->; WINASPI




3.4.4. 注意/缺陷
最大的缺陷是目前只能在 linux 下工作。

ASPI 代码只在下列扫描仪上进行了测试: 

在 Linux 下一个 Mustek 800SP 加上在一个 Buslogic 控制器[BM]

在 Linux 下通过 DOSASPI 访问的一个 Siemens Nixdorf 9036 加上 Adaptec AVA-1505。注意我有颜色问题,通过(少见可读的结果)[AM]

一个 Fujitsu M2513A MO 驱动器 (640MB) 使用一般 SCSI 驱动器。格式化和弹出(eject)工作良好。为访问硬件而感谢 Uwe Bonnes! [AM]

我不担保 ASPI 代码。它可以使我的扫描仪工作。但可能使你的驱动器爆炸。我无法确定。我承担零责任![/color]


HonestQiao 回复于:2005-09-13 14:11:34

第 4 章. 配置 Wine
目录
4.1. 一般配置
4.2. Win95/98 外观
4.3. 配置 x11drv 驱动器
4.4. 注册表
4.5. Wine 的驱动器标签和系列号
4.6. Dll 加载
4.7. 键盘
4.8. 处理字体
4.9. 在 Wine 中打印
设置 config 文件等。

4.1. 一般配置
Copyright 1999 Adam Sacarny <magicbox@bestweb.net>;

(提取自 wine/documentation/config)

4.1.1. Wine 配置文件
Wine config 文件存储各种 Wine 的设置。包括:

 

驱动器和关于它们的信息

目录设置

端口设置

Wine 外观和感觉

Wine 的 DLL 用法

4.1.2. 我如何做一个?
本节将带领你经过制作一个 config 文件的(全部)过程。看一下文件 <dirs to wine>;/documentation/samples/config。它是由段组织起来的。

 

段名 需要? 用途
[Drive X] 是 设置 wine 识别的驱动器
[wine] 是 设置 wine 目录
[DllDefaults] 推荐 缺省装载的 DLL
[DllPairs] 推荐 对 DLL 的健全检查
[DllOverrides] 推荐 屏弃缺省的 DLL 装载
[options] 否 好象没人知道
[fonts] 是 字体外观和识别
[serialports] 否 wine 见到的 COM 端口
[parallelports] 否 wine 见到的 LPT 端口
[spooler] 否 打印缓冲池
[ports] 否 直接访问端口
[spy] 否 怎样处理特定的调试信息
[Registry] 否 指定 windows 注册表文件的位置
[tweak.layout] 推荐 wine 的外观
[programs] 否 自动运行的程序
[Console] 否 控制台设置

 

4.1.2.1. [Drive X] 段
这是自明的,下面是深入的指导。对于 Wine 中的每个驱动器最多有 6 行。

  [Drive X]

上面的行开始了一个给字母是 X 的那个驱动器的段落。

  Path=/dir/to/path

这个路径是这个驱动器开始的地方。当 Wine 在驱动器 X 中浏览的时候,它将见到目录 /dir/to/path 中的文件。不要忘记去掉尾随的斜杠!

  "Type" = "floppy|hd|cdrom|network" <--- 这个 | 的意思是 "Type = "<选项之一>;"




设置 Wine 将见到的驱动器类型。类型必须等于下列四者之一 floppy、hd、cdrom、或 network。它们是自明的。

  "Label" = "blah"

定义驱动器标签。一般只有查找一个特定的 CD-ROM 的应用程序需要它。关于查找标签的信息请参见 <dirs to wine>;/documentation/cdrom-labels。标签最多是 11 个字符。

  "Serial" = "deadbeef"

告诉 Wine 这个驱动器的系列号。一些意图防止剽窃的应用程序可能需要它,否则不要使用它。最多 8 个字符和十六进制数。

  "Filesystem" = "msdos|win95|unix"

设置 Wine 查看这个驱动器上的文件的方式。

 

msdos
大小写不敏感文件系统。类似于 DOS 和 Windows 3.x。 8.3 是文件名的最大长度(eightdot.123) - 更长的部分将被截掉。(注意: 如果你想运行使用长文件名的程序,这将是非常糟的选择。win95 可以很好的与设计在 msdos 系统下运行的应用程序一起工作。换句话来说,你可能不需要使用它。)

win95
大小写不敏感。类似于 Windows 9x/NT4。这可能是你用来工作的长文件名文件系统。是给 wine 下运行的多数应用程序选择的文件系统。可能正是你需要的!

unix
大小写敏感。这个文件系统基本不用(Windows 应用程序需要大小写不敏感文件名)。如果你敢就试一下,win95 是更好的选择。

"Device" = "/dev/xx"


只用于软盘和光盘设备。在 Extended2 分区上使用它将有灾难性的结果(在一个 windows 应用程序尝试做一次低层写的时候,他们以在 FAT 下的方式去做 -- FAT 不能与 Extended2 混同使用)。

注意: 这个设置不是十分重要;如果保持未指定,几乎所有的应用程序都没有问题。对于 CD-ROM 你可能希望添加它来获得自动的标签检测。如果你不能确定指定的设备名字,只须为你的设备空缺这个设置。

下面是 Drive X 的一个设置,它是一个通用的硬盘驱动器: [Drive X]
"Path" = "/dos-a"
"Type" = "hd"
"Label" = "Hard Drive"
"Filesystem" = "win95"
下面是 Drive X 的一个设置,它是一个通用的 CD-ROM 驱动器:
[Drive X]
"Path" = "/dos-d"
"Type" = "cdrom"
"Label" = "Total Annihilation"
"Filesystem" = "win95"
"Device" = "/dev/hdc"
下面是 Drive X 的一个设置,它是一个通用的软盘驱动器:
[Drive X]
"Type" = "floppy"
"Path" = "/mnt/floppy"
"Label" = "Floppy Drive"
"Serial" = "87654321"
"Filesystem" = "win95"
"Device" = "/dev/fd0"




4.1.2.2. [wine] 段
配置文件的 [wine] 段包含 wine 使用的目录的信息。在给这些设置指定目录的时候,按它们在 wine 中出现的那样设置它们。如果你的驱动器 C 有一个路径 /dos,并且你的 windows 目录位于 /dos/windows,则使用: "Windows" = "c:\\ windows"



它设置 windows 目录。如果你未曾有这个目录则建一个。没有尾随的斜杠(不能是 C:\\windows\)!

  "System" = "c:\\windows\\system"

它设置 windows 系统文件所在的地方。这个目录应当驻留在用于 Windows 设置的目录中。如果你没有 windows 则它应是系统文件所在的地方。再次强调,没有尾随的斜杠!

  "Temp" = "c:\\temp"

这应该是你打算把临时文件存储到其中的目录。你必须有到它的写访问权限。

  "Path" = "c:\\windows;c:\\windows\\system;c:\\blanco"




行为好象是 UNIX 的 PATH 环境变量设置。在 wine 运行如 wine sol.exe,如果 sol.exe 驻留在 Path 设置中指定的一个目录中,wine 将会运行它(当然,如果 sol.exe 驻留在当前目录中,wine 也可以运行它)。确保它总包含你的 windows 目录和系统目录(对于这个设置,它必须包含 "c:\\windows;c:\\windows\\system")。

  "SymbolTableFile" = "wine.sym"

为 wine 调试器设置符号表。你可能不需要摆弄它。如果你的 wine 出了问题(stripped)可能用到它。

  "printer" = "off|on"

告诉 wine 是否允许打印机驱动程序和打印工作。这些东西仍处在 alpha 阶段,所以使用它你要当心。但一些人可能发现它很有用。如果你不打算进行打印工作,则不要把它添加到你的 ~/.wine/config 中(它可能不在其中)。还要检查 [spooler] 和 [parallelports] 段。

4.1.2.3. 介绍 DLL 段
在 wine 配置文件中设置 DLL 段之前,你需要知道一些事情。

4.1.2.3.1. Windows DLL 对
多数 windows DLL 有 win16 (Windows 3.x) 和 win32 (Windows 9x/NT) 两种形式。win16 和 win32 DLL 版本的组合叫做"DLL 对"。下面是最常见的 DLL 对:

 

Win16 Win32 固有 [a]
KERNEL KERNEL32 否!
USER USER32 否!
SHELL SHELL32 是
GDI GDI32 否!
COMMDLG COMDLG32 是
VER VERSION 否
注释:a.
是 wine 可以使用固有的 dll?(参见下节)


 

4.1.2.3.2. DLL 的不同形式
wine 可以装载的 DLL 有多种形式:

 

native(本地,固有)
DLL 包含在 windows 中。许多 windows DLL 可以用它们固有的形式来装载。许多时候这些固有版本比它们的非 Microsoft 替代品要好一些,但不总是。

elfdll
用 ELF 封装的 windows DLL。当前还是实验性的(仍不能工作)。

so
本地 ELF 库。仍不能工作。

builtin(内置)
DLL 装载的最通常形式。如果 DLL 用固有形式装载是错误的(error-prone)(例如,KERNEL),你没有固有的 DLL,或你想自由于 Microsoft,则可以使用它们。

4.1.2.4. [DllDefaults] 段
这些设置提供了 wine 的缺省 DLL 装载处理。

  "DefaultLoadOrder" =" native, so, builtin"



这个设施是一个逗号分界的列表,按它的次序尝试装载 DLL。如果第一种选项失败了,它将尝试第二种,以次类推。上面的次序在多数情况下是最好的。

4.1.2.5. [DllPairs] 段
有时,在缺省配置文件中有一个叫做 [DllPairs] 的段,它已经被废弃了,原因是组对信息已经被嵌入到 Wine 自身中。(本段的目的只不过是如果用户尝试组对(pair codependent)不同类型的16-bit/32-bit DLL 则发起警告。) 如果你的 wine.conf 或 ~/.wine/config 中仍然有它,你删除它是安全的。

4.1.2.6. [DllOverrides] 段
本段的格式对于每行都是相同的: <DLL>;{,<DLL>;,<DLL>;...} = <FORM>;{,<FORM>;,<FORM>;...}




例如,要装载内置的 KERNEL 对(这里大小写都行): "kernel,kernel32" = "builtin"




要装载固有 COMMDLG 对,但如果它们不工作则尝试内置的: "commdlg,comdlg32" = "native,builtin"




要装载 COMCTL32: "comctl32" = "native"




下面是一个很好的通用设置(在你 wine 包中的 config 文件中定义的): [DllOverrides]
"commdlg" = "builtin, native"
"comdlg32" = "builtin, native"
"ver" = "builtin, native"
"version" = "builtin, native"
"shell" = "builtin, native"
"shell32" = "builtin, native"
"lzexpand" = "builtin, native"
"lz32" = "builtin, native"
"comctl32" = "builtin, native"
"commctrl" = "builtin, native"
"wsock32" = "builtin"
"winsock" = "builtin"
"advapi32" = "builtin, native"
"crtdll" = "builtin, native"
"mpr" = "builtin, native"
"winspool.drv" = "builtin, native"
"ddraw" = "builtin, native"
"dinput" = "builtin, native"
"dsound" = "builtin, native"
"mmsystem" = "builtin"
"winmm" = "builtin"
"msvcrt" = "native, builtin"
"msvideo" = "builtin, native"
"msvfw32" = "builtin, native"
"mcicda.drv" = "builtin, native"
"mciseq.drv" = "builtin, native"
"mciwave.drv" = "builtin, native"
"mciavi.drv" = "native, builtin"
"mcianim.drv" = "native, builtin"
"msacm.drv" = "builtin, native"
"msacm" = "builtin, native"
"msacm32" = "builtin, native"
"midimap.drv" = "builtin, native"
"wnaspi32" = "builtin"
"icmp" = "builtin"




注意: 你见到此中的一些 dll 的第一选项是 elfdll 或 so。对于你这个尝试将是失败的,但你不用管它,它会使用第二个或第三个选项。

4.1.2.7. [options] 段
好象没人知道这段是干什么用的...

  "AllocSystemColors" = "100"


分配的系统颜色? 保持它为 100。

4.1.2.8. [fonts] 段
本段设置 wine 的字体处理。

  "Resolution" = "96"



因为 X 处理字体的方式与 Windows 的方式不同,wine 使用一个特殊的机制来处理它们。它必须使用在"Resolution"设置中的数来缩放字体。60-120 是合理的值,96 是此间的一个很好的值。如果你能获得真实的 windows 字体(参见 < dirs to wine>;/documentation/ttfserver 和 fonts),这个选项就不重要了。当然,总是可以使你的 X 字体在 wine 中工作的很好。

  "Default" = "-adobe-times-"

wine 使用的缺省字体。随你的喜好去设置(fool around with)它。

可选的:

Alias 设置允许你把一个 X 字体映射成在 wine 中使用的一个字体。如果应用程序需要使用你没有的特定字体,而存在一个很好的替代字体,可使用这个设置。语法如下: "AliasX" = "[伪装的 windows 名字],[真实的 X 名字]"<,可选的"屏蔽"标志 >;




非常直接,把 "AliasX" 替换为 "Alias0", 接着 "Alias1" 并以此类推。伪装的 windows 名字是在 wine 中的 windows 应用程序将见到的字体名字。而真实的 X 名字是 X 见到的字体名字(运行 "xfontsel"可以查看)。可选的"屏蔽" 段允许你利用你定义的伪装 windows 名字。如果不使用它,则 wine 将只是尝试提取伪装 windows 名字自身而不使用你输入的值。

下面是没有屏蔽的别名的例子。字体在 windows 应用程序中将表现为"Google"。在一个 config 文件中定义一个别名的时候,请忘记我的注释文本("<-- blah" 材料) "Alias0" = "Foo,--google-"



下面是启用屏蔽的例子。在 windows 中字体将表现为 "Foo"。 "Alias1" = "Foo,--google-,subst"




详情参见 <dirs to wine>;/documentation/fonts

4.1.2.9. [serialports]、[parallelports]、[spooler]、和 [ports] 段
尽管看起来好象是很多段,它们是紧密关联的。它们都是关于通信和并行端口的。

[serialports] 段告诉 wine 那些串行端口是允许使用的。 "ComX" = "/dev/cuaY"



把 X 替换为 Windows 中 COM 端口号(1-8) 而 Y 是它在 X 的编号(通常是在 Windows 中端口号减 1)。 ComX 实际上可以是任何设备(/dev/modem 是可接受的)。不总是需要定义任何 COM 端口(一个可选的设置)。下面是一个例子: "Com1" = "/dev/cua0"



你想设置多少就设置多少。定义你需要的所有 COM 端口。

[parallelports] 段设置在 wine 下可以访问的任何并行端口。 "LptX" = "/dev/lpY"



很熟悉? 语法很象 COM 端口设置。把 X 替代为 1-4 的一个值如同在 Windows 中那样,把 Y 替代为 0-3 的一个值 (同 COM 端口一样,Y 通常是在 windows 中的值减 1)。你不总是需要定义一个并行端口(AKA,它是可选的)。象其他段一样, LptX 可以等于任何设备(可能是 /dev/printer)。下面是一个例子: "Lpt1" = "/dev/lp0"



[spooler] 段将通知 wine 在那里缓冲(spool)打印作业。如果你想打印的话就要使用它。Wine docs 声称现在的缓冲池是 "非常原始的",所以它不能很好的工作。这是可选的。在本段中你唯一的设置工作是把一个端口(例如,LPT1)映射到一个文件或一个命令上。下面是一个例子,把 LPT1 映射到一个文件 out.ps 上: "LPT1:" = "out.ps"



下列命令把到 LPT1 的打印作业映射到命令 lpr。注意这个 |: "LPT1:" = "|lpr"



[ports] 段只在需要直接端口访问的时候是有用的,例如用户的程序需要 dongle(加密/解密器)或扫描仪。如果不需要,就不要用它!

  "read" = "0x779,0x379,0x280-0x2a0"

给予到这些 IO 的直接读访问。

  "write" = "0x779,0x379,0x280-0x2a0"

给予到这些 IO 的直接写访问。这是保持 read 和 write 的设置相同可能是个好主意。只有你以 root 运行的时候这些材料才能工作。

4.1.2.10. [spy]、[Registry]、[tweak.layout]、和 [programs] 段
使用 [spy] 来包含或排除调试信息,并把它们输出到一个文件中。后者是很少使用的。这些都是可选的,你可能不需要向你的 config 中的这个段增加或删除任何东西。

  "File" = "/blanco"

为 wine 设置日志文件。设置为 CON 来记录到标准输出。这很少使用。

  "Exclude" = "WM_SIZE;WM_TIMER;"

在日志文件中排除关于 WM_SIZE 和 WM_TIMER 的调试信息。

  "Include" = "WM_SIZE;WM_TIMER;"

在日志文件中包含关于 WM_SIZE 和 WM_TIMER 的调试信息。

使用 [Registry] 来告诉 wine 你的旧有的 windows 注册表文件存在于什么地方。这个段是完全可选的,而且对没有现存 windows 安装的人是没用的。

  "UserFileName" = "/dirs/to/user.reg"

你旧有的 user.reg 文件的位置。

[tweak.layout] 决定 wine 的外观。它只有一个设置。

  "WineLook" = "win31|win95|win98"

可以把 wine 的外观改变为 Windows 3.1 和 Windows 95。win98 设置的行为在多数情况下类似于 win95。

使用 [programs] 来说明在特定条件下运行什么程序。

  "Default" = "/program/to/execute.exe"

设置启动 wine 而未指定一个程序的时候运行的程序。

  "Startup" = "/program/to/execute.exe"

设置在每次启动的时候自动运行的程序。

4.1.3. 我把它放在哪里?
wine config 文件可以放到两个地方。

/usr/local/etc/wine.conf
系统范围的 config 文件,用于没有自己的配置文件的任何人。注意: 这个文件当前未使用,原因是一个新的全局配置机制现在仍未准备好。

$HOME/.wine/config
你自己的 config 文件,只用于你的用户。

把你的 wine.conf 版本文件复制到 /usr/local/etc/wine.conf 或 $HOME/.wine/config 来让 wine 识别它。

4.1.4. 如果它不工作怎么办?
事情总是可能出错。如果不可想象的事情发生了,尝试一下新闻组,comp.emulators.ms-windows.wine,或者在 irc.stealth.net:6668 或连接的服务器上找寻 IRCnet 频道 #WineHQ。确保你完全的查阅了本文档,并且还读了: 

README

http://www./wine/index.html (可选的,推荐的)

如果看起来你真的已经作了研究,等着收到有帮助的建议好了。如果你没有,作好受到指责的准备。[/color]



4.2. Win95/98 外观
编写:David A. Cuthbert <dacut@ece.cmu.edu>;

(提取自 wine/documentation/win95look)

介绍 Win95/Win98 界面设置。

不再使用 #define 开关为 Win3.1 和 Win95 外观来编译 Wine,现在在 ~/.wine/config 中一个特殊的 [Tweak.Layout] 段中编码,其中有 "WineLook" = "Win95" 或 "WineLook" = "Win98" 条目。

已经向 ~/.wine/config 文件增加了一些新的段和一些条目 -- 它们只是用来调试 Win95 tweak 并且可能在将来的发行中删除掉! 这些条目/段是:

[Tweak.Fonts]
"System.Height" = "<point size>;" # 设置系统字型的高度
"System.Bold" = "[true|false]" # 系统字体是否应该是粗体
"System.Italic" = "[true|false]" # 系统字体是否应该是斜体
"System.Underline" = "[true|false]" # 系统字体是否应该有下划线
"System.StrikeOut" = "[true|false]" # 系统字体是否应该有删除线
"OEMFixed.xxx" # 给 OEM fixed 字型的一些参数
"AnsiFixed.xxx" # 给 Ansi fixed 字型的一些参数
"AnsiVar.xxx" # 给 Ansi variable 字型的一些参数
"SystemFixed.xxx" # 给系统 fixed 字型的一些参数

[Tweak.Layout]
"WineLook" = "[Win31|Win95|Win98]" # 改变 Wine 的感观



4.3. 配置 x11drv 驱动器
编写:Ove Ken <ovek@>;

(提取自 wine/documentation/cdrom-labels)

多数 Wine 用户在一个叫做 X11 的窗口系统下运行 Wine。在 Wine 历史上的多数时期,这是唯一的可获得的显示驱动器,但是在近几年,已经重新组织了部分 Wine 来允许其他显示驱动器(当前只能获得一个可替代的显示驱动器是 Patrik Stridvall 的基于 ncurses 的 ttydrv,他声称用它来显示 calc.exe)。在~/.wine/config 的 [wine] 段中用 GraphicsDriver 选项来选择显示驱动器,但在本文中我只覆盖 x11drv 驱动器。

4.3.1. x11drv 操作模式
x11drv 驱动器由两个概念上的不同部分组成,图形驱动器(GDI 部分),和窗口驱动器(USER 部分)。但它们二者都被连接到 libx11drv.so 模块中(你用 GraphicsDriver 选项装载它)。在 Wine 中,运行在 X11 上,图形驱动器必须在窗口驱动器提供的 drawable (window interior)上绘图。这与 Windows 模型有一点区别, 在 X11 中,窗口系统建立和配置由图形驱动器控制的设备上下文,而允许应用程序在它们喜欢的任何地方用挂钩连接起(hook into)这个联系。所以,为了要在兼容性和可用性之间提供有道理的任何折中,x11drv 有三种不同的操作模式。

 

Unmanaged/Normal
缺省的。窗口管理器无关(完全忽略任何运行的窗口管理器)。 窗口装饰(decoration)(标题条,边界,等)由 Wine 绘制来使感观如同真实的 Windows。这兼容于依靠可以计算出这些装饰的精确大小的应用程序,或想自己画它们的程序。

Managed
使用 --managed 命令行选项或 Managed wine.conf 选项(见后)指定。普通的顶层框架窗口,有粗边界,标题条,和由你的窗口管理器管理的系统菜单。这允许这些应用可以与你的桌面的其余部分更好的集成,但可能不总是工作的很好。(非常需要一个重写的这种操作模式,使它更加健壮和更少瑕疵(patchy),并计划在 Wine 1.0 发行之前完成。)

Desktop-in-a-Box
使用 --desktop 命令行选项(加上一个几何,比如给一个 800x600 这么大的桌面 --desktop 800x600, 或者在显示器的左上角自动的定位桌面 --desktop 800x600+0+0 )。这是与 Windows 模型最兼容的模式。所有应用程序窗口都是在提供给 Wine 的桌面窗口内的 Wine 绘制的窗口(桌面窗口自身由你的窗口管理器来管理),而 Windows 应用可以随心所欲的在这个虚拟工作空间操作并认为完全拥有它,不受你的其他 X 应用程序的打扰。

4.3.2. [x11drv] 段
 

AllocSystemColors
只在你拥有一个基于调色板(palette)的显示器时使用,例如,如果你的 X 服务器被设置为 8bpp 的色深,并且你没有想要的一个私有颜色映射。它指定 Wine 所占有的共享颜色映射(colormap)单元(palette entries)的最大数目。这个值越高,其他应用程序可获得的颜色就越少。

PrivateColorMap
在你拥有一个基于调色板的显示器时使用,例如,如果你的 X 服务器被设置为 8bpp 的色深。它指定你不想使用共享的颜色映射,而是使用一个私有的颜色映射,这这里可以获得全部的 256 种颜色。不足是这个 Wine 的私有颜色映射只在鼠标指针在这个 Wine 窗口期间可以见到,所以如果你频繁使用鼠标就会经常见到迷幻的闪烁和滑稽的颜色。

PerfectGraphics
它确定在 blit 操作中对于特定的 ROP 代码使用快速 X11 例程还是严格的 Wine 例程。多数用户不能找出任何区别。

ScreenDepth
只在多色深显示器上使用。它指定 Wine 应当使用(并告诉 Windows 应用程序)那种可获得的色深。

Display
它指定使用那个 X11 显示器,并且如果被指定了,它将屏弃 DISPLAY 环境变量和 --display 命令行选项二者。

Managed
Wine 可以让框架窗口由你的窗口管理器来管理。这个选项指定你是否想使之成为缺省的。

UseDGA
它指定你是否想让 DirectDraw 使用 XFree86 的直接图形体系 (Direct Graphics Architecture -- DGA),这可以接管整个显示器并在全屏幕下以最大速度运行游戏。(使用 DGA1 (XFree86 3.x),你仍需要首先把 X 服务器配置成游戏所需的 bpp,而使用 DGA2 (XFree86 4.x),依赖于你的驱动器的能力,有可能使用运行时颜色选择。) 但要当心如果 Wine 在 DGA 模式下崩溃,要想收复对你的计算机的控制就只能重启动了。 DGA 通常要求要么特权要么对 /dev/mem 的读/写访问权限。

UseXShm
如果你不希望 DirectX 使用 DGA,你至少可以使用 X 共享内存扩展(X Shared Memory extensions -- XShm)。它比 DGA 慢很多,原因是应用程序不直接访问物理的桢缓冲区,但是使用共享内存来绘制桢至少比使用标准 X11 套接口要快,即使通过 Wine 的 XShm 支持有时仍会崩溃。

DXGrab
如果你不使用 DGA,你可能想要一种替代的方式来确保鼠标光标滞留在游戏窗口中。这个选项就是干这个的。当然,象使用 DGA 一样,如果你的 Wine 崩溃了,你就有麻烦了(但不象 DGA 情况下那么糟,因为你仍然可以使用键盘来退出 X)。

DesktopDoubleBuffered
只在你使用了 --desktop 命令行选项来在一个桌面窗口中运行时使用。指定建立的桌面窗口是否有双缓冲区的 visual,是多数 OpenGL 游戏正确运行所需的东西。


4.4. 注册表
编写:Ove Ken

(提取自 wine/documentation/registry)

在 Win3.x 之后,注册表成为 Windows 的一个基本部分。Windows 自身,和所有遵循 Win95/98/NT/2000/whatever 的应用程序,在其中存贮配置和状态数据。尽管多数有理智的系统管理员(和 Wine 开发者)恶毒的诅咒 Windows 注册表的扭曲天性(twisted nature)。Wine 以某种方式支持它仍是必须的。

4.4.1. 注册表结构
Windows 注册表是一个复杂的树结构,而且多数 Windows 程序员不完全知道注册表是怎样布置的,加上它的不同的 "蜂窝"和它们之间的大量连接;一个完整个论述(coverage)超出了本文档的范围。下面是你需要知道的基本的注册键。

 

HKEY_LOCAL_MACHINE
这个基本根键(在 win9x 中,存储在隐藏文件 system.dat 中)包含与当前 Windows 有关的所有东西。

HKEY_USERS
这个基本根键(在 win9x 中,存储在隐藏文件 user.dat 中)包含这个安装的每个用户的配置数据。

HKEY_CLASSES_ROOT
这是到 HKEY_LOCAL_MACHINE\Software\Classes 的一个连接。它包含描述文件关联、OLE 文档处理器、和 COM 类的数据。

HKEY_CURRENT_USER
这是到 HKEY_USERS\your_username 的一个连接,比如,你的个人配置。

4.4.2. 使用 Windows 注册表
如果你把 Wine 指向一个现存的 MS 安装(通过在 ~/.wine/config 中设置适当的目录,则 Wine 能从中装载注册表数据。但是,Wine 不会把任何东西保存到真实的 Windows 注册表中,而是保存到它自己的注册表文件中(见后)。当然,如果在 Windows 注册表和 Wine 注册表二者中都存在一个特定的注册值,则 Wine 将使用后者。

偶尔的,Wine 装载 Windows 注册表可能有麻烦。通常,这是因为注册表是不一致或以某种方式被破坏的。如果出现了这个问题,你可以从 MS 的网站下载 regclean.exe 并使用它来清理注册表。作为替代,你总是可以使用 regedit.exe 来把你需要的数据导出到一个文本文件中,并接着导入到 Wine 中。

4.4.3. Wine 注册表数据文件
在用户的主目录中,有一个叫 .wine 的子目录,Wine 缺省的将尝试在这里保存它的注册表。它保存到四个文件中,它们是:

 

system.reg
这个文件包含 HKEY_LOCAL_MACHINE。

user.reg
这个文件包含 HKEY_CURRENT_USER。

userdef.reg
这个文件包含 HKEY_USERS\.Default (比如,缺省用户设置)。

wine.userreg
Wine 把 HKEY_USERS 保存到这个文件中(当前和缺省二者),但不从中装载,除非 userdef.reg 丢失的。

所有这些文件是常人可读的文本文件,所以不象 Windows,如果需要的话,你实际上可以用一个普通的文本编辑器来编辑它。

除了这些文件之外,Wine 还可以有选择的从全局注册表文件中装载,它驻留在与全局 wine.conf 相同的目录中(比如,如果你从源代码编译的话则是 /usr/local/etc)。它们是:

 

wine.systemreg
包含 HKEY_LOCAL_MACHINE。

wine.userreg
包含 HKEY_USERS。

4.4.4. 系统管理
一个系统管理员可以使用上面的文件结构配置系统,这样一个系统 Wine 安装(和应用程序)可以被所有用户共享,而仍旧让用户拥有它自己的个人化配置。一个管理员可以,在安装了 Wine 和用户需要访问的所有 Windows 应用软件之后,把结果的 system.reg 和 wine.userreg 复制成全局注册表文件(我们假定它驻留在 /usr/local/etc),使用:

cd ~/.wine
cp system.reg /usr/local/etc/wine.systemreg
cp wine.userreg /usr/local/etc/wine.userreg



并且甚至可以把它们符号连接回管理员的帐户上,以便易于以后安装系统范围的应用程序:

ln -sf /usr/local/etc/wine.systemreg system.reg
ln -sf /usr/local/etc/wine.userreg wine.userreg



注意如果你以 root 安装 Wine,tools/wineinstall 脚本已经为你作好了这一切。如果你接着在 root 登录期间安装 Windows 应用程序,你的所有用户就自动的可以使用它们了。应用程序的设置将接受全局注册表,而用户的个人化配置将保存在他们自己的主目录中。

但是要注意对管理员帐户的操作 - 如果你把管理员的注册表复制或连接成全局注册表,任何用户就都可以读到管理员的偏好,如果在其中存储了敏感信息(口令、个人信息,等)这就不好了。只使用管理员帐户安装软件,而不是进行日常工作;平时使用一个普通用户帐户。

4.4.5. 缺省的注册表
一个 Windows 注册表缺省的包含许多键,而其中的一些对于安装程序进行正确的操作是必须的。在叫 winedefault.reg 的文件中包含了 Wine 开发者找到的对安装应用程序是必须的键。如果你使用 tools/wineinstall 脚本则已经为你自动安装了它,如果你想手动安装它,你可以使用 regapi 工具做这件事。你可在 Wine 发布中的 documentation/no-windows 文档中找到更多的信息。

4.4.6. [registry] 段
有了以上信息,下面查看一下 wine.conf/~/.wine/config 中处理注册表的选项。

 

LoadGlobalRegistryFiles
控制是否尝试装载全局注册表,如果它存在的话。

LoadHomeRegistryFiles
控制是否尝试装载用户的注册表文件(在用户的主目录中的 .wine 子目录中)。

LoadWindowsRegistryFiles
控制 Wine 是否尝试从在现存的 MS Windows 安装中的真实的 Windows 注册表中装载注册信息。

WritetoHomeRegistryFiles
控制是否把注册信息写到用户的注册表文件中(目前,这是没有选择的,就是说如果你把它关闭了, Wine 根本就不能把注册表保存到磁盘上;你退出 Wine 之后,你的变动就消失了。)

UseNewFormat
这个选项被废弃了。Wine 现在总是使用新格式;前些时候去除了对旧格式的支持。

PeriodicSave
如果设置这个选项为一个非零的值,它指定你想以一个给定的时间间隔把注册表保存到磁盘上。如果你未设置它,则只在 wineserver 终止的时候把注册表保存到磁盘上。

SaveOnlyUpdatedKeys
控制是把整个注册表保存到用户的注册表文件中,还是只保存用户实际上变更了的子键。考虑到用户的注册表将屏弃任何全局注册表文件和 Windows 注册表文件,通常应该只保存用户修改了的子键; 这种方式下,对全局或 Windows 注册表其余部分的变动仍可以影响这个用户。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多