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

(提取自 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 将见到的驱动器类型。类型必须等于下列四者之一 floppyhdcdrom、或 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/ttfserverfonts),这个选项就不重要了。当然,总是可以使你的 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 的直接写访问。这是保持 readwrite 的设置相同可能是个好主意。只有你以 root 运行的时候这些材料才能工作。

4.1.2.10. [spy]、[Registry]、[tweak.layout]、和 [programs] 段

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

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

 
"Exclude" = "WM_SIZE;WM_TIMER;"
在日志文件中排除关于 WM_SIZEWM_TIMER 的调试信息。

 
"Include" = "WM_SIZE;WM_TIMER;"
在日志文件中包含关于 WM_SIZEWM_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。确保你完全的查阅了本文档,并且还读了: 

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