Wine

来自 Arch Linux 中文维基

Wine 是一款可以在类 Unix 操作系统上运行微软 Windows 应用程序的兼容层。在 Wine 中运行的程序可以像本地程序一样运行,而没有模拟器的性能/内存损失。

警告:

安装[编辑 | 编辑源代码]

首先启用multilib仓库,然后安装 wine(开发版),wine-stableAUR(稳定版)或 wine-staging(测试版本)。Wine StagingWine 的修补版本, 其中包含了漏洞修复和尚未集成到稳定或开发分支中的特性。

注意: 如果您不想启用 multilib 存储库,或者只想避免安装额外的32位库,则可以使用 wine-wow64AURwine-staging-wow64AUR 包。它们使用“新WoW64模式” 构建,用于运行仅使用64位Linux库的32位Windows应用程序。然而,该模式目前仍是实验性的。[1]

其它需求见#图形驱动程序#声音

可以考虑为依赖于 Internet Explorer 和 .NET 的应用程序分别安装 wine-geckowine-mono。这两个软件包不是一定要安装的,因为 Wine 会根据需要自行下载相关文件。反过来说,如果提前安装了软件包,Wine 就不需要再下载这些文件了。

可选依赖项[编辑 | 编辑源代码]

注意: 常见的依赖项,尤其是与游戏相关的依赖项,可以参考 lutris 文档

Wine 有许多可选依赖项,简单的应用程序可能不需要这些依赖项,但如果希望使用声音、3D 图形、视频播放等功能,则应安装这些依赖项。

请注意,许多 Windows 应用程序都是 32 位的,因此需要 32 位版本的相应库,其中有些库仅在 AUR 上提供。标准(64 位)库可用于 64 位应用程序,如果运行的 Wine 版本采用新的 WoW64 模式(参见#安装中的说明),则可用于任何应用程序。使用 file(1) 命令可以检查 Windows 可执行文件是否为 64 位。

图形驱动程序[编辑 | 编辑源代码]

当你需要安装 32 位版本的图形驱动程序时。请安装 Xorg#驱动安装页面中 OpenGL (multilib) 一栏列出的软件包。

当 Wine 在你的终端窗口中报告以下内容时,你的驱动程序可能没有正确安装或配置:

Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly
注意: 安装正确的库之后你可能需要重新启动 X 服务。

声音[编辑 | 编辑源代码]

提示:在使用 Wine 运行应用时遇到声音问题,您也可以尝试在 winecfg 中检查声音设备的配置,确认选择了正确的声音设备。

根据不同的声音驱动,安装对应的软件包:

MIDI支持[编辑 | 编辑源代码]

MIDI 是一种在 20 世纪 90 年代被广泛使用的音乐系统。如果您使用 Wine 游玩使用了相关技术的老游戏,可能会发现游戏音乐无法正常播放。 事实上 Wine 提供了非常好的 MIDI 支持,但前提是您的主机系统也支持 MIDI,相关内容请参阅英文页面。 最后需要注意的是,请确保 Wine 使用了正确的 MIDI 输出。

其他依赖[编辑 | 编辑源代码]

部分应用可能会需要其他的依赖(参考 WineHQ 页面


WINEPREFIX 内部依赖[编辑 | 编辑源代码]

除了系统依赖项之外,一些程序还需要额外的字体或 dll 库文件,这时您可以将相关内容复制或安装到 #WINEPREFIX 中(相关说明可以参考 WineHQ 页面)。

我们姑且将上面这种依赖情况称为“WINEPREFIX 内部依赖(In-prefix dependencies)”。

您可以尝试使用 Winetricks 来满足一些程序的依赖。它像一个简陋的“包管理器”,通过安装一些软件及应用相关配置来满足不同程序的运行需求。关于它的安装和使用可以参考下文的 #Winetricks 章节。

由于依赖关系之间的冲突,您可能无法创建可以运行所有程序的“完美”运行环境 [2] [3]。建议您将前缀(Wine Prefix)视为可以随时被销毁的(除非它们包含重要的配置或数据),并为具有不同依赖关系的程序使用单独的前缀。您可以使用 #WINEPREFIX 环境变量来指定您期望操作的前缀环境。

确定某个应用需求所需的依赖往往需要反复试验,您可以参考 Bottles 的依赖页面,了解一些常见的依赖关系。下面的内容对解决一些特定的应用依赖问题可能会有所帮助:

  • Wine Application Database:Wine 的官方资源,但是内容可能比较老旧且相对下面的内容可能相对缺少维护。
  • Lutris:您可以在 lutris 的页面上搜索您想游玩的游戏,部分游戏可以在详细页面点击下拉菜单按钮,选择“View install script”来查看 lutris 所使用的 Winetricks 的配置。
  • Bottles program repository:资源规模较小,但不仅仅包括游戏。
  • ProtonDB:虽然 Proton 与 Wine 的兼容性不同(如果您使用该网站资源或在网站创建回复,建议仅使用 Proton),但是评论中可能会搜集到用户所使用的配置。
    • 您也可以查阅 protonfixes 工具的源代码,以及包含其内容的 proton-ge-custom。但要注意的是,他们假定您的运行环境中存在 Proton 和 GE 的修复游戏运行补丁。

如果您发现自己在管理游戏运行环境上花费了大量时间,那么使用第三方应用程序代为处理可能会更方便。

第三方程序[编辑 | 编辑源代码]

以下的程序均有他们自己的社区与官网,Wine的官方社区不支持。详见Wine Wiki

  • Bottles — 一个基于GTK图形化的Wine前缀和运行管理器。
https://usebottles.com/ || bottlesAUR
  • CrossOver — 收费的商用官方 Wine。提供更多的终端用户支援和图形化界面。
https://www.codeweavers.com || crossoverAUR
  • icoextract — Windows 的可执行程序 (.exe 和 .dll) 的图标生成器。
https://github.com/jlu5/icoextract || icoextractAUR
  • Lutris — 一个游戏启动器(附前缀管理功能),支持Wine上的游戏以及Linux原生游戏。
https://lutris.net || lutris
  • PlayOnLinux — 图形化 Wine 前缀管理器。包括脚本协助程序的安装与配置。
https://www.playonlinux.com || playonlinuxAUR
  • Proton — 为Steam打造的兼容性工具,它基于 Wine 而有很多附加组件。见ProtonDB 获取兼容列表。
https://github.com/ValveSoftware/Proton || protonAUR
  • PyWinery — 为 Wine 打造的简单前缀管理器。
https://github.com/ergoithz/pywinery || pywineryAUR
  • Q4Wine — 给 Wine 的图形化前缀管理器。为更好地设计统一,可以使用Qt主题到 Wine 设置中。
https://sourceforge.net/projects/q4wine/ || q4wine-gitAUR
  • WINEgui — 用户友好的 wine 图形界面
https://gitlab.melroy.org/melroy/winegui || wineguiAUR, winegui-binAUR

配置[编辑 | 编辑源代码]

配置 Wine 通常使用以下方法:

  • winecfg 是 Wine 的 GUI 配置工具,可以通过运行 winecfg 来启动。
  • regedit 是 Wine 的注册表编辑工具,可以通过运行regedit 来启动。另见 WineHQ 关于有用的注册表键的文档。
  • control 是 Wine 的 Windows 控制面板的实现,可以通过运行 wine control 来启动。
  • 完整列表见 WineHQ 的命令列表

WINEPREFIX[编辑 | 编辑源代码]

默认情况下,Wine 将其配置文件和安装的 Windows 程序存储在 ~/.wine ,通常会把此目录叫作“Wine prefix”或“Wine bottle”。当您运行 Windows 程序或 Wine 的捆绑程序(如 winecfg)时,它会自动创建/更新。前缀目录还包含一个目录,您的 Windows 程序将其视为 c: ( C 盘)。

注意: Wine 前缀不兼容旧版本。新版本的Wine会在必要时自动升级旧前缀,旧版本的 Wine 使用升级后的前缀可能会出错。(Lutris-GE-7.0-8-LoL 版本说明中有提到类似问题)

您可以通过 WINEPREFIX 环境变量指定 Wine 使用的前缀位置。如果您希望为不同的 Windows 程序使用单独的配置,这会非常有用。当 Wine 在指定的 WINEPREFIX 第一次运行时,Wine 将自动创建一个带有 C 盘和注册表信息的目录。

例如,如果您分别执行命令 env WINEPREFIX=~/.win-a wine program-a.exeenv WINEPREFIX=~/.win-b wine program-b.exe ,这两个程序将分别在 ~/.win-a~/.win-b 路径下有各自单独的 C 盘目录和注册表配置。

警告: Wine不是沙盒!运行在 Wine 下的程序仍然可以访问外部系统的内容!(例如, Wine 会默认将 / 映射到 Z:,无论哪个 Wine 前缀)

若要在不运行 Windows 程序或其他图形工具的情况下创建前缀,可以执行:

$ env WINEPREFIX=~/.customprefix wineboot -u

WINEARCH[编辑 | 编辑源代码]

Wine将默认启动一个64位环境。你可以改变它使用WINEARCH环境变量。改名你的~/.wine目录并创建一个新的Wine环境通过使用$WINEARCH=win32 winecfg。这将给你一个32位Wine环境。不设置WINEARCH将给你一个64位环境。

你可以通过修改WINEPREFIX来创建一个分开的win32win64环境:

$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg
$ WINEPREFIX=~/win64 winecfg

你也可以使用WINEARCH与其它Wine程序合并,例如winetricks(以Steam为例)

WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam

为了使用这个架构在一个存在的预设,你可以检查他的注册表文件。如下的命令读了~/.wine的预设系统注册表并返回#arch-win32#arch=win64依赖于架构类型。

$ grep '#arch' ~/.wine/system.reg

字体[编辑 | 编辑源代码]

如果 Wine 应用程序没有显示易读的字体,则可能没有安装任何字体。轻松链接所有的系统字体,使其可以从Wine:

$ cd ${WINEPREFIX:-~/.wine}/drive_c/windows/Fonts && for i in /usr/share/fonts/**/*.{ttf,otf}; do ln -s "$i" ; done

Wine 使用 FreeType 渲染字体,而 FreeType 的默认设置在几个版本之前已经改变了。尝试在Wine项目中使用这种环境设置:

FREETYPE_PROPERTIES="truetype:interpreter-version=35"

另一种可能性是在Wine前缀中安装微软的 TrueType 字体。详见微软字体。 如果这没有帮助,请先运行winetricks corefonts ,如果依然不能,请运行 winetricks allfonts

运行此类程序后,关闭所有 Wine 服务并运行 winecfg 。字体现在应该是可读的。

如果字体看起来模糊不清,导入以下文本文件到 Wine 注册表regedit:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Wine\X11 Driver]
"ClientSideWithRender"="N"

对于高分辨率显示,可以在 winecfg 中调整 dpi 值。

另见字体配置#不支持Fontconfig的程序

启用平滑字体[编辑 | 编辑源代码]

提高Wine渲染效果的一个好方法是使用cleartype平滑字体。 若要启用“次像素平滑(ClearType) RGB”:

/tmp/fontsmoothing
REGEDIT4

[HKEY_CURRENT_USER\Control Panel\Desktop]
"FontSmoothing"="2"
"FontSmoothingOrientation"=dword:00000001
"FontSmoothingType"=dword:00000002
"FontSmoothingGamma"=dword:00000578
EOF
	
 $ WINE=${WINE:-wine} WINEPREFIX=${WINEPREFIX:-$HOME/.wine} $WINE regedit /tmp/fontsmoothing 2> /dev/null

详见[4]

桌面启动器[编辑 | 编辑源代码]

当使用 Windows 应用安装程序创建一个快捷方式时,Wine 会创建 .desktop 文件。Arch Linux 中这些文件的默认位置是:

  • 桌面快捷方式位于 ~/Desktop 下。
  • 开始菜单图标位于 ~/.local/share/applications/wine/Programs/ 下。
注意: Wine 不支持为所有用户安装 Windows 应用程序,所以 Wine 不会把 .desktop 文件放到 /usr/share/applications 下。详见 WineHQ bug 11112
提示:如果安装软件时桌面启动器并没有创建或已经丢失,wine winemenubuilder 也许能帮得上忙。

为Wine utilities创建菜单项[编辑 | 编辑源代码]

默认情况下,Wine 的安装不会为 Wine 附带的软件创建桌面菜单/图标(例如“ winecfg”、“ winebroserer”等)。这可以通过安装 wine-installerAURwine-installer-gitAUR meta-package (后者没有附加依赖项)来实现,否则这些说明将为这些应用程序添加条目。

首先,使用 Wine 安装一个 Windows 程序来创建基本菜单。创建基本菜单后,可以在 ~/.local/share/applications/wine/:

wine-browsedrive.desktop
[Desktop Entry]
Name=Browse C: Drive
Comment=Browse your virtual C: drive
Exec=wine winebrowser c:
Terminal=false
Type=Application
Icon=folder-wine
Categories=Wine;
wine-uninstaller.desktop
[Desktop Entry]
Name=Uninstall Wine Software
Comment=Uninstall Windows applications for Wine
Exec=wine uninstaller
Terminal=false
Type=Application
Icon=wine-uninstaller
Categories=Wine;
wine-winecfg.desktop
[Desktop Entry]
Name=Configure Wine
Comment=Change application-specific and general Wine options
Exec=winecfg
Terminal=false
Icon=wine-winecfg
Type=Application
Categories=Wine;

并在~/.config/menus/applications-merged/目录下创建如下文件:

wine.menu
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
  <Name>Applications</Name>
  <Menu>
    <Name>wine-wine</Name>
    <Directory>wine-wine.directory</Directory>
    <Include>
      <Category>Wine</Category>
    </Include>
  </Menu>
</Menu>

如果这些设置产生了一个难看的/不存在的图标,这意味着在您所启用的图标集中没有这些启动程序的图标。您应该将图标设置替换为所需图标的位置。单击启动器属性菜单中的图标将会产生同样的效果。一个支持这些快捷方式的图标集是gnome-colors-icon-themeAUR

删除选单条目[编辑 | 编辑源代码]

由 Wine 创建的菜单条目位于 ~/.local/share/applications/wine/Programs/. 除了通过 Wine 删除不需要的扩展绑定,还可以执行以下命令(摘自 Wine 官网) :

$ rm ~/.local/share/mime/packages/x-wine*
$ rm ~/.local/share/applications/wine-extension*
$ rm ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*
$ rm ~/.local/share/mime/application/x-wine-extension*

有时你也可以通过移除在/.config/menus/中的wine-*.menu文件以彻底移除来自kde里的Wine子菜单中的图标。

主题[编辑 | 编辑源代码]

类似于 xp 外观的主题可以在这里下载. 为安装它,见上游维基文档. 最后,用 winecfg 选择它。

注意: 上面链接的主题只能安装在32位前缀上,前缀版本为 windowsxp。要将其安装在64位前缀上,可能需要创建一个临时的32位前缀,安装主题并拷贝Zune目录和Zune.theme档案自32位前缀中的drive_c/Windows/Resources/Themes目录到你常用的前缀。

测试版Wine用户也许想要尝试启用Enable GTK3 Themingwinecfg的测试部分作为一个主题匹配正在使用的GTK主题。

打印[编辑 | 编辑源代码]

为了在Wine程序中使用已安装的打印机(包括本地与网路的)在 win32 前缀(如微软 Word ),安装lib32-libcups包,使用(wineboot)重启 wine,然后重新启动你的wine程序。

网络[编辑 | 编辑源代码]

安装过后,lib32-gnutls 包也许需要为一些程序安装来创建 TLS 或 HTTPS 连接。

对于 ICMP(ping),Wine 也许需要如上所述的网络访问,见 WineHQ FAQ

# setcap cap_net_raw+epi /usr/bin/wine-preloader

如果在这之后出事(例如未处理的异常或特权指令),删除它通过:

# setcap -r /usr/bin/wine-preloader

使用[编辑 | 编辑源代码]

警告: 不要以 root 身份运行或安装 Wine 应用程序!详见 Wine FAQ

Wine用户手册以获得Wine使用中的通用讯息。

Wine程序数据库(AppDB)以获得Wine中特殊Windows程序的附加讯息。

Wayland[编辑 | 编辑源代码]

Wine 当前并不直接支持 Wayland,但你可以使用 XWayland

这有一些支持 Wayland 的努力:

  • Wine 的实验性的 Wayland 驱动,可支持 OpenGL 与 Windows GDI 程序。见这个这个 wine 开发邮箱列表条目。
  • wine-wayland:一个 Wine 的定制版本,可支持 Wayland 通过 Vulkan(所以它只支持Direct9、10和11通过#DXVK和 Vulkan 完全支持的程序)。

提示与技巧[编辑 | 编辑源代码]

Wineconsole[编辑 | 编辑源代码]

通常情况下,你可能需要运行.exe来修补游戏文件,例如一个老游戏的宽屏 mod,通过 Wine 正常运行.exe可能不会产生任何效果。在这种情况下,你可以打开一个终端,运行以下命令。

$ wineconsole cmd

然后转到该目录,从那里运行.exe文件。

Winetricks[编辑 | 编辑源代码]

Winetricks是一个可以帮助用户安装一些 windows 程序所需以来的脚本。可安装的组件包括 Direct9、MSXML(Office 2007 和 Internet Explorer 所需依赖)、Visual 运行时库和很多其它组件。

安装winetricks(或winetricks-gitAUR)后,直接执行下面命令即可使用:

$ winetricks

如果希望使用图形界面,需要安装 zenity(GTK)或 kdialog(QT)。

性能[编辑 | 编辑源代码]

CSMT[编辑 | 编辑源代码]

CSMT 是 Wine 使用的一项技术,它为 OpenGL 调用使用了一个单独的线程,以显著提高性能。从 Wine 3.2 开始,CSMT 被默认启用。

更多:

强制使用OpenGL模式运行游戏[编辑 | 编辑源代码]

有些游戏可能有 OpenGL 模式,其性能可能比其默认的 DirectX 模式更好。虽然启用 OpenGL 渲染的是 "特定应用",但许多游戏可以使用 -opengl 参数。

$ wine /path/to/3d_game.exe -opengl

你应该参考你的应用程序文档和 Wine 的官网 AppDB 来了解这些应用程序的具体信息。

VKD3D-Proton[编辑 | 编辑源代码]

VKD3D-ProtonVKD3D 的一个 fork,这旨在用 Vulkan 实现完整的 Direct3D 12 API。该项目是 Proton 中 Direct3D 12 支持的开发项目,旨在提高 DirectX 12 游戏的性能和兼容性。

为使用它,安装 vkd3d-proton-binAUR。然后运行下面的指令来在你的 Wine 前缀中激活它(默认是 ~/.wine)。

$ WINEPREFIX=your-prefix setup_vkd3d_proton install
警告: VKD3D-Proton 会覆盖 DirectX 12 DLL,这也许会被一些在线多玩家游戏认定为作弊,然后你的账户可能会被 banned。用的时候小心!

DXVK[编辑 | 编辑源代码]

DXVK 是在 Vulkan 上对 DirectX 9、10 和 11 的一个可能的新实现。这应该有更好的性能,在某些情况下,甚至更好的兼容性。例如,《战地1》在 DXVK 下运行。另一方面,DXVK 并不支持所有的 Wine 游戏(目前)。

安装 dxvk-binAUR 以使用它. 然后运行以下命令,在 wine 前缀中激活它(默认为 ~/.wine):

$ WINEPREFIX=your-prefix setup_dxvk install
警告: DXVK 覆盖了 DirectX 10 和 11 的许多dll,这可能被认为是在线多人游戏中的作弊行为,并可能使你的账户被封。使用时风险自负!

Gallium Nine[编辑 | 编辑源代码]

这里是Gallium Direct3D state tracker,协同开源的基于 gallium 的驱动(可用于绝大部分的 AMD 与 Intel 显卡),目标是可提供接近真实的 DirectX 9 性能。在大多数情况下,它相对上游 wine 故障更少,却拥有着加倍的性能。相对于 CSMT,它消耗更少的 CPU 分时。

安装 wine-nine 来使用它。这是个单独包,可以同任何 wine 版本一起安装。使用 wine ninewinecfg 来检查它是否启用。

对于老 Intel 显示卡(en4-7: GMA 3000, GMA 4500, HD 2000-5000; 2006-2014 年),自 Mesa 21.2 开始,Crocus Gallium 驱动需要使用 i965 。Export 这个环境变量在运行 wine 之前:

MESA_LOADER_DRIVER_OVERRIDE=crocus

取消注册已经存在的Wine档案关联[编辑 | 编辑源代码]

默认情况下,Wine 接管了许多格式的默认程序。一些(例如 vbs 或是 chm )都是 Windows 独有的,并且用 Wine 打开他们是方便的。但是,很多其它的格式(例如 gif、{{ic}jpeg}}、txtjs 在Wine的模拟 Internet Explorer 或 Notepad 中打开是烦人的

Wine的档案关联都设定在 ~/.local/share/applications/ 作为 wine-extension-extension.desktop 档案。删除这些档案对应的就像你想的那样取消注册了。或者,删除所有的 wine 拓展:

$ rm -f ~/.local/share/applications/wine-extension*.desktop
$ rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*

接下来,删除旧缓存:

$ rm -f ~/.local/share/applications/mimeinfo.cache
$ rm -f ~/.local/share/mime/packages/x-wine*
$ rm -f ~/.local/share/mime/application/x-wine-extension*

并且,升级这些缓存:

$ update-desktop-database ~/.local/share/applications
$ update-mime-database ~/.local/share/mime/

请注意,如果应用程序再次设置文件关联,Wine仍将创建新的文件关联,甚至重新创建文件关联。

阻止 Wine 创建文件关联[编辑 | 编辑源代码]

注意: 必须对每个 WINEPREFIX 执行此操作,除非您选择更改 /usr/share/wine/wine.inf,否则不应更新文件关联。

这个方法避免建立档案类型关联,但是保留建立的 XDG .desktop 档案(你可能会在选单中看到它们)。

如果你想阻止 wine 通过 winecfg 创建档案关联,你必须不检查桌面通讯选项卡下的“管理档案关联”复选框,见 Wine FAQ

为了创建相同的更改通过注册表,在以下的路径加入字符串值 N启用

HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations

你也许需要先创建键 FileOpenAssociations

为了在命令行创建相同的改变,运行下面的指令:

$ wine reg add "HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations" /v Enable /d N

如果你想去应用默认设置在新的 Wine 前缀,编辑 /usr/share/wine/wine.inf 并加入这一行到 Services 段下:

HKCU,"Software\Wine\FileOpenAssociations","Enable",2,"N"

为了防止包升级覆盖设置档案,创建一个 pacman 钩子来让这个变化自动进行:

/etc/pacman.d/hooks/stop-wine-associations.hook
[Trigger]
Operation = Install
Operation = Upgrade
Type = Path
Target = usr/share/wine/wine.inf

[Action]
Description = Stopping Wine from hijacking file associations...
When = PostTransaction
Exec = /bin/sh -c '/usr/bin/grep -q "HKCU,\"Software\\\Wine\\\FileOpenAssociations\",\"Enable\",2,\"N\"" /usr/share/wine/wine.inf || /usr/bin/sed -i "s/\[Services\]/\[Services\]\nHKCU,\"Software\\\Wine\\\FileOpenAssociations\",\"Enable\",2,\"N\"/g" /usr/share/wine/wine.inf'

See Pacman#Hooks

自动使用 Wine 执行 Windows 程序[编辑 | 编辑源代码]

wine 软件包会安装一个 binfmt 文件,这可使你能够直接运行 Windows 程序,例如,./myprogram.exe 将与 wine ./myprogram.exe 效果相同。服务默认在开机时启动,如果在安装 Wine 之后还没有重启过,启动 systemd-binfmt.service 即可。

注意: 确保 Windows 程序可执行,否则程序将不会运行。

双显示器具有不同的分辨率[编辑 | 编辑源代码]

如果您在双显示器设置与不同的显示分辨率方面有问题,这可能是缺少了 lib32-libxrandr

安装 lib32-libxinerama 也许可以解决 wine 中的双头问题(例如,最底部或右侧的显示器的程序中的按钮与选单不可被按下,该区域中应用程序的界面不可重绘,离开应用程序区域后拖动鼠标光标状态受阻)。

烧录光盘[编辑 | 编辑源代码]

为了烧录 CD 或者是 DVD,你将需要加载sg内核模块

正确的挂载光碟[编辑 | 编辑源代码]

一些程序会将光碟作为一个设备检查。他们可能只检查数据,在这种情况下,可将相应路径配置为“winecfg”中的 CD-ROM 驱动器。

但是。其它程序将找到媒体名称或/和序列号,在这种情况下映像要用特殊的属性挂载。

一些虚拟设备无法处理这些元数据,就像是基于 FUSE 的虚拟设备(譬如 Acetoneiso)。 CDemu 将会正确的处理它。

游戏内显示帧数[编辑 | 编辑源代码]

Wine 有一个内置的 FPS 检测器,在环境变量 WINEDEBUG=fps 设定的情况下,它会运行在所有图形程序上。这将会输出帧率到标准输出。你可以显示帧率到屏幕最上面通过 xosd 包中的 osd_catwinefps.sh 为它的帮助脚本。

在单独的用户帐户下运行 Wine[编辑 | 编辑源代码]

在一个专门创建的用户账户下运行Wine可能是可取的,以便减少对 Windows 应用程序访问你的主目录的担忧。

第一步,建立一个用户账户给Wine:

# useradd -m -s /bin/bash wineuser

现在切换到另一个 TTY,像平常一样启动你的X WM或DE,或者继续阅读......

注意: 以下方法仅在为Xorg启用root时有效。关于如何在主用户下执行xhost命令的更多信息,请参见Xorg#Rootless Xorg

之后,为了使用这个新的用户账户打开Wine应用程序,你需要将这个新用户添加到X服务器的权限列表中。

$ xhost +SI:localuser:wineuser

最后,你可以通过以下命令来运行Wine,该命令使用env来启动Wine,并加入它所期望的环境变量。

$ sudo -u wineuser env HOME=/home/wineuser USER=wineuser USERNAME=wineuser LOGNAME=wineuser wine arguments

可以使用如下的shell脚本,使用Wine运行Windows应用程序的过程自动化:

/usr/local/bin/runaswine
#!/bin/bash
xhost +SI:localuser:wineuser
sudo -u wineuser env HOME=/home/wineuser USER=wineuser USERNAME=wineuser LOGNAME=wineuser wine "$@"

Wine程序可以被通过以下指令启动:

$ runaswine "C:\path\to\application.exe"

为了在每次以其他用户身份运行Wine时不被要求输入密码,可以在sudoers文件中加入以下条目。mainuser ALL=(wineuser) NOPASSWD: ALL。更多信息见Sudo#Configuration

建议以Wine用户身份运行winecfg,并在配置窗口的 "桌面集成 "部分删除Wine用户主目录以外的所有目录绑定,这样,使用Wine运行的程序就无法读取特殊用户主目录以外的任何文件。

请记住,如果使用了PulseAudio,那么在以这种方式运行的Wine程序中,音频可能将无法发挥作用。请参阅 PulseAudio/Examples#Allowing multiple users to share a PulseAudio daemon 以了解关于允许Wine用户访问主用户的PulseAudio daemon的信息。

Tmpfs 上的临时目录[编辑 | 编辑源代码]

为了防止 Wine 写它的临时的文件到物理硬碟上,需要设置一个另外的位置,例如 tmpfs。删除 Wine 放临时文件的默认位置并建立一个软链接:

$ rm -r ~/.wine/drive_c/users/$USER/Temp ~/.wine/drive_c/windows/temp
$ ln -s /tmp/ ~/.wine/drive_c/users/$USER/Temp
$ ln -s /tmp/ ~/.wine/drive_c/windows/temp

防止 Mono/Gecko 的安装[编辑 | 编辑源代码]

如果 Gecko 或/和 Mono 都不在系统或 Wine 前缀中,Wine 将提示从网路上下载他们。如果你并不需要 Gecko 或/和 Mono,你也许希望关闭这个提示,通过设置 WINEDLLOVERRIDES 环境变量mscoree=d;mshtml=d.。

Vulkan[编辑 | 编辑源代码]

默认的 wine Vulkan ICD 加载器在大多数程序中都工作地很好,但是不支持高级特性,例如 Vulkan 层。为使用这些特性,你需要安装官方的 Vulkan SDK,见原始的Vulkan补丁作者的 GitHub page 的第二到四步。

删除Wine文件绑定[编辑 | 编辑源代码]

因为安全因素,移除 Wine 绑定来让 Windows 程序无法直接从文件管理器或是浏览器(Firefox 提供直接使用 Wine 打开 EXE 文件的方法)或许是有用的。 假如你想这么做,你也需要加入下面的内容到 /etc/pacman.conf[options] 部分。

NoExtract = usr/lib/binfmt.d/wine.conf
NoExtract = usr/share/applications/wine.desktop

WineASIO[编辑 | 编辑源代码]

如果你需要 Wine 下的专业的音频支持,你可以使用 wineasioAUR 来提供一个给 wine 的 ASIO 界面来让你可以使用 JACK

为了使用 wineasio,你必须将自己加入realtime用户组

然后你需要注册 wineasio 到你的选定的 wine 前缀。注册32位或/和64位版本作为需要的:

$ regsvr32 /usr/lib32/wine/i386-windows/wineasio.dll
$ wine64 regsvr32 /usr/lib/wine/x86_64-windows/wineasio.dll

疑难解答[编辑 | 编辑源代码]

Wine 用户指北Wine FAQ (特别注意这个 Troubleshooting 会话)以参阅通用指北。

也请将运行程序的建议也反馈到 Wine AppDB

XWayland问题[编辑 | 编辑源代码]

如果你在 XWayland 下使用 wine,你可以在 winecfg 的显示菜单启用「模拟虚拟桌面」来避免以下的问题:

  • 窗口闪动;
  • 错误的窗口位置;
  • 错误的鼠标位置和点击;
  • 键盘监察错误。

键盘输入不工作[编辑 | 编辑源代码]

这可能是由于窗口管理器没有切换焦点造成的。在winecfg图形标签中,禁用'允许窗口管理器...'选项,或者用'模拟虚拟桌面'设置窗口模式。

  • 有人建议切换所有的 "窗口设置",点击 "应用",然后把它们改回来。如果这不起作用,请尝试上述方法。

如果在取消应用程序的焦点后,键盘不能工作,请尝试编辑注册表。

  • HKEY_CURRENT_USER\Software\Wine\X11 Driver下,添加一个字符串值 UseTakeFocus 并将其设置为 N
  • 另外,你也可以用 winetricks 来设置这个值。
winetricks usetakefocus=n

参见[编辑 | 编辑源代码]