设置 config 文件等。
Copyright 1999 Adam Sacarny <magicbox@bestweb.net>
(提取自 wine/documentation/config)
本节将带领你经过制作一个 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] | 否 | 控制台设置 |
这是自明的,下面是深入的指导。对于 Wine 中的每个驱动器最多有 6 行。
[Drive X] |
Path=/dir/to/path |
"Type" = "floppy|hd|cdrom|network" <--- 这个 | 的意思是 "Type = "<选项之一>" |
设置 Wine 将见到的驱动器类型。类型必须等于下列四者之一 floppy、hd、cdrom、或 network。它们是自明的。
"Label" = "blah" |
"Serial" = "deadbeef" |
"Filesystem" = "msdos|win95|unix" |
大小写不敏感文件系统。类似于 DOS 和 Windows 3.x。 8.3 是文件名的最大长度(eightdot.123) - 更长的部分将被截掉。(注意: 如果你想运行使用长文件名的程序,这将是非常糟的选择。win95 可以很好的与设计在 msdos 系统下运行的应用程序一起工作。换句话来说,你可能不需要使用它。)
大小写不敏感。类似于 Windows 9x/NT4。这可能是你用来工作的长文件名文件系统。是给 wine 下运行的多数应用程序选择的文件系统。可能正是你需要的!
大小写敏感。这个文件系统基本不用(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" |
配置文件的 [wine] 段包含 wine 使用的目录的信息。在给这些设置指定目录的时候,按它们在 wine 中出现的那样设置它们。如果你的驱动器 C 有一个路径 /dos,并且你的 windows 目录位于 /dos/windows,则使用:
"Windows" = "c:\\windows" |
它设置 windows 目录。如果你未曾有这个目录则建一个。没有尾随的斜杠(不能是 C:\\windows\)!
"System" = "c:\\windows\\system" |
"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" |
"printer" = "off|on" |
在 wine 配置文件中设置 DLL 段之前,你需要知道一些事情。
多数 windows DLL 有 win16 (Windows 3.x) 和 win32 (Windows 9x/NT) 两种形式。win16 和 win32 DLL 版本的组合叫做"DLL 对"。下面是最常见的 DLL 对:
wine 可以装载的 DLL 有多种形式:
DLL 包含在 windows 中。许多 windows DLL 可以用它们固有的形式来装载。许多时候这些固有版本比它们的非 Microsoft 替代品要好一些,但不总是。
用 ELF 封装的 windows DLL。当前还是实验性的(仍不能工作)。
本地 ELF 库。仍不能工作。
DLL 装载的最通常形式。如果 DLL 用固有形式装载是错误的(error-prone)(例如,KERNEL),你没有固有的 DLL,或你想自由于 Microsoft,则可以使用它们。
这些设置提供了 wine 的缺省 DLL 装载处理。
"DefaultLoadOrder" =" native, so, builtin" |
这个设施是一个逗号分界的列表,按它的次序尝试装载 DLL。如果第一种选项失败了,它将尝试第二种,以次类推。上面的次序在多数情况下是最好的。
有时,在缺省配置文件中有一个叫做 [DllPairs] 的段,它已经被废弃了,原因是组对信息已经被嵌入到 Wine 自身中。(本段的目的只不过是如果用户尝试组对(pair codependent)不同类型的16-bit/32-bit DLL 则发起警告。) 如果你的 wine.conf 或 ~/.wine/config 中仍然有它,你删除它是安全的。
本段的格式对于每行都是相同的:
<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。对于你这个尝试将是失败的,但你不用管它,它会使用第二个或第三个选项。
本段设置 wine 的字体处理。
"Resolution" = "96" |
因为 X 处理字体的方式与 Windows 的方式不同,wine 使用一个特殊的机制来处理它们。它必须使用在"Resolution"设置中的数来缩放字体。60-120 是合理的值,96 是此间的一个很好的值。如果你能获得真实的 windows 字体(参见 <dirs to wine>/documentation/ttfserver 和 fonts),这个选项就不重要了。当然,总是可以使你的 X 字体在 wine 中工作的很好。
"Default" = "-adobe-times-" |
可选的:
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
尽管看起来好象是很多段,它们是紧密关联的。它们都是关于通信和并行端口的。
[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" |
"write" = "0x779,0x379,0x280-0x2a0" |
使用 [spy] 来包含或排除调试信息,并把它们输出到一个文件中。后者是很少使用的。这些都是可选的,你可能不需要向你的 config 中的这个段增加或删除任何东西。
"File" = "/blanco" |
"Exclude" = "WM_SIZE;WM_TIMER;" |
"Include" = "WM_SIZE;WM_TIMER;" |
使用 [Registry] 来告诉 wine 你的旧有的 windows 注册表文件存在于什么地方。这个段是完全可选的,而且对没有现存 windows 安装的人是没用的。
"UserFileName" = "/dirs/to/user.reg" |
[tweak.layout] 决定 wine 的外观。它只有一个设置。
"WineLook" = "win31|win95|win98" |
使用 [programs] 来说明在特定条件下运行什么程序。
"Default" = "/program/to/execute.exe" |
"Startup" = "/program/to/execute.exe" |
wine config 文件可以放到两个地方。
系统范围的 config 文件,用于没有自己的配置文件的任何人。注意: 这个文件当前未使用,原因是一个新的全局配置机制现在仍未准备好。
你自己的 config 文件,只用于你的用户。
把你的 wine.conf 版本文件复制到 /usr/local/etc/wine.conf 或 $HOME/.wine/config 来让 wine 识别它。
事情总是可能出错。如果不可想象的事情发生了,尝试一下新闻组,comp.emulators.ms-windows.wine,或者在 irc.stealth.net:6668 或连接的服务器上找寻 IRCnet 频道 #WineHQ。确保你完全的查阅了本文档,并且还读了:
README
如果看起来你真的已经作了研究,等着收到有帮助的建议好了。如果你没有,作好受到指责的准备。