如何安装 Wine...
编写: Ove K鍁en <ovek@winehq.com>
一个 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 来建立一个配置文件、安装注册表、并建立自己的目录结构。
缺省的注册表在文件 winedefault.reg 中。它包含目录路径、类 ID、及其他东西;在多数 INSTALL.EXE 或 SETUP.EXE 运行之前必须安装它。在以前的文章中有对注册表非常详细的介绍。
下面是 Windows 应用程序和安装器所期望的基本格局。没有它,这些程序不能正确操作。
C:\ | 主磁盘驱动器的根目录 | |||
Windows\ | Windows 目录,包含 .INI 文件、附件等 | |||
System\ |
Win3.x/95/98/ME 给公用 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-相容的(大小写不敏感)文件系统,否则多数应用程序将不能工作。
Wine 小组决定需要建立伪 DLL 文件来欺骗那些通过检查文件存在来确定是否可获得一个特征(比如 Winsock 和它的 TCP/IP 连网)的应用程序。如果你也有这个问题,你可以在 system 目录中建立一个空文件来让应用程序认为它存在,而在应用实际要求它的时候 Wine 将装载它的内置的 DLL。(不幸的是, tools/wineinstall 自身不建立这样的空文件。)
应用程序有时还尝试从物理文件中检查资源的版本(例如,要确定 DirectX 版本)。在这种情况下空文件就不起作用了,必须有完整版本资源的安装文件。当前正在处理这个问题。目前,你仍需获取一些真实的 DLL 来欺骗这些应用程序。
对于那些 wine 目前未很好实现(或根本未实现)的 DLL。如果不拥有一个真实的 Windows,则有的人将会窃取所需的 DLL,总是可以从象 http://solo.abac.com/dllarchive/ 这样的地方得到一个 DLL 归档。