Wine

跳转至: 导航, 搜索
本文是对 Wine User's Guide 的中文翻译。你已经是一个成熟的 Linux 用户了,遇到该文档无法解决的问题的时候,你自己要学会看源文档。

测试版本

Icon-checked.png

推荐条目

Icon-manual.png


目录

简介

不同的软件程序是为不同的操作系统设计的,而且大多数软件在它们不是为之设计的系统上不能运行。例如,Windows 程序不会在 Linux 中运行,因为它们包含的指令在被 Windows 环境翻译之前系统无法理解。同样,Linux 程序也不会在 Windows 操作系统下运行,因为 Windows 无法解释它们的所有指令。Wine 的核心是 Windows 应用程序接口(API)库的开源实现,作为 Windows 程序和 Linux 之间的桥梁。你可以把 Wine 看作是一个兼容层,当一个 Windows 程序试图执行一个 Linux 通常不理解的功能时,Wine 将把该程序的指令翻译成系统支持的指令。例如,如果一个程序要求系统创建一个 Windows 的按钮或文本编辑区,Wine 将把该指令转换为 Linux 的等效指令,即使用标准 X11 协议向窗口管理器发出的命令。

Wine 的特色

在其发展过程中,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 的图形
  • 盒中桌面或可混合窗口
  • 对游戏的 DirectX 支持
  • 对各种声音驱动的良好支持,包括 ALSA、OSS、PulseAudio 和 CoreAudio
  • 支持替代性的输入设备,如图形平板。
  • 打印。PostScript 接口驱动,使用标准的 Unix PostScript 打印服务,如 CUPS
  • 支持调制解调器、串行设备
  • Winsock TCP/IP 网络支持
  • ASPI 接口(SCSI)支持扫描仪、CD刻录机和其他设备
  • 先进的 Unicode 和外国语言支持
  • 全功能的 Wine 调试器和可配置的跟踪记录信息,更容易进行故障排除

其他版本

有许多程序以某种方式从标准Wine代码库中衍生出来。其中一些是积极为Wine项目做出贡献的公司的商业产品。这些产品试图通过提供更大的兼容性、更简单的配置和商业支持,使自己脱颖而出或区别于标准版的Wine。如果你需要这些东西,考虑购买这些产品是个好主意。如:CodeWeavers CrossOver

安装 wine

wine 已经包含在 openSUSE 的仓库中,运行下列指令安装 wine:

 sudo zypper in wine

使用 wine

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

 wine --help                   显示帮助信息
 wine --version                输出版本信息

如何安装和运行 windows 程序

大多数二进制 Wine 包会为你将 Wine 与 .exe 文件联系起来。如果是这种情况,你应该能够简单地在文件管理器中双击 .exe 文件,就像在Windows中一样。你也可以右键点击该文件,选择 "运行",然后选择 "Wine"。这有时可能会在错误的程序中打开文件;如果发生这种情况,请使用你的桌面环境提供的任何工具检查该文件的文件类型关联,并根据需要进行编辑。

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

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

如何使用命令行运行 windows 程序

更多在纯文本模式下运行可执行文件的信息,详见:Text Mode Programs section

这将使你能够看到来自Wine的信息,这可能有助于排除问题。

由于 Windows 程序通常会在其启动的位置寻找文件,因此在使用命令行时,你应该以一种非常具体的方式启动它们。使用 "cd" 转移到到程序所在的文件夹,并仅使用其文件名运行 .exe 文件。比如说:

 cd '.wine/drive_c/Games/Tron'
 wine tron.exe 
使用 wine start

在某些情况下,你可能需要指定一个可执行文件的完整路径。例如,如果你需要从多张光盘上安装一个程序,在终端输入目录将防止你删除光盘。

如果你指定了.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"
传递 Windows 命令行参数

例如,如果你在 Windows 上使用一个带开关的程序:

 quake.exe -map e1m1 

然后,你可以在 Wine 中通过运行下列指令来做同样的事情:

 wine quake.exe -map e1m1 

也就是说,命令行是相同的,只是前面有 wine。然而,请注意,你可能需要用反斜线转义某些特殊字符,因为它们在 Linux shell 中的处理方式不同。比如说:

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

在 Linux 中应改为:

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

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

 wine msiexec /i whatever.msi 

或者

 wine start whatever.msi

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

应用程序在 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 目录下查看什么是放在哪里的。

另见:命令列表

类 windows 文件管理器的 wine 图形环境

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

环境变量

WINEDEBUG=channels

Wine 并不完美,许多 Windows 应用程序无法在 Wine 下没有错误地正常运行(但许多程序在原生 Windows 环境下的也不一定能做到没有错误!)。为了让人们更容易追踪每个 bug 背后的原因,Wine提供了一些调试通道,你可以使用:

每个调试通道被激活后,将触发日志信息,并显示在你调用 wine 的控制台。在那里,你可以将这些信息重定向到一个文件,并在你的闲暇时检查它。但要注意的是! 一些调试通道可以产生大量的日志信息。其中最多产的是 relay ,它在每次调用 win32 函数时都会输出一条日志信息,win 跟踪 windows 的信息传递,当然还有 all ,它是每个调试通道的别名。对于一个复杂的应用程序,你的调试日志可以很容易地达到 1MB 甚至更高。一个中继跟踪通常可以产生超过 10MB 的日志信息,这取决于你运行程序的时间。你要查看 RelayExclude 注册表键来修改中继跟踪报告的内容)。日志确实会使 Wine 的速度降低不少,所以除非你真的需要日志文件,否则不要使用 WINEDEBUG

在每个调试通道中,你可以进一步指定一个消息类别,以过滤出不同严重程度的错误。这四种消息类别是:trace, fixme, warn, err。

要打开一个调试通道,使用 class+channel 的形式。要关闭它,使用 class-channel 。要在同一个 WINEDEBUG 选项中列出一个以上的通道,请用逗号分开。例如,要在堆调试通道中请求警告类信息,你可以这样调用 wine:

 $ WINEDEBUG=warn+heap wine program_name

如果你不填信息类别,Wine 将显示该通道的所有四个类别的信息:

 $ WINEDEBUG=heap wine program_name

如果你想看到除了中继通道以外的所有日志信息,你可以这样做:

 $ WINEDEBUG=+all,-relay wine program_name

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

关于调试通道的更多细节,请查看 Wine 开发者指南

WINEDLLOVERRIDES=DLL Overrides

在内置 DLLs 上运行一个应用程序并不总是可能的。有时,本地 DLL 的效果会更好。尽管这些 DLL 覆盖可以用 winecfg 来设置,但你可能想用WINEDLLOVERRIDES 环境变量来设置它们。

例如:

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

首先尝试将 comdlg32 和 shell32 作为本地 Windows DLLs 加载,如果本地加载失败,则尝试内置版本。

 $ WINEDLLOVERRIDES="comdlg32,shell32=n;c:\\foo\\bar\\baz=b" wine 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 覆盖部分。

WINEARCH

指定要支持的 Windows 架构。它可以被设置为 win32(只支持32位应用程序),或 win64(在WoW64模式下支持64位应用程序和32位应用程序)。一个给定的 Wine 前缀所支持的架构是在前缀创建时设置的,此后不能改变。当使用现有前缀运行时,如果 WINEARCH 与前缀架构不匹配,Wine 将拒绝启动。

WINEPREFIX

指定要使用的配置目录的位置。指定时使用 unix 风格的完整路径。默认的 wineprefix 是 $HOME/.wine 。一个用户可以在同一系统中拥有多个wineprefixes 。更多信息请参见 Wineprefixes 常见问题部分

OSS 音频驱动程序设置

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

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

例如:

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

wineserver 命令行选项

wineserver 通常会在第一个 Wine 进程启动时被 Wine 自动启动。然而,wineserver 有一些有用的命令行选项,如果你手动启动它,例如通过用户登录脚本等,你可以添加这些选项:

-d n

设置调试级别,用于在终端调试输出,而 wineserver 是在 n 级启动的。换句话说:一切大于 0 将启用 wineserver 的特定调试输出。

-h

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

-k [n]

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

-p [n]

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

通常情况下,wineserver 在使用该 wineserver 的最后一个 Wine 进程结束后几乎立即退出。然而,由于 wineserver 在启动时加载了很多东西(比如整个 Windows 注册表数据),它的启动速度可能很慢,所以通过让它持久化,让它在所有 Wine 会话结束后退出是非常有用的。

-w

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

设置 Windows/DOS 环境变量

注意: 这个页面或章节在一个或多个方面已经过时。可能的讨论可以在谈话页上找到。请更新以反映当前信息。

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

 export MYENVIRONMENTVAR=myenvironmentvarsetting

这将确保你的 Windows 程序能够在你使用 Wine 启动你的程序时访问 MYENVIRONMENTVAR 环境变量。如果你想永久地设置 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" )。

文本模式程序(CUI:控制台用户接口)

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

鉴于上述广泛的功能范围,以及目前在 Unix 世界中的使用情况,Wine 提供了三种不同的方式来运行控制台程序(又称 CUI 可执行文件)。

  • 裸流(Bare streams)
  • 带有用户后端的 wineconsole
  • 带有 curses 后端的 wineconsole

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

表 3-1. 命令的基本差别
功能 Bare streams 带有 user 后端的 Wineconsole 带有 curses 后端的 Wineconsole
如何运行(假设可执行文件被称为 foo.exe

$ wine foo.exe

$ wineconsole -- --backend=user foo.exe

$ wineconsole foo.exe You can also use --backend=curses as an option

很好地支持面向行的 CUI 应用程序(这些应用程序一行接一行地打印信息)。 Yes Yes Yes
对全屏CUI应用的良好支持(包括但不限于颜色支持、鼠标支持......) No Yes Yes
即使 X11 没有运行也可以运行 Yes No Yes
Implementation 将标准 Windows 流映射到标准 Unix 流(stdin/stdout/stderr) wineconsole 将创建一个新的窗口(因此需要有 user32 DLL),其中将显示所有信息。 wineconsole 将使用现有的Unix控制台(程序从那里运行),并在 curses/ncurses 库的帮助下,控制所有的终端表面,与用户互动。
已知限制 如果在同一个 Unix 终端上使用两个(或多个)Windows 控制台,将产生奇怪的行为。

配置 CUI 的可执行文件

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

到今天为止,只有用户后台允许你编辑这些选项(我们不建议手工编辑注册表内容)。当用户在控制台中点击右键时,这个版本就会被触发(这时会弹出一个菜单),你可以从这里选择。

  • 默认:这将编辑所有尚未配置的应用程序所共享的设置。因此,当一个应用程序第一次在 wineconsole 中运行时(在你的机器上,在你的账户下),它将继承这些默认设置。之后,该应用程序将有自己的设置,你可以随意修改。
  • 属性:这将编辑应用程序的设置。当你完成后,版本会提示你是否要。

1. 只为这个会话保留这些修改过的设置(下次你运行应用程序时,你将看不到你刚做的修改)。

2. 在这个会话中使用这些设置,并把它们也保存起来,这样下次你运行你的应用程序时,你就会再次使用这些新设置。

下面是你可以配置的项目列表,以及它们的含义:

Table 3-2. Wineconsole 配置项目
配置项目 含义
光标尺寸(Cursor size) 定义光标的大小。有三个选项:small(字符高度的33%)、medium(66%)和 large(100%)。
弹出式菜单(Popup menu) 前面说过,wineconsole 配置弹出窗口是通过在控制台的窗口中点击右键来触发的。然而,当你在 wineconsole 中运行的应用程序希望将右键事件发送给它时,这可能是一个问题。通过勾选 Control 或 Shift ,你可以在右键上选择额外的修改器来打开弹出窗口。例如,当你在没有按住 Shift 的情况下右击窗口时,勾选 Shift 将向应用程序发送事件,而当你在按住 Shift 的情况下右击时将打开窗口。
快速编辑(Quick edit) 这个复选框让你决定是把鼠标左键事件解释为要发送给底层应用程序的事件(打勾),还是解释为选择屏幕的矩形部分以便以后复制到剪贴板上(打勾)。
历史(History) 这可以让你选择你想让控制台召回多少个命令。你还可以驱动你是否想要,当多次输入相同的命令--可能与其他命令交织在一起--你是否想要储存所有的命令(打勾)或只储存最后一个(打勾)。
监督(Police) 监督属性表允许你选择控制台的默认字体(字体文件、大小、背景和前景颜色)。
Screenbuffer & window size 你看到的控制台是由两个不同的部分组成的。一方面是屏幕缓冲区,它包含了你的应用程序在屏幕上显示的所有信息,另一方面是窗口,它显示屏幕缓冲区的一个特定区域。请注意,窗口总是比屏幕缓冲区要小或相同的大小。严格说来,窗口的大小要比屏幕缓冲区小,这样你就可以看到整个屏幕缓冲区的内容。
关闭后退出(Close on exit) 如果它被选中,那么 'wineconsole 将在其中的应用程序终止时退出。否则,它将一直打开,直到用户手动关闭它:这允许在程序终止后看到它的最新信息。
编辑模式(Edition mode)

当用户输入命令时,他或她可以选择几种版本模式。

  • Emacs:与 emacs 下相同的键位绑定可用。例如,'Ctrl+A 会把光标带到版本行的开头。关于这些命令的细节,请看你的 emacs 手册。
  • Win32: 这些是标准的 Windows 控制台键绑定(主要使用箭头)。

配置 wine

大多数最常见的配置修改都可以用 winecfg 工具完成。我们将对 winecfg 进行简单的、循序渐进的介绍,并概述可用的选项。在下一节中,我们将介绍你可以使用 regedit 进行的更高级的修改,并提供所有 Wine 配置设置的完整参考。最后,你可能想配置的一些东西不在 winecfg 和 regedit 的范围内,我们将介绍这些东西。

使用 Winecfg

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

Winecfg 应该已经和其他的 Wine 程序一起安装在你的电脑上。如果你不知道如何启动它,试着运行 winecfg

当程序启动时,你会注意到窗口顶部有几个标签,分别是:

   Applications(应用程序)
   Libraries(库)
   Graphics(图形)
   Desktop Integration(桌面集成)
   Drives(驱动)
   Audio(音频)
   About(关于)

改变 Applications 和 Libraries 选项卡中的设置,对于让应用程序运行的影响最大。其他设置主要是让 Wine 本身按照你希望的方式运行。

注意:Applications、Libraries 和 Graphics 选项卡是联系在一起的 如果你在应用程序下选择了 "默认设置" ,那么在库和图形选项卡中所做的所有更改都将对所有应用程序进行更改。如果你在 "Applications" 选项卡下配置了一个特定的应用程序,并选择了它,那么在 "Libraries" 或 "Graphics" 中所作的任何更改将只影响该应用程序。这允许对特定的应用程序进行自定义设置。

Application 设置

Wine 有能力模仿不同版本的 Windows 的行为。一般来说,最大的区别是 Wine 的行为是 Win9x 版本还是 NT 版本。一些应用程序需要特定的行为才能运行,改变这个设置可能会导致一个有问题的应用程序工作。Wine 默认的 Windows 版本是 Windows XP。一些较新的应用程序可能会拒绝启动,除非你将 Windows 版本设置为 Vista 或更高,而如果你选择 Windows 98,一些较老的应用程序可能会表现得更好。(注意:XP 之前的 Windows 版本只能在32位 wineprefixes 的 winecfg 中选择。如果你使用的是64位系统,请参阅FAQ#如何在64位系统上创建一个32位wineprefix?)

在这个标签中,你会注意到有一个默认设置条目。如果你选择它,你会看到所有应用程序的当前默认 Windows 版本。一个麻烦的应用程序最好从默认设置中单独配置。要做到这一点。

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

Libraries 设置

同样地,一些应用程序需要特定的库才能运行。Wine 重现了 Windows 系统库(所谓的本地 DLLs),其完全定制的版本旨在以完全相同的方式运作,但不需要微软的许可。Wine 的内置版本有许多已知的缺陷,但在许多情况下,其功能是足够的。只使用内置的 DLLs 可以确保你的系统不受微软影响。然而,Wine 具有加载本地 Windows DLLs 的能力。

DLL Overrides
注意: 这些 DLL 的本地版本不能工作:kernel32.dll, gdi32.dll, user32.dll, 和 ntdll.dll 。这些库需要低级别的 Windows 内核访问,而Wine中根本不存在。

在内置的 DLLs 上运行一个应用程序并不总是可能的,所以有时本地版本会被推荐作为解决特定问题的一种方法。有些可以直接复制到配置为 c:\windows\system32 的目录中(在驱动部分有更多介绍),而其他的可能需要一个安装程序,见下一节的 winetricks 。

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

要为 FOO.DLL 添加一个覆盖,在标有 New override for library: 的框中输入FOO,然后点击 Add 按钮。要改变 DLL 的行为方式,在Existing overrides: 框中选择它并选择编辑。默认情况下,新的加载顺序是本地 Windows 库先于 Wine 内置库(先本地后内置)。你也可以选择只加载本地库、只加载内建库,或者完全禁用它。

DLLs通常按以下顺序加载:

  1. 程序启动的目录
  2. 当前目录
  3. Windows 系统目录
  4. Windows 目录
  5. PATH 变量目录
关于系统或缺失 DLLs 的注意事项

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

如果 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 条目,了解所需的建议。

Graphics 设置

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

第一个设置主要影响游戏,有点不言而喻。你可以防止鼠标离开全屏程序(如游戏)的窗口,默认情况下不勾选这个选项。这在使用虚拟桌面时是最需要的。

你可能会发现勾选模拟虚拟桌面是有帮助的。在这种情况下,所有程序将在一个单独的窗口中运行。你可能会发现这对测试那些改变屏幕分辨率(可能不成功)的错误游戏很有用。将它们限制在一个窗口中可以允许对它们进行更多的控制,但可能要以降低可用性为代价。你可能想尝试的尺寸是 800x600(默认)或 1024x768。

Drive 设置

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

Wine 的驱动器配置相对简单。在 winecfg 的 Drives 标签页下,你会看到添加和删除可用驱动器的按钮。当你选择添加一个驱动器时,会有一个新的条目出现,并且会出现一个默认的驱动器映射。你可以通过改变 Path: 框中的内容来改变这个驱动器的指向。如果你不确定确切的路径,你可以选择浏览来搜索它。删除一个驱动器就像选择该驱动器并点击删除一样简单。

Winecfg 有能力自动检测你系统中可用的驱动器。建议你在尝试手动配置驱动器之前先试试这个功能。只需点击自动检测按钮,就可以让 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 。

Audio 设置

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

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

Desktop Integration

如果你有可用的 Windows 主题,Wine 可以加载它们。虽然这当然不是使用 Wine 或应用程序的必要条件,但它确实允许你定制程序的外观和感觉。Wine 支持较新的 MSStyles 类型的主题。与老式的 Microsoft Plus!风格的主题不同,uxtheme 引擎支持特殊的 .msstyles 文件,可以重塑所有的 Windows 控件。这或多或少与现代 Linux 桌面多年来支持的主题设计相同。如果你想试试这个。

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

使用 Registry 和 Regedit

你在 winecfg 中改变的所有设置,除了驱动器设置外,最终都存储在注册表中。在 Windows 中,这是一个用于配置应用程序和操作系统的中央存储库。同样,Wine 也实现了一个注册表,一些在 Winecfg 中找不到的设置可以在其中改变(实际上,你需要进入注册表来改变一个应用程序的设置的机会比Wine本身要多)。

现在,Wine 本身使用注册表来存储设置的事实一直存在争议。有些人认为,它太像 Windows 了。为了反驳这一点,有几件事需要考虑。首先,不可能避免实施注册表,仅仅是因为应用程序期望能够在那里存储它们的设置。为了让 Wine 在一个单独的配置文件中存储和访问设置,将需要一套单独的代码来做与 Win32 APIs Wine 已经实现的相同的事情。

Registry 结构

好了......说到这里,让我们深入了解一下注册表,看看它是如何布置的。Windows 注册表是一个复杂的树状结构,甚至大多数 Windows 程序员都不完全了解注册表是如何布局的,它有不同的 "蜂巢(hives)" 和它们之间的众多链接;全面的介绍超出了本文的范围。但这里是你现在可能需要了解的基本注册表键:

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

Registry 文件

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

  • system.reg

该文件包含 HKEY_LOCAL_MACHINE。

  • user.reg

该文件包含 HKEY_CURRENT_USER。

  • userdef.reg

这个文件包含 HKEY_USERS\.Default(即默认的用户设置)

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

注意:旧的 Wine 版本(1.0之前)需要你手动运行 wineprefixcreate 命令来升级你的设置。现在已经不需要了。

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

使用 Registry

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

要浏览注册表,点击左边的键来深入钻研。要删除一个键,点击它并从编辑菜单中选择删除。要添加一个键或值,找到你想放的地方,从编辑菜单中选择新建。同样,你也可以通过在右侧窗口窗格中突出显示一个现有的键,并从编辑菜单中选择修改。执行这些相同操作的另一种方法是右键单击键或值。

wine 用户特别感兴趣的是存储在 HKEY_CURRENT_USER/Software/Wine 中的设置。你在 winecfg 中改变的大多数设置都被写入注册表的这个区域。

系统管理技巧

有了上述文件结构,系统管理员就有可能对系统进行配置,使所有用户都能共享系统的 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 source,tools/wineinstall 脚本曾经做过一些这样的事情,然而它不再做了。

最后要提醒的是:要小心你对管理员账户所做的事情--如果你真的复制或链接了管理员的注册表到全局注册表,任何用户都可能能够读取管理员的偏好,如果敏感信息(密码、个人信息等)存储在那里,这可能不是好事。只有在安装软件时才使用管理员账户,而不是用于日常工作;使用普通用户账户来安装。

Registry Keys 的完整列表

你可以在维基中找到有用的注册表键和值的最新列表

其他需要配置的东西

本节旨在涵盖你可以配置的其他东西。它也是一个技巧和窍门的集合,以获得使用 Wine 的最大好处。

串行和并行端口

从 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 的条目,没有任何值,以删除 COM5 设备,它现在是 COM1 的一个重复。编辑完注册表后,用 wineserver -k 关闭 Wine ,下次 Wine 运行程序时,你的修改将生效。

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

ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1

网络分享

注意: 这个页面或章节在一个或多个方面已经过时。可能的讨论可以在谈话页上找到。请更新以反映当前信息。

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

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

以使其在 Wine 中可用(如果 unc 目录还不存在,别忘了创建它)。

字体

字体配置,曾经是一个令人讨厌的问题,现在已经简单多了。如果你在 Windows 中收集了 TrueType 字体,只需将 .ttf 文件复制到 c:\windows\fonts 即可。

打印机

Wine 可以直接与本地的 CUPS 打印系统进行交互,以找到你系统上可用的打印机。用 Wine 配置打印机就像确保你的CUPS配置工作一样简单。

如果你不使用 CUPS,就会使用旧的 BSD -打印系统:

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

扫描仪

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

ODBC 数据库

Wine 中的 ODBC 系统和打印系统一样,被设计为在高水平上与 Unix 系统挂钩。它没有确保所有的 Windows 代码在 Wine 下工作,而是使用一个合适的 Unix ODBC 提供者,比如 unixODBC 。因此,如果你将 Wine 配置为使用内置的 odbc32.dll,Wine DLL 将与你的 Unix ODBC 包对接,并让它完成工作,而如果你将 Wine 配置为使用本地 odbc32.dll ,它将尝试使用本地ODBC32驱动程序等。

在 Unix 上配置 ODBC

在 Wine 中使用 Unix ODBC 系统的第一步当然是让 Unix ODBC 系统自己工作。这可能涉及下载代码或二进制包等。有几个 Unix ODBC 系统可用,如 unixODB C或 ODBC-ODBC bridge ,可用于访问 Microsoft Access 数据库。通常,这类系统包括一个工具,如 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 库之间的一个存根。

如果你有任何问题,那么你可以在运行 Wine 之前使用 WINEDEBUG=+odbc32 命令来追踪所发生的事情。一个警告:有些程序实际上有点作弊,绕过了ODBC 库。例如,Crystal Reports 引擎会进入注册表来检查 DSN 。这个问题的解决方法在 unixODBC 网站上有一个关于在 Wine 中使用 unixODBC 的章节。

使用 Windows ODBC 驱动程序

据报道,本地 ODBC 驱动程序可用于许多类型的数据库,包括 MSSQL 和 Oracle 。事实上,有些数据库如 MSSQL 只能通过 Winelib 应用程序在 Linux 上访问。大多数ODBC驱动程序不只是复制 DLL 文件,而是需要一个基于 Windows 的安装程序来运行,以正确配置注册表键等东西。

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

DB Type 可用性
MS SQL 100%

如果有其他成功的经验,请向 wine-devel 邮件列表报告。

故障排除/提交 BUG

如果一些程序仍然无法工作,该怎么办?

有些时候,你已经尝试了所有的方法,你甚至在满月的时候杀了一只猫,在跳魔鬼舞的时候用腐烂的大蒜和臭鱼吃了它,但是没有任何帮助使一些该死的程序在某些 Wine 版本上工作。不要绝望,我们在这里帮助你...... (换句话说:你想付多少钱? XD)

验证你的 Wine 配置

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

使用不同版本的 windows 设置

在一些情况下,使用不同的 Windows 版本设置可以解决问题。

使用不同的启动路径

下面的内容有时也可能有用:

   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

调整 DLL 的配置

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

检查你的系统环境

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

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

通过 winecfg 指示 Wine 使用桌面模式,或正常的管理模式。这也会带来很大的不同。

检查你的应用

也许你的应用程序正在使用某种复制保护?许多复制保护目前在 Wine 上不起作用。不过,有些可能在将来会起作用。CD-ROM 层还没有真正实现全功能)。

重新配置 wine

有时,Wine 的安装过程会发生变化,新版本的 Wine 会在这些变化上进行核算。如果你的设置是很久以前创建的,这一点尤其正确。重命名你现有的 ~/.wine 目录,以便备份。使用为你的Wine发行版推荐的设置过程来创建新的配置。使用旧的 ~/.wine 目录中的信息作为参考。稍后你可以删除新的 ~/.wine 目录并重新命名你的旧目录。

查阅更多信息

真的很有可能有人已经试图做和你一样的事情。你可能会发现以下资源对你有帮助:

  • 搜索 WineHQ 应用程序数据库,查看与该程序有关的任何提示。如果你的特定版本的程序没有被列出,你可能会发现不同的版本包含足够的信息来帮助你。
  • 谷歌可能是有用的,这取决于你如何使用它。
  • Freenode.net 为 Wine 创建了一个 IRC 频道。你可以通过使用任何 IRC 客户端(如 HexChat)访问它。你需要的设置是:server, irc.freenode.net, port, 6667, channel, #winehq
  • 如果你有一个需要安装可重新分配的运行时间的程序,例如 mfc42.dll、Visual Basic 等,可以用 winetricks 来提供这些。请注意,这些组件受他们自己的许可证约束,不是Wine项目的一部分。
  • WineHQ 论坛win-users 邮件列表也可能有帮助。wine-devel 邮件列表可能是合适的,这取决于你所遇到的问题的类型。如果你在 wine-devel 上发帖,你应该准备好做一些工作来帮助诊断问题。请阅读下面的章节,了解如何调试你的问题的来源。

如果其他方法都失败了,你可能希望调查 Wine 的商业版本,看看你的应用程序是否被支持。

Debug

找到问题的根源是下一步要做的。可能出现的问题范围很广,从简单的配置问题到 Wine 中完全未实现的功能。下一节将描述如何提交一份错误报告,以及如何开始调试崩溃。关于使用 Wine 调试设施的更多信息,请务必阅读Wine 开发者指南

提交 BUG

详见:BUG

术语表

二进制文件(Binary):

  • 以机器可执行的编译形式存在的文件:十六进制数据(与源代码文件相反)。

发行版(Distribution):

  • 发行版通常是一些 "供应商 "运送操作系统CD的方式(通常在Linux的背景下提到)。一个Linux环境可以有很多不同的配置:例如,发行版可以被建立为适合游戏、科学应用、服务器操作、桌面系统等。

DLL:

  • 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 账户由
#
  • 表示,而 $ 则表示一个常规的用户账户。

Shell:

  • shell 是一个让用户与系统互动的工具。通常情况下,shell 是基于文本和面向命令行的。流行的 shell 的实例包括 bash、tcsh 和 ksh 。Wine 假定在执行 Wine 安装任务时,你使用 bash,因为这是 Linux 上最流行的 shell 。Shell 通常在一个终端窗口中运行。

源码(Source code):

  • 源代码是一个程序在被编译之前的代码,也就是说,它是一个程序的原始构建指令,它告诉编译器,一旦程序被编译成二进制文件,它应该是什么样子。

终端(Terminal):

  • 终端窗口通常是一个图形窗口,人们用它来执行 Shell 。如果 Wine 要求你打开一个终端,那么你通常需要点击桌面上的一个图标,通常会显示一个大的黑色窗口。Wine 假定你使用的是 bash shell,所以如果你的终端恰好使用不同的 shell 程序,只需在终端窗口输入 bash 即可。

推荐阅读

参考