wine 中文快速上手 使用手册

Wine 使得在任何类 Unix 操作系统(尤其是 Linux)上运行 Windows 程序成为可能。Wine 的核心是 Windows 应用程序编程接口 (API) 库的实现,充当 Windows 程序和 Linux 之间的桥梁。将 Wine 视为一个兼容层,当 Windows 程序尝试执行 Linux 通常无法理解的功能时,Wine 会将程序的指令翻译成系统支持的指令。例如,如果一个程序要求系统创建一个 Windows 按钮或文本编辑字段,Wine 将使用标准 X11 协议以命令的形式将该指令转换为它的 Linux 等效指令到窗口管理器。

1简介

1.1概述/关于

1.1.1本文档的目的和目标读者

该文档称为 Wine 用户指南,既是简单的安装指南,也是广泛的参考指南。本指南适用于 Wine 新用户和经验丰富的 Wine 用户,提供完整的逐步安装和配置说明,并通过记录所有配置功能和支持区域提供大量参考资料。

1.1.2进一步的问题和评论

如果在查看本指南、常见问题解答和其他相关文档后,您仍然无法弄清楚,我们很乐意听取您的意见。邮件列表部分包含几个邮件列表和一个 IRC 频道,所有这些都是寻求帮助和提供建议的好地方。如果您特别精​​明,并且认为可以更好地解释某些内容,则可以提交错误报告请求访问以自己编辑 wiki。

1.1.3内容概述/采取的步骤

为了能够使用 Wine,您必须首先有一个工作安装。本指南将帮助您将您的系统从一个空的、无 Wine 的空洞转移到一个拥有全新的、最新的 Wine 安装的系统。第一步,获取 Wine,说明了将 Wine 的文件获取到您的计算机上的各种方法。第二步,配置 Wine,展示了如何根据您的个人需求自定义 Wine 安装。最后一步,运行 Wine,涵盖了使特定应用程序在 Wine 下更好地运行的具体步骤,并提供有用的链接以防您需要进一步的帮助。

1.1.4快速入门

Wine的安装和运行过程可以总结如下:

  • 按照获取 Wine中的说明获取分发,并查看Wine 下载页面。对于临时用户或新用户,最简单的方法是为您的发行版获取打包版本。
  • 可以选择使用winecfg命令配置 Wine 。Wine 应该可以在没有任何额外配置选项的情况下工作。
  • wine notepad要测试您的安装,请使用该命令运行 Wine 记事本克隆。
  • 检查 Wine AppDB以获取安装或运行应用程序所需的特定说明或步骤。
  • 使用命令运行 Wine: wine path/to/appname.exe
  • 您将运行的第一个命令将是安装应用程序。通常wine /media/cdrom/setup.exe可以使用类似路径或等效路径从 CD 安装应用程序。


1.2什么是葡萄酒?

1.2.1 Windows 和 Linux

不同的软件程序是为不同的操作系统设计的,大多数软件程序不能在它们不是为它们设计的系统上运行。例如,Windows 程序不会在 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 会将程序的指令翻译成系统支持的指令。例如,如果一个程序要求系统创建一个 Windows 按钮或文本编辑字段,Wine 将使用标准 X11 协议以命令的形式将该指令转换为它的 Linux 等效指令到窗口管理器。

如果您可以访问 Windows 程序源代码,还可以使用 Wine 将程序重新编译为 Linux 可以更容易理解的格式。Wine 仍然需要以重新编译的形式启动程序,但是在 Linux 中本地编译 Windows 程序有很多优点。有关详细信息,请参阅 Winelib 用户指南。

1.2.3葡萄酒特点

在整个开发过程中,Wine 的功能和可以运行的程序都在不断发展。这些功能的部分列表如下:

  • 支持运行Win64、Win32(Win 95/98、NT/2000/XP/2003/Vista/2008/7/8/8.1/10)、Win16(Win 3.1)和DOS程序
  • 可选择使用外部供应商 DLL 文件(例如 Windows 中包含的那些)
  • 基于 X11 的图形显示,允许远程显示到任何 X 终端,以及文本模式控制台
  • macOS 和 Android 图形支持
  • Desktop-in-a-box 或可混合的窗口
  • 对游戏的 DirectX 支持
  • 对各种声音驱动程序的良好支持,包括 ALSA、OSS、PulseAudio 和 CoreAudio
  • 支持替代输入设备,例如图形输入板。
  • 打印:PostScript 接口驱动程序使用标准 Unix PostScript 打印服务,例如 CUPS
  • 调制解调器、串行设备支持
  • Winsock TCP/IP 网络支持
  • 对扫描仪、CD 刻录机和其他设备的 ASPI 接口 (SCSI) 支持
  • 高级 Unicode 和外语支持
  • 功能齐全的 Wine 调试器和可配置的跟踪日志消息,便于故障排除

1.3 Wine 的版本

1.3.1 WineHQ 的葡萄酒

Wine 是一个开源项目,因此有许多不同版本的 Wine 供您选择。WineHQ 目前在两个分支中提供基于时间的版本:stabledevelopment

  • 稳定分支按年度发布计划,根据需要进行小更新(通常每 10-12 周)。此版本适用于应用程序和游戏已在现有代码中运行良好且对测试新版本不感兴趣的用户。
  • 该开发是按双周发布时间表进行的。这个分支是主分支,在这里进行错误修复和添加新功能。推荐给想要或需要最新功能和错误修复的用户。稳定分支不起作用的应用程序/游戏的用户应始终在提交错误之前测试开发版本。
  • 自 2015 年 9 月以来,出现了第三个官方分支,称为staging。此分支包含数百个尚未准备好包含在主分支中的实验性补丁,建议受标记为 STAGED 的错误影响的应用程序/游戏的用户以及有兴趣帮助测试实验性补丁的用户使用。


这些版本可以通过 Internet 以预先打包的二进制形式和/或准备编译源代码的形式下载。此外,您可以使用来自 Git 存储库的最新可用源代码安装最新的 Wine 开发版本(通常每周更新 5 天)。

每个版本的 Wine 都有一个发布标签。从 Wine 2.0 开始,发布标签使用以下格式:

所有分支,新的主要版本:

wine - x.0

所有分支,发布候选:

wine-x.y-rcn

稳定的分支更新:

wine-x.0.z

开发分支更新:

wine-xy 

笔记:

  • x是主要版本号。这个数字通常每年增加一次,通常在一月份。
  • y是开发分支更新的版本号,也用于暂存分支。这通常每两周增加一次。暂存版本附加-staging到版本号
  • z是稳定分支更新的版本号。这由稳定的维护者自行决定增加。
  • 有关标签列表,请参见此处


如果您使用git,标签将由git-describe命令生成,如下所示:

wine -x.y.z -n -g ccccccc _

其中 n 是自 x 以来应用的补丁/提交数。 的。 z 已发布,并且 ccccccc是最近提交 id 的前几个十六进制数字。示例:wine-1.1.19-228-g1e256e4、wine-1.1.25-311-g3d6bb38、wine-1.1.32-584-g10b0b86。

例子:

发布标签日期笔记葡萄酒-2.02017 年 1 月 24 日新的主要版本葡萄酒-2.12017 年 2 月 3 日开发分支发布wine-2.1-staging2017 年 2 月 9 日暂存分支发布葡萄酒-2.0.12017 年 3 月 27 日稳定的分支更新wine-3.0-rc12017 年 12 月 8 日3.0 的第一个候选版本

有关详细信息,请参阅下一章,获取葡萄酒

1.3.2 Wine的其他版本

有许多程序以某种方式从标准 Wine 代码库派生而来。其中一些是来自积极为 Wine 项目做出贡献的公司的商业产品。

这些产品试图通过提供更大的兼容性、更简单的配置和商业支持来从标准版 Wine 中脱颖而出或区分开来。如果您需要这些东西,最好考虑购买这些产品。

各种酒品产品描述分发表格CodeWeavers 交叉CrossOver 允许您在 Linux 中安装您最喜欢的 Windows 生产力应用程序,而无需 Microsoft 操作系统许可证。CrossOver 包括一个易于使用的单击界面,这使得安装 Windows 应用程序变得简单快捷。商业的; 提供 30 天的全功能演示。

1.4您可能要考虑的 Wine 替代品

除了通过 Wine 之外,还有很多方法可以运行软件。如果您正在考虑使用 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 硬件。开源的BochsVirtualBoxQEMU可以虚拟运行 Windows 和 ReactOS。其他商业虚拟机产品包括VMware和 Microsoft 的VirtualPC

然而,使用虚拟机有很大的缺点。与 Wine 不同,此类程序模拟器,因此不可避免地会出现速度下降,这可能是相当可观的。此外,在虚拟机中运行应用程序会阻止将应用程序完全集成到当前环境中。例如,您不能将 Windows 系统托盘图标或程序快捷方式放在桌面 Linux 的旁边,因为 Windows 应用程序必须完全驻留在虚拟机中。

2取酒

2.1 Wine安装方法

一旦您确定 Wine 适合您的需求,下一步就是决定您希望如何安装它。从 WineHQ 安装 Wine 有三种方法,每种方法各有优缺点。

2.1.1从包安装

到目前为止,安装 Wine 最简单的方法是使用预打包的 Wine。这些包包含专门为您的发行版编译的准备运行的 Wine 二进制文件,并且它们由打包者定期测试其功能和完整性。

软件包是安装 Wine 的推荐方法。我们可以在WineHQ 下载页面轻松获取它们,并且这些始终是可用的最新软件包。Wine 包很受欢迎,也可以在官方分发存储库的其他地方找到。但是,这些有时可能会过时,具体取决于分布。软件包也很容易升级,许多发行版只需点击几下即可无缝升级 Wine。从源代码包构建您自己的可安装二进制包也是可能的,尽管它超出了本指南的范围。

2.1.2从源存档安装

有时 Wine 包并不完全符合您的需求。也许它们不适用于您的架构或发行版,或者您可能想使用自己的编译器优化或禁用某些选项来构建 Wine,或者您可能需要在编译之前修改源代码的特定部分。作为一个开源项目,您可以使用 Wine 源代码自由地做所有这些事情,该源代码随每个 Wine 版本提供。这种安装方法可以通过下载 Wine 源文件并从命令行编译来完成。如果您对这些事情感到满意并且有特殊需求,那么此选项可能适合您。

获取 Wine 源档案很简单。每个版本,我们都会在WineHQ 下载页面放置一个压缩的tar.xz格式的源代码包。从源代码编译和安装 Wine 比使用包稍微困难一些,但是我们将深入介绍它并尝试在此过程中握住你的手。

2.1.3从 Git 树安装

如果您想尝试最前沿的 Wine 开发,或者甚至想帮助自己开发 Wine,您可以从我们的 Git 存储库下载最新的源代码。Git Wine 教程中提供了从 Wine Git 存储库下载的说明。

请注意,使用开发版本的常见警告仍然适用。Git 存储库上的源代码很大程度上未经测试,甚至可能无法正确编译。然而,这是测试 Wine 在下一个版本中如何工作的最佳方式,如果您正在修改源代码,最好获取最新的副本。Git 存储库对于有兴趣测试应用程序是否仍能在下一个版本中正常工作,或者最近的补丁是否确实改进了事情的应用程序维护者也很有用。如果您有兴趣帮助我们让应用程序在 Wine 中运行,请参阅Wine 安装和配置指南。

2.2从包中安装 Wine

2.2.1安装新包

在新系统上安装软件包非常简单。只需使用您的发行版提供的任何实用程序下载并安装该软件包。通常不需要在安装之前明确删除旧包,因为现代 Linux 发行版应该自动升级和替换它们。但是,如果您从源代码安装 Wine,则应在安装 Wine 包之前将其删除。有关正确说明, 请参阅从源代码卸载 Wine的部分。

2.2.2不同的分布

Wine 在大量不同的 Linux 发行版以及其他类 Unix 系统(如 Solaris 和 FreeBSD)上工作,每个系统都有自己特定的安装和管理软件包的方式。然而,幸运的是,相同的一般思想适用于所有这些,并且无论您使用什么发行版,安装 Wine 应该不会比安装任何其他软件更困难。卸载 Wine 包也很简单,在现代 Linux 发行版中,通常通过与包安装相同的简单界面来完成。

在本指南中,我们不会在各种系统的打包和包管理方法中介绍安装或卸载 Wine 包的细节,但是,可以在 WineHQ 网站的 Category:Distributions中找到特定发行版的最新安装说明。如果您需要进一步的帮助来了解如何简单地安装 Wine 包,我们建议您查阅您的发行版的文档、支持论坛或 IRC 频道。

2.3从源代码安装 Wine

在从源代码安装 Wine 之前,请确保您卸载了系统上可能拥有的所有 Wine 二进制包。从源代码安装需要使用终端窗口以及 Wine 源代码的完整副本。从 Git 下载源代码或从存档中提取源代码后,使用终端导航到它,然后执行其余步骤。

2.3.1获取构建依赖

Wine 在其运行过程中使用了许多开源库。虽然 Wine 并不严格依赖于这些库,并且可以在没有它们的情况下进行编译,但通过让它们在编译时可用,Wine 的大部分功能都得到了改进。过去,许多用户问题是由于人们在从源代码构建 Wine 时没有必要的开发库引起的;由于这个原因和其他原因,我们强烈建议通过二进制包或通过构建可以自动满足其构建依赖关系的源包进行安装。

如果您希望手动安装构建依赖项,有几种方法可以查看您是否缺少一些有用的开发库。最直接的方法是在编译 Wine 之前观察configure的输出,看看是否缺少任何重要的东西;如果是,只需安装缺少的内容并在编译之前重新运行configure 。您还可以检查configure生成的文件 ( include/config.h ) 并查看configure正在寻找但未找到的文件。

2.3.2编译wine

一旦你安装了你需要的构建依赖,你就可以编译这个包了。在终端窗口中,导航到 Wine 源代码树后,运行以下命令:

$ ./configure
$ make depend
$ make

因为 Wine 可以从构建目录运行,所以不需要安装它。如果你确实想安装它,在 wine 构建完成后,运行

# make install

此命令需要 root 权限。尽管您永远不应该以 root 身份运行 Wine,但您需要以这种方式安装它。

2.3.3从源码卸载Wine

要从源中卸载 Wine,请再次导航到您使用终端安装 Wine 时使用的同一源文件夹。然后,运行以下命令:

# make uninstall

此命令将需要 root 权限,并且应该从系统中删除所有 Wine 文件。但是,它不会删除您的 Wine 配置和位于用户主目录中的应用程序,因此您可以自由安装另一个版本的 Wine 或手动删除该配置。

3使用葡萄酒

本章将介绍使用 Wine 的各个方面,例如基本的 Wine 调用、安装和运行 Windows 可执行文件、各种 Wine 支持程序的命令行参数等。

你可以简单地调用wine命令来获得一个小的帮助信息:

用法:wine PROGRAM [ARGUMENTS...] 运行指定程序
       wine --help 显示此帮助并退出
       wine --version 输出版本信息并退出

第一个参数应该是您希望 wine 执行的文件的名称。如果可执行文件在Path环境变量中,您可以简单地给出可执行文件名。但是,如果可执行文件不在Path中,则必须提供可执行文件的完整路径。有关详细信息,请参阅 #如何从命令行运行 Windows 程序

3.1如何安装和运行 Windows 程序

大多数二进制 Wine 软件包都会为您将 Wine 与.exe文件相关联。如果是这种情况,您应该能够在文件管理器中简单地双击 .exe 文件,就像在 Windows 中一样。您也可以右键单击文件,选择“运行方式”,然后选择“Wine”。这有时可能会在错误的程序中打开文件 - 如果发生这种情况,请使用桌面环境提供的任何工具检查文件的文件类型关联,并根据需要进行编辑。请注意,如果您从源代码构建 Wine,您将必须自己创建文件类型关联。

如上所述,通过文件管理器启动.exe文件通常只需要安装程序和没有安装程序的简单可执行文件。使用 Wine 安装应用程序后,它可能会在您计算机的应用程序 → Wine → 程序菜单中有一个条目,和/或桌面上有一个图标,就像在 Windows 下一样。您应该能够像在 Windows 上一样使用它们。

如果上述方法失败,请打开终端并按照以下说明从命令行 运行.exe 。

3.1.1如何从命令行运行 Windows 程序

这将允许您查看来自 Wine 的消息,这些消息可能有助于解决问题。

因为 Windows 程序通常会在它们启动的位置查找文件,所以在使用命令行时,您应该以非常特定的方式启动它们:“更改目录”到程序所在的文件夹并使用运行.exe文件只有它的文件名。例如:

cd '.wine/drive_c/Games/Tron'
wine tron.exe 

有关运行文本模式 (CUI) 可执行文件的详细信息,请阅读 文本模式程序部分

3.1.1.1使用wine启动

在某些情况下,您可能需要指定可执行文件的完整路径。例如,如果您需要从多张 CD 安装程序,则在终端中输入目录将阻止您移除 CD。

如果指定 .exe 的完整路径,则需要使用wine start,因为这允许 Wine 在需要时为程序设置工作目录。

  • 您可以在单引号内为 Wine 提供 DOS 或 Windows 样式路径,如下所示:
wine start 'C:\Games\Tron\tron.exe'
  • 你也可以使用双引号,但你需要两个反斜杠而不是一个:
wine start “C:\\Games\\Tron\\tron.exe”
  • 如果您喜欢使用 Unix 风格的路径名,请使用 /unix 选项来启动,例如
wine start /unix "$HOME/installers/TronSetup.exe"
3.1.1.2传递 Windows 命令行参数

如果您在 Windows 上使用带有开关的程序,例如:

quake.exe -map e1m1 

然后你可以通过运行在 Wine 中做同样的事情:

wine quake.exe -map e1m1 

也就是说,命令行是相同的,只是前面加了 wine 。但是请注意,由于在 Linux shell 中的处理方式,您可能需要使用反斜杠转义某些特殊字符。例如:

quake.exe -map C:\Quake\e1m1.bsp 

变成:

wine quake.exe -map C:\\Quake\\e1m1.bsp 
3.1.1.3 运行 .msi文件

MSI 文件不能直接运行;您需要使用 Wine 的msiexec程序或从终端 启动 wine :

wine msiexec /i some.msi 

或者:

wine start some.msi

3.2基本用法:应用程序和控制面板小程序

应用程序在 Wine 下的安装方式与在 Windows 中的安装方式相同:通过运行安装程序。您可以只接受安装位置的默认值,大多数安装程序将默认为C:\Program Files,这很好。如果应用程序安装程序请求它,您可能会发现 Wine 在您的桌面和应用程序菜单中创建图标。如果发生这种情况,您可以通过单击它们来启动应用程序。

卸载东西的标准方法是应用程序提供一个卸载程序,通常在“添加/删除程序”控制面板小程序中注册。要访问 Wine 等价物,请在终端中运行卸载程序(它位于Wine 源目录 中的programs/uninstaller/目录中):

$ wine uninstaller

有些程序会安装相关的控制面板小程序,例如 Internet Explorer 和 QuickTime。您可以通过在终端中运行来访问 Wine 控制面板:

$ wine control

这将打开一个窗口,其中包含已安装的控制面板小程序,就像在 Windows 中一样。

如果应用程序没有安装菜单或桌面项目,您需要从命令行运行应用程序。记住您安装到的位置,例如:

$ wine "C:\Program Files\ appname \ appname.exe "

可能会成功。该路径不区分大小写,但请记住包含双引号。一些程序并不总是对其目录和可执行文件使用明显的命名,因此您可能需要查看Program Files目录以查看放在哪里。

另请参阅: 命令列表

3.3类似资源管理器的图形 Wine 环境

如果您更喜欢使用图形界面来管理您的文件,您可能需要考虑使用winefile。这个 Winelib 应用程序随 Wine 一起提供,可以在其他 Wine 程序中找到。这是查看驱动器配置和定位文件的有用方法,而且您可以直接从winefile执行程序。请注意,许多功能尚未实现。

3.4 Wine 命令行选项

3.4.1 --help

显示一个小的命令行帮助页面。

3.4.2 --version

显示 Wine 版本字符串。有助于验证您的安装。

3.5环境变量

3.5.1 WINEDEBUG =频道

Wine 并不完美,许多 Windows 应用程序仍然无法在 Wine 下运行时没有错误(但是,很多程序在本机 Windows 下也无法在没有错误的情况下运行!)。为了让人们更容易追踪每个错误背后的原因,Wine 提供了许多您可以利用的调试通道。

每个调试通道在激活时都会触发日志消息,以显示到您调用wine的控制台。从那里您可以将消息重定向到一个文件并在您空闲时检查它。但请注意!一些调试通道可以生成大量的日志消息。最多产的违规者包括每次调用 win32 函数时都会输出一条日志消息的中继,跟踪 Windows 消息传递的win,当然还有所有存在的每个调试通道的别名。对于复杂的应用程序,您的调试日志很容易达到 1 MB 或更高。一个继电器trace 通常会生成超过 10 MB 的日志消息,具体取决于您运行应用程序的时间。(您需要查看RelayExclude注册表项以修改中继跟踪报告的内容)。日志确实会减慢 Wine 的速度,所以WINEDEBUG除非你真的想要日志文件,否则不要使用。

在每个调试通道中,您可以进一步指定一个消息类,以过滤掉不同严重性的错误。四个消息类是:trace、fixme、warn、err。

要打开调试通道,请使用表单class+channel。要关闭它,请使用class-channel。要在同一选项中列出多个频道,请WINEDEBUG用逗号分隔它们。例如,要在堆调试通道中请求警告类消息,您可以像这样调用wine

$ WINEDEBUG=warn+heap wine program_name

如果你离开消息类,Wine 将显示来自该通道的所有四个类的消息:

$ WINEDEBUG=堆酒程序名称

如果您想查看除中继通道之外的所有内容的日志消息,您可以执行以下操作:

$ WINEDEBUG=+all,-relay wine program_name

您可以在Debug Channels找到调试通道和类的列表。更多频道将添加到(或从中减去)以后的版本。

有关调试通道的更多详细信息,请查看Wine 开发人员指南

3.5.2 WINEDLLOVERRIDES = DLL 覆盖

并非总是可以在内置 DLL 上运行应用程序。有时本机 DLL 工作得更好。尽管可以使用winecfg设置这些 DLL 覆盖,但您可能希望使用WINEDLLOVERRIDES环境变量来设置它们。

例子:

$ WINEDLLOVERRIDES="comdlg32,shell32=n,b" program_name

尝试首先将comdlg32和shell32作为本机 Windows DLL 加载,如果本机加载失败,请尝试内置版本。

$ WINEDLLOVERRIDES="comdlg32,shell32=n;c:\\foo\\bar\\baz=b" program_name

尝试将comdlg32和shell32库加载为本机 Windows DLL。此外,如果应用程序请求加载c:\foo\bar\baz.dll加载内置库baz。

$ WINEDLLOVERRIDES="comdlg32=b,n;shell32=b;comctl32=n;oleaut32="wine program_name

尝试先将comdlg32加载为内置版本,如果内置加载失败则尝试原生版本;始终以内置方式加载shell32 ,始终以本机方式加载comctl32。oleaut32将被禁用。

有关 DLL 覆盖的更多信息,请参阅本指南的DLL 覆盖部分。

3.5.3 WINEARCH

指定要支持的 Windows 体系结构。它可以设置为win32(仅支持 32 位应用程序)或win64(在 WoW64 模式下同时支持 64 位应用程序和 32 位应用程序)。给定 Wine 前缀支持的架构是在创建前缀时设置的,之后无法更改。当使用现有前缀运行时,如果WINEARCH与前缀架构不匹配,Wine 将拒绝启动。

3.5.4 WINEPREFIX

指定要使用的配置目录的位置。指定时使用完整的 unix 样式路径。默认的 wineprefix 是 $HOME/.wine。一个用户可以在同一个系统上拥有多个 wineprefixes。有关更多信息 ,请参阅FAQ 的 Wineprefixes 部分。

3.5.5 OSS 音频驱动设置

如果您正在使用 OSS 音频驱动程序并且您有多个设备(即/dev/dsp*、/dev/mixer*),您可以使用以下环境变量指定要使用的设备:

  • AUDIODEV=audio device
  • MIXERDEV=mixer device
  • MIDIDEV=MIDI device

举个例子:

$ AUDIODEV=/dev/dsp4 MIXERDEV=/dev/mixer1 MIIDEV=/dev/midi3 wine program_name

3.6 wineserver命令行选项

每当第一个 Wine 进程启动时, wineserver通常会由 Wine 自动启动。但是,wineserver有一些有用的命令行选项,如果您手动启动它,您可以添加这些选项,例如通过用户登录脚本等。

3.6.1 -d n

设置wineserver在级别n启动的终端中调试输出的调试级别。换句话说:所有大于 0 的都将启用wineserver特定的调试输出。

3.6.2 -h

显示wineserver命令行选项帮助信息。

3.6.3 -k [ n ]

杀死当前的wineserver,可选择使用信号 n。

3.6.4 -p [ n ]

此参数使wineserver持久化,可选 n 秒。它将防止wineserver立即关闭。

通常,在使用此wineserver的最后一个 Wine 进程终止后, wineserver几乎立即退出。然而,由于wineserver在启动时会加载很多东西(例如整个 Windows 注册表数据),它的启动可能非常缓慢,因此通过使其持久化来防止它在所有 Wine 会话结束后退出非常有用。

3.6.5 -w

此参数使新启动的wineserver等待直到当前活动的实例终止。

3.6.6设置 Windows/DOS 环境变量

此页面或部分在一个或多个区域已过时。可能的讨论可以在讨论页上找到。请更新以反映当前信息。

您的程序可能需要正确设置一些环境变量才能成功运行。在这种情况下,您需要在 Linux shell 中设置此环境变量,因为 Wine 会将整个 shell 环境变量设置传递给 Windows 环境变量空间。bash shell的示例(其他 shell 可能有不同的语法!):

export MYENVIRONMENTVAR=myenvironmentvarsetting

这将确保您的 Windows 程序在 MYENVIRONMENTVAR 您使用 Wine 启动程序后可以访问环境变量。如果您想 MYENVIRONMENTVAR永久设置,则可以将设置放入/etc/profile,或者在使用bash时也可以放入~/.bashrc。

但是请注意,该规则有一些例外情况:如果您想更改PATHSYSTEMTEMP变量,那么您当然不能那样修改它,因为这会改变 Unix 环境设置。相反,您应该将它们设置到注册表中。要设置它们,您应该启动wine regedit,然后转到

HKEY_CURRENT_USER/Environment

钥匙。现在您可以创建或修改所需变量的值

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

这设置了 Windows 系统文件的位置。Windows 系统目录应位于用于 Windows 设置的目录之下。因此,当使用/usr/local/wine_c_windows作为 Windows 路径时,系统目录将是/usr/local/wine_c/windows/system。它必须设置为没有尾部斜杠,并且您必须确保您具有对它的写入权限。

"Temp" = "c:\\temp"

这应该是您希望存储临时文件的目录,在我们之前的示例中是/usr/local/wine_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")。

3.6.7文本模式程序(CUI:控制台用户界面)

此页面或部分在一个或多个区域已过时。可能的讨论可以在讨论页上找到。请更新以反映当前信息。

现代 Wine 版本 (>6.0) 没有 curses 后端。

文本模式程序是仅由文本输出的程序(惊喜!)。在 Windows 术语中,它们被称为 CUI(控制台用户界面)可执行文件,与 GUI(图形用户界面)可执行文件相反。Win32 API 提供了一套完整的 API 来处理这种情况,从文本打印等基本功能,到高级功能(如全屏编辑、颜色支持、光标移动、鼠标支持),再到行编辑或生/熟输入流支持

鉴于上述广泛的功能以及 Un*x 世界中的当前使用情况,Wine 提供了三种不同的方式来运行控制台程序(也称为 CUI 可执行文件):

  • 裸流
  • 带有用户后端的wineconsole
  • 带有curses后端的wineconsole

这里的名字有点晦涩。“裸流”意味着没有提供额外的 Wine 支持来映射 Unix 控制台访问和 Windows 控制台访问。wineconsole其他两种方式需要使用提供扩展功能的特定 Wine 程序 ( )。下表描述了您可以通过这三种方式做什么(和不能做什么)。

表 3-1 控制台的基本区别

3.6.7.1 CUI 可执行文件的配置

当使用wineconsole时,有几个配置选项可用。Wine 在每个应用程序的基础上存储注册表中的几个选项(就像 Windows 一样)。例如,这让用户可以为给定的应用程序定义他希望拥有的默认屏幕缓冲区大小。

截至今天,只有用户后端允许您编辑这些选项(我们不建议手动编辑注册表内容)。当用户在控制台中右键单击时会触发此版本(这会弹出一个菜单),您可以从中选择:

  • 默认值:这将编辑尚未配置的所有应用程序共享的设置。因此,当应用程序首次在wineconsole中运行(在您的机器上,在您的帐户下)时,它将继承这些默认设置。之后,应用程序将拥有自己的设置,您可以随意修改。
  • 属性:这将编辑应用程序的设置。完成后,使用该版本,系统会提示您是否要:
  1. 仅为本次会话保留这些修改后的设置(下次运行应用程序时,您将看不到刚刚所做的修改)。
  2. 使用此会话的设置并保存它们,以便下次运行应用程序时,您将再次使用这些新设置。

以下是您可以配置的项目列表及其含义:


表 3-2 Wineconsole 配置选项

4配置 Wine

大多数最常见的配置更改都可以使用winecfg工具完成。我们将通过一个简单的分步介绍winecfg并概述可用的选项。在下一节中,我们将介绍您可以使用regedit进行的更高级更改,并提供对所有 Wine 配置设置的完整参考。最后,您可能想要配置的一些内容超出了winecfgregedit的范围,我们将讨论这些内容。

4.1使用 Winecfg

过去,Wine 使用了一个特殊的配置文件,可以在~/.wine/config中找到。如果您仍在使用引用此文件的 Wine 版本(早于 2005 年 6 月),您应该在执行任何其他操作之前升级。现在,所有设置都直接存储在注册表中,并在 Wine 启动时访问。

Winecfg 应该与其他 Wine 程序一起安装在您的计算机上。如果您不知道如何启动它,请尝试运行winecfg

当程序启动时,您会注意到窗口顶部有以下选项卡:

  • 应用
  • 图书馆
  • 图形
  • 桌面集成
  • 驱动器
  • 声音的
  • 关于

更改“应用程序”和“库”选项卡中的设置将对运行应用程序产生最大影响。其他设置侧重于让 Wine 本身按照您希望的方式运行。

注意:应用程序、库和图形选项卡链接在一起!如果您在应用程序下选择了“默认设置”,则在库和图形选项卡中所做的所有更改都将针对所有应用程序进行更改。如果您在“应用程序”选项卡下配置了特定应用程序并将其选中,则在“库”或“图形”中所做的任何更改都只会影响该应用程序。这允许对特定应用程序进行自定义设置。

4.1.1应用设置

Wine 能够模仿不同版本的 Windows 的行为。一般来说,最大的区别在于 Wine 的行为是 Win9x 版本还是 NT 版本。某些应用程序需要特定的行为才能运行,更改此设置可能会导致有问题的应用程序运行。Wine 默认的 Windows 版本是 Windows XP。除非您将 Windows 版本设置为 Vista 或更高版本,否则某些较新的应用程序可能会拒绝启动,而如果您选择 Windows 98,某些较旧的应用程序可能会执行得更好。(注意: XP 之前的 Windows 版本只能在 32 位的 winecfg 中选择wineprefixes。如果您使用的是 64 位系统,请参阅FAQ#How do I create a 32 bit wineprefix on a 64 bit system? )。

在选项卡中,您会注意到有一个默认设置条目。如果选择该选项,您将看到所有应用程序的当前默认Windows 版本。麻烦的应用程序最好与默认设置分开配置。要做到这一点:

  1. 单击添加应用程序按钮。
  2. 浏览直到找到可执行文件。
  3. 添加后,您可以选择 Wine 将为该应用程序模拟的特定 Windows 版本。

4.1.2库设置

同样,某些应用程序需要特定的库才能运行。Wine 复制了 Windows 系统库(所谓的本机 DLL),具有完全定制的版本,旨在以完全相同的方式运行,但不需要 Microsoft 的许可。Wine 在其内置版本中有许多已知的缺陷,但在许多情况下,功能已经足够了。仅使用内置 DLL 可确保您的系统不受 Microsoft 限制。但是,Wine 能够加载本地 Windows DLL。

4.1.2.1 DLL 覆盖

并非总是可以在内置 DLL 上运行应用程序,因此有时会建议使用本机版本作为特定问题的解决方法。有些可能会直接复制到配置为c:\windows\system32的目录(更多关于驱动器部分的内容),而另一些可能需要安装程序,请参阅下一节有关winetricks的内容。

这些 DLL 的本机版本不起作用:kernel32.dll、gdi32.dll、user32.dll和ntdll.dll。这些库需要在 Wine 中根本不存在的低级 Windows 内核访问。

考虑到这一点,一旦你复制了 DLL,你只需要告诉 Wine 尝试使用它。您可以配置 Wine 以在两个不同级别的本地和内置 DLL 之间进行选择。如果您在应用程序选项卡中选择了默认设置,您所做的更改将影响所有应用程序。或者,您可以通过在“应用程序”选项卡中添加和选择应用程序来覆盖每个应用程序级别的全局设置。

要为FOO.DLL添加覆盖,请将FOO输入标记为 New override for library: 的框中,然后单击 Add 按钮。要更改 DLL 的行为方式,请在 Existing overrides: 框中选择它并选择 Edit。默认情况下,新的加载顺序将是 Wine 内置库之前的本地 Windows 库(先是 Native,然后是 Builtin)。您还可以选择仅原生、仅内置或完全禁用它。

DLL 通常按以下顺序加载:

  1. 程序启动的目录。
  2. 当前目录。
  3. Windows 系统目录。
  4. Windows 目录。
  5. PATH 变量目录。
4.1.2.2关于系统或缺失 DLL的说明

当然,Wine 目前还没有很好地(或根本没有)实现一些 DLL。

如果 Wine 抱怨缺少 DLL,您应该检查该文件是公开可用的 DLL 还是属于您的程序的自定义 DLL。在后一种情况下,请检查您是否正确安装了程序。

大多数情况下,应用程序会假定已经安装了所需的可再发行包,然后在不满足所需的依赖项时无法运行。例如:

err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Program Files\\Foo\\Bar.dll") not found

可以通过使用 winetricks 获得安装必要运行时的可再发行包。请注意,这些组件受制于它们自己的许可证,而不是 Wine 项目的一部分。您应该参考应用程序的 AppDB条目以获取有关所需内容的建议。

4.1.3图形设置

您可以配置基本上五种不同的图形设置。对于大多数人来说,默认值很好。

第一个设置主要影响游戏,有点不言自明。您可以阻止鼠标离开全屏程序(例如游戏)的窗口,默认情况下不选中该框。这在使用虚拟桌面时最需要。

您可能会发现勾选模拟虚拟桌面很有帮助。在这种情况下,所有程序都将在单独的窗口中运行。您可能会发现这可以作为测试更改(可能不成功)屏幕分辨率的错误游戏的有用方法。将它们限制在窗口中可以更好地控制它们,但可能会降低可用性。您可能想尝试的尺寸是 800x600(默认)或 1024x768。

4.1.4驱动设置

Windows 需要 Wine 模仿的相当严格的驱动器配置。大多数人都熟悉A:代表软盘的驱动器的标准符号,代表主系统磁盘 的C:驱动器等。Wine 使用相同的概念并将这些驱动器映射到底层的本地文件系统。

wine驱动配置比较简单。在“驱动器”选项卡下的winecfg中,您将看到用于添加和删除可用驱动器的按钮。当您选择添加驱动器时,将创建一个新条目并显示默认驱动器映射。您可以通过更改路径:框中的内容来更改此驱动器指向的位置。如果您不确定确切的路径,可以选择“浏览”进行搜索。删除驱动器就像选择驱动器并单击删除一样简单。

Winecfg能够自动检测系统上可用的驱动器。建议您在尝试手动配置驱动器之前尝试此操作。只需单击 Autodetect 按钮,让 Wine 搜索您系统上的驱动器。

您可能有兴趣在winecfg之外配置您的驱动器设置,在这种情况下,您很幸运,因为它很容易。所有驱动器设置都位于一个特殊目录中:~/.wine/dosdevices。每个“驱动器”只是指向它实际所在位置的链接。第一次运行 Wine 时,Wine 会自动设置两个驱动器:

$ 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\system32的引用解释为~ /.wine/drive_c/windows/system32。

4.1.5音频设置

Wine 可以与许多不同的音频子系统一起工作。您可以在“音频”选项卡下看到 Wine 为您计算出的选定驱动程序。

您可以手动选择将用于输出、输入、语音输出和语音输入的设备。例如,您可以选择声音设备的数字输出而不是模拟输出。

4.1.6桌面集成

如果您有可用的 Windows 主题,Wine 可以加载它们。虽然这对于使用 Wine 或应用程序当然不是必需的,但它确实允许您自定义程序的外观和感觉。Wine 支持较新的 MSStyles 类型的主题。与旧版 Microsoft Plus 不同!样式主题,uxtheme引擎支持特殊的.msstyles文件,可以重新设置所有 Windows 控件的主题。这或多或少与现代 Linux 桌面支持多年的主题相同。如果你想试试这个:

  1. 下载一个 Windows XP 主题。确保它包含一个.msstyles文件。
  2. 使用winecfg的桌面集成选项卡安装并选择新主题。

4.2使用注册表和Regedit

您在winecfg中更改的所有设置(驱动器设置除外)最终都存储在注册表中。在 Windows 中,这是用于配置应用程序和操作系统的中央存储库。同样,Wine 实现了一个注册表,并且可以在其中更改 Winecfg 中未找到的一些设置(实际上,与 Wine 本身相比,您需要进入注册表来更改应用程序设置的可能性更大)。

现在,Wine 本身使用注册表来存储设置的事实一直存在争议。有些人认为它太像 Windows。为了解决这个问题,需要考虑几件事。首先,不可能仅仅因为应用程序希望能够在其中存储它们的设置而避免实现注册表。为了让 Wine 在单独的配置文件中存储和访问设置,需要一组单独的代码来基本上完成与 Wine 已经实现的 Win32 API 相同的事情。

4.2.1注册表结构

好的... 不碍事,让我们深入研究一下注册表,看看它是如何布局的。Windows 注册表是一个复杂的树形结构,甚至大多数 Windows 程序员都没有完全了解注册表的布局方式,它有不同的“蜂巢”以及它们之间的众多链接;全面覆盖超出了本文档的范围。但这里是您现在可能需要了解的基本注册表项:

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的链接,即您的个人配置。

4.2.2注册表文件

现在,您可能想知道的是它如何转化为 Wine 结构。上面描述的注册表布局实际上存在于每个用户的~/.wine目录中的三个不同文件中:

系统注册

该文件包含HKEY_LOCAL_MACHINE。

用户注册

此文件包含HKEY_CURRENT_USER。

用户定义文件

该文件包含HKEY_USERS\.Default(即默认用户设置)。

这些文件是在您第一次使用 Wine 时自动创建的。一组全局设置存储在wine.inf文件中,并由rundll32.exe程序处理。第一次运行 Wine 时,会处理wine.inf文件以填充初始注册表。如果wine.inf发生变化,例如升级到较新的 Wine 版本时,注册表也会自动更新。

注意:较旧的 Wine 版本(1.0 之前)需要您手动运行wineprefixcreate命令来升级您的设置。这不再是必要的。

不建议编辑这些文件来修改注册表,因为它们是由 Wine 内部管理的。使用regedit.exereg.exe或任何使用标准注册表功能的程序。

4.2.3使用注册表编辑器

访问和更改注册表的一种简单方法是使用regedit工具。与它所取代的 Windows 程序类似,regedit用于提供包含所有键的注册表的系统级视图。当您启动它时,您会立即注意到文本文件中显示的密钥是以分层方式组织的。

要浏览注册表,请单击左侧的键以深入了解。要删除密钥,请单击它并从“编辑”菜单中选择“删除”。要添加键或值,请找到要放置的位置,然后从“编辑”菜单中选择“新建”。同样,您可以通过在右侧窗格中突出显示现有密钥并从“编辑”菜单中选择“修改”来修改现有密钥。执行这些相同操作的另一种方法是右键单击键或值。

Wine 用户特别感兴趣的是存储在HKEY_CURRENT_USER\Software\Wine中的设置。您在winecfg中更改的大部分设置都会写入注册表的这个区域。

4.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执行相同的操作,但是该文件包含用户特定的设置。每个用户都应该拥有自己的该文件副本以及修改它的权限。

您需要注意驱动器映射。如果您要共享system.reg文件,您需要确保注册表设置与每个用户的~/.wine/dosdevices中的驱动器映射兼容。作为一般经验法则,您的驱动器映射越接近默认配置,就越容易管理。您可能会也可能无法共享您最初将应用程序安装到的部分或全部实际c:驱动器。某些应用程序需要能够将特定设置写入驱动器,尤其是为 Windows 95/98/ME 设计的应用程序。

请注意,如果您以 root 身份安装 Wine 源代码,则tools/wineinstall脚本会执行其中的一些操作,但它不再执行此操作。

最后要注意的是:小心您对管理员帐户所做的事情 - 如果您将管理员的注册表复制或链接到全局注册表,任何用户都可能能够读取管理员的首选项,如果敏感信息可能不好(密码、个人信息等)存储在那里。只使用管理员帐号安装软件,不用于日常工作;为此使用普通用户帐户。

4.2.5注册表项的完整列表

您将在 wiki 中 找到有用的注册表项和值的最新列表。

4.3其他需要配置的东西

本节旨在涵盖您可以配置的其余内容。它还作为一个提示和技巧的集合,以充分利用 Wine。

4.3.1串行和并行端口

从 Wine 2.8 开始,Wine 启动时会自动检测串行和并行端口。Windows 串行端口遵循COM后跟数字的命名约定,例如COM1、COM2等。类似地,并行端口使用LPT后跟数字,例如LPT1。Linux、Mac 和 BSD 都有自己的设备命名约定,但在每种情况下,串行或并行设备都位于/dev中的某个位置。您可以通过查看~/.wine/dosdevices来查看 Windows 设备到 Unix 设备的映射。例如:

$ ls -l ~/.wine/dosdevices/
total 0
lrwxrwxrwx 1 alex alex 10 May 13 21:21 c: -> ../drive_c
lrwxrwxrwx 1 alex alex 10 May 14 14:43 com1 -> /dev/ttyS0
lrwxrwxrwx 1 alex alex 10 May 14 14:43 com2 -> /dev/ttyS1
lrwxrwxrwx 1 alex alex 10 May 14 14:43 com3 -> /dev/ttyS2
lrwxrwxrwx 1 alex alex 10 May 14 14:43 com4 -> /dev/ttyS3
lrwxrwxrwx 1 alex alex 12 May 14 14:43 com5 -> /dev/ttyUSB0
lrwxrwxrwx 1 alex alex  8 May 13 21:22 d:: -> /dev/sr0
lrwxrwxrwx 1 alex alex  8 May 14 14:43 lpt1 -> /dev/lp0
lrwxrwxrwx 1 alex alex  1 May 13 21:21 z: -> /

确保您拥有访问计算机串行和并行端口所需的权限。在 Linux 上,用户通常必须是sys或dialout组的成员才能访问串行端口,或者是lp组的成员才能访问并行端口。

要覆盖 Wine 的默认设备映射,运行wine regedit并创建字符串条目,HKEY_LOCAL_MACHINE\Software\Wine\Ports其中条目名称是 Windows 设备名称,条目值是 Unix 设备的路径。继续上面的示例,要使 COM1 成为第一个连接 USB 的串行端口,请创建一个具有名称COM1和值的条目/dev/ttyUSB0。您可能还想创建一个名为COM5无值的条目,以删除现在与 COM1 重复的 COM5 设备。编辑注册表后,关闭 Wine,wineserver -k下次 Wine 运行程序时,您的更改将生效。

如果您使用 2.8 之前的 Wine 版本,您可能必须自己在~/.wine/dosdevices中创建符号链接。例如,要使 COM1 成为第一个连接 USB 的串行端口,请运行ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1.

4.3.2网络共享

此页面或部分在一个或多个区域已过时。可能的讨论可以在讨论页上找到。请更新以反映当前信息。

Windows 共享可以映射到unc/目录,因此任何试图访问\\myserver\some\file的东西都会在~/.wine/dosdevices/unc/myserver/some/file中查找。例如,如果您使用 Samba在/mnt/smb/myserver/some上挂载\\myserver\ some那么您可以这样做

ln -s /mnt/smb/myserver/some unc/myserver/some

使其在 Wine 中可用(如果unc目录尚不存在,请不要忘记创建它)。

4.3.3字体

字体配置,曾经是个棘手的问题,现在简单多了。如果您在 Windows 中有一组 TrueType 字体,只需将.ttf文件复制到c:\windows\fonts即可。

4.3.4打印机

Wine 可以直接与本地 CUPS 打印系统交互以查找系统上可用的打印机。使用 Wine 配置打印机就像确保您的 CUPS 配置正常工作一样简单。

如果您不使用 CUPS,则使用旧的 BSD-Printing 系统:

  • /etc/printcap中的所有打印机都自动安装在 Wine 中。
  • Wine 需要为每台打印机提供一个 PPD 文件(generic.ppd与 Wine 一起提供)。
  • 打印文档时调用lpr命令

4.3.5扫描仪

在 Windows 中,扫描仪使用 TWAIN API 来访问底层硬件。Wine 内置的 TWAIN DLL 只是将这些请求转发到 Linux SANE 库。因此,要在 Wine 下使用您的扫描仪,您首先需要确保您可以使用 SANE 访问它。之后,您需要确保您有可用的xscanimage。目前,它与sane-frontends软件包一起提供,但它可能未随您的发行版一起安装。目前已知扫描仪访问存在问题。如果您发现它适合您,请考虑更新用户指南的这一部分,以提供有关将 SANE 与 Wine 结合使用的详细信息。

4.3.6 ODBC 数据库

Wine 中的 ODBC 系统与打印系统一样,旨在与 Unix 系统进行高级挂钩。它使用合适的 Unix ODBC 提供程序,例如unixODBC,而不是确保所有 Windows 代码都在 Wine 下工作。因此,如果您将 Wine 配置为使用内置的odbc32.dll,该 Wine DLL 将与您的 Unix ODBC 包接口并让其完成工作,而如果您将 Wine 配置为使用本机odbc32.dll,它将尝试使用本机 ODBC32 驱动程序等。

4.3.6.1在 Unix 上配置 ODBC

在 Wine 中使用 Unix ODBC 系统的第一步当然是让 Unix ODBC 系统自己工作。这可能涉及下载代码或二进制包等。有几个可用的 Unix ODBC 系统,例如unixODBC或可用于访问 Microsoft Access 数据库的 ODBC-ODBC 桥。通常,此类系统将包含一个工具,例如isql,它允许您从命令行访问数据,以便您可以检查系统是否正常工作。

下一步是将 Unix ODBC 库与 Wine 内置的odbc32 DLL 挂钩。内置的odbc32(当前)在环境变量LIB_ODBC_DRIVER_MANAGER中查找 ODBC 库的名称。例如:

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

配置它的最后一步是通过修改 DLL 配置来确保 Wine 设置为运行odbc32.dll的内置版本。此内置 DLL 仅充当调用代码和 Unix ODBC 库之间的存根。

如果您有任何问题,那么您可以WINEDEBUG=+odbc32在运行 Wine 之前使用命令来跟踪正在发生的事情。警告一句:有些程序实际上有点作弊并绕过了 ODBC 库。例如,Crystal Reports 引擎进入注册表检查 DSN。对此的修复记录在 unixODBC 站点上,其中有一节介绍了将 unixODBC 与 Wine 结合使用。

4.3.6.2使用 Windows ODBC 驱动程序

据报道,本机 ODBC 驱动程序适用于多种类型的数据库,包括 MSSQL 和 Oracle。事实上,像 MSSQL 之类的一些只能通过 Winelib 应用程序在 Linux 上访问。大多数 ODBC 驱动程序不仅需要复制 DLL 文件,还需要运行基于 Windows 的安装程序来正确配置注册表项等内容。

为了设置 MSSQL 支持,您首先需要从 Microsoft下载并运行mdac_typ.exe安装程序。为了配置您的 ODBC 连接,您必须在 Wine 下运行CLICONFG.EXEODBCAD32.EXE。mdac_typ 运行后,您可以在windows\system目录中找到它们。将这些程序的输出与本机 Windows 机器上的输出进行比较。某些东西(例如协议)可能会丢失,因为它们依赖于与操作系统一起安装。如果是这样,您可以从现有 Windows 安装中复制缺少的功能以及所需的任何注册表值。配置为由 Wine 使用的本机 Windows 安装应该以与本机运行时相同的方式工作。

在 Wine 下成功测试的类型:

数据库类型用处微软 SQL100%

请向wine-devel邮件列表报告任何其他成功。

5故障排除/报告错误

5.1如果某些程序仍然无法运行怎么办?

有时候你什么都试过了,你甚至在满月杀了一只猫,然后在跳魔鬼舞的时候把它和腐烂的大蒜和臭鱼一起吃了,但没有什么能帮助一些该死的程序在某些 Wine 版本上运行。不要绝望,我们是来帮助你的……(换句话说:你想付多少钱?)

5.1.1验证你的 Wine 配置

查看输出wine --version以确保您正在运行最新版本的 Wine。启动winecfg并查看设置以确保您的设置看起来正常。查看~/.wine/dosdevices以确保您的c:指向您认为应该指向的位置。

5.1.2使用不同的 Windows 版本设置

在某些情况下,使用不同的 Windows 版本设置会有所帮助。

5.1.3使用不同的启动路径

以下有时也有帮助:

wine x:\\full\\path\\to\\prg.exe
wine ~/.wine/drive_c/full/path/to/prg.exe
cd ~/.wine/drive_c/full/path/to/ && wine prg.exe

5.1.4摆弄 DLL 配置

运行WINEDEBUG=+loaddll以找出正在使用哪些 DLL,以及它们是作为本机还是内置加载的。然后确保在配置的C:\windows\system32目录中有正确的本机 DLL 文件,并在命令行或使用winecfg 调整DLL 加载顺序设置。

5.1.5检查你的系统环境!

只是一个想法:会不会是你的 Wine 构建/执行环境坏了?确保 Wine 所依赖的包没有任何问题(gcc、glibc、X 库、OpenGL (!)、...)

5.1.6使用不同的 GUI(窗口管理器)模式

通过winecfg指示 Wine使用桌面模式或普通托管模式。这也可以产生很大的不同。

5.1.7检查您的应用程序!

也许您的应用正在使用某种复制保护?许多版权保护目前不适用于 Wine。不过,有些可能会在将来起作用。(CD-ROM 层还不是真正的全功能)。

5.1.8重新配置 Wine

有时 Wine 安装过程的变化和新版本的 Wine 帐户对这些变化的影响。如果您的设置是很久以前创建的,则尤其如此。重命名现有的~/.wine目录以进行备份。使用为您的 Wine 发行版推荐的设置过程来创建新配置。使用旧的~/.wine目录中的信息作为参考。稍后您可以删除新的~/.wine目录并将旧目录重命名。

5.1.9查看更多信息

很有可能有人已经尝试过和你做同样的事情。您可能会发现以下资源很有帮助:

  • 搜索WineHQ 应用程序数据库以检查与该程序相关的任何提示。如果未列出您的特定版本的程序,您可能会发现另一个版本包含足够的信息来帮助您。
  • 根据您的使用方式,Google可能会有用。
  • Freenode.net为 Wine 提供了一个 IRC 频道。您可以使用任何 IRC 客户端(例如 HexChat)访问它。您需要的设置是:服务器、irc.freenode.net、端口、6667、频道、#winehq
  • 如果您的程序需要安装可再发行的运行时,例如mfc42.dll、Visual Basic 等,可以使用winetricks来提供。请注意,这些组件受制于它们自己的许可证,而不是 Wine 项目的一部分。
  • WineHQ论坛葡萄酒用户邮件列表也可能有所帮助。根据您遇到的问题类型,葡萄酒开发邮件列表可能是合适的。如果您发布到wine-devel,您应该准备做一些工作来帮助诊断问题。阅读以下部分以了解如何调试问题的根源。
  • 如果一切都失败了,您可能希望调查 Wine 的商业版本以查看您的应用程序是否受支持。

5.1.10调试吧!

找到问题的根源是下一步要采取的措施。有很多可能的问题,从简单的配置问题到 Wine 中完全未实现的功能。下一节将描述如何提交错误报告以及如何开始调试崩溃。有关使用 Wine 调试工具的更多信息,请务必阅读Wine Developer's Guide

5.2如何报告错误

请参阅错误

6词汇表

Binary

机器可执行文件,编译形式:十六进制数据(相对于源代码文件)。

Distribution

发行版通常是某些“供应商”提供操作系统 CD 的方式(通常在 Linux 的上下文中提到)。Linux 环境可以以许多不同的配置发布:例如,可以构建适合游戏、科学应用程序、服务器操作、桌面系统等的发行版。

动态链接库

DLL(动态链接库)是可以由程序动态加载和执行的文件。基本上它是程序的外部代码存储库。由于通常几个不同的程序会重用同一个 DLL,而不是将代码放在自己的文件中,因此这大大减少了所需的存储空间。DLL 的同义词是“库”。

Editor

编辑器通常是创建或修改文本文件的程序。Linux 上有各种图形和文本模式编辑器可用。

图形编辑器的示例有:nedit、gedit、kedit、xemacs、gxedit。

文本模式编辑器的示例有:joe、ae、emacs、vim、vi。在终端中,只需通过以下方式运行它们:

$ editorname fileName

Environment variable

环境变量是 Shell 中用于存储重要系统设置的文本定义。在bash shell(Linux 中最常用的一种)中,您可以通过执行以下命令查看所有环境变量:

set

如果要更改环境变量,可以运行:

export MYVARIABLE=mycontent

要删除环境变量,请使用:

unset MYVARIABLE

Git

Git 是一个快速的版本控制系统,最初是为与大型存储库一起使用而编写的,例如 Linux 内核源代码。有关详细使用信息,请参阅 Wine 开发人员指南中的 Git 章节。

Package

包是分发特定格式的压缩文件。它包含您要安装的特定程序的文件。软件包通常通过dpkg或rpm软件包管理器安装。

root

root是系统管理员的帐户名。为了以root身份运行程序,只需打开一个终端窗口,然后运行:

$su -

这将提示您输入系统root用户的密码,之后您将能够执行需要特殊 root 权限的系统管理任务。root帐户由

#

提示,而 '$' 表示普通用户帐户。

Shell

shell 是一种使用户能够与系统交互的工具。通常,shell 是基于文本和面向命令行的。流行的 shell 示例包括bash、tcsh和ksh。Wine 假设对于 Wine 安装任务,您使用bash,因为这是 Linux 上最流行的 shell。Shell 通常在终端窗口中运行。

Source code

源代码是程序在编译之前包含的代码,即它是程序的原始构建指令,它告诉编译器程序在编译为二进制文件后应该是什么样子。

Terminal

终端窗口通常是用于执行 Shell 的图形窗口。如果 Wine 要求您打开终端,那么您通常需要单击桌面上通常会显示一个黑色大窗口的图标。Wine 假定您使用的是bash shell,因此如果您的终端碰巧使用了不同的 shell 程序,只需bash在终端窗口中键入即可。

© GVGNN 2013-2026