Wine (简体中文) - ArchWiki

Jump to content

Related articles

- CrossOver
- Deepin-wine
- Wine package guidelines

翻译状态：本文是 Wine 的翻译。上次翻译日期：2022-08-21。如果英文版本有所更改，则您可以帮助同步翻译。

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

警告：

- Wine 并非与你的系统隔离。
- 如果你可以使用你的用户帐户访问某个文件或资源，那么在 Wine 中运行的程序也可以。参见#在单独的用户帐户下运行 Wine和安全#沙盒程序了解可能的预防措施。
- Wine 也可以运行恶意软件（参见 Wine 关于恶意软件兼容性的 FAQ)

## 安装

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

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

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

### 第三方程式

以下的程式均有他们自己的社区与官网，Wine的官方社区不支持。相见Wine Wiki

- 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

- Bottles — Wine 的图形化前缀和运行管理器，基于 GTK。

  https://usebottles.com/ || bottlesAUR

## 配置

配置 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盘)。

您可以使用 `WINEPREFIX`环境变量覆盖 Wine 使用的前缀位置。如果您希望为不同的 Windows 程序使用单独的配置，这将非常有用。第一次运行带有新 Wine 前缀的程序时，Wine 将自动创建一个带有 c 驱动器和注册表的目录。

例如，如果您运行一个带有`$ env WINEPREFIX=~/.win-a wine program-a.exe`的程序，和另一个 `$ env WINEPREFIX=~/.win-b wine program-b.exe`这两个程序将分别有一个单独的 c 驱动器和单独的注册。

警告： Wine不是沙盒！在 Wine 下运行的程序仍然可以访问系统的其余部分！(例如, `Z:` 映射到 `/`, 与 Wine 前缀无关)

若要在不运行 Windows 程序或其他 GUI 工具的情况下创建默认前缀，可以使用:

    $ env WINEPREFIX=~/.customprefix wineboot -u

### WINEARCH

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

你可以通过修改`WINEPREFIX`来创建一个分开的`win32`和`win64`环境：

    $ 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

### 图形驱动程序

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

当 Wine 在你的终端窗口中报告以下内容时，很可能你的驱动程序不合适或没有正确配置：

    Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly

注意： 安装正确的库之后你可能需要重新启动 X。

### 声音

默认情况下，运行Wine应用程序时可能会出现声音问题。确保在winecfg中只选择一个声音设备。

为你要使用的音频驱动器安装正确的软件包:

- 对于 ALSA 安装 lib32-alsa-lib 和 lib32-alsa-plugins
- 对于 PulseAudio 安装 lib32-libpulse
- 对于 PipeWire 同时安装 pipewire-pulse和 lib32-libpulse 或者 pipewire-alsa 和 lib32-alsa-lib + lib32-alsa-plugins
- 对于 OSS 安装 lib32-alsa-oss

额外的软件包：

使用高级声音系统的游戏（例如 TESV: Skyrim）可能还需要安装 lib32-openal。 如果 winecfg 仍然无法检测到音频驱动（Selected driver: (none)），请通过注册表对其进行配置。例如，在64位的wine-1.9.7系统上，麦克风无法在 32 位的 Windows 应用程序中工作，这就提供了对声音硬件（声音播放和麦克风）的完全访问：打开 regedit，寻找路径 HKEY_CURRENT_USER → Software → Wine → Drivers，添加一个名为 Audio 的字符串，给它一个值 alsa。另外，重新创建前缀可能有帮助。

#### MIDI支持

在90年代，MIDI是相当流行的游戏音乐系统。尝试游玩老游戏时，音乐可能无法直接播放。 Wine 对 MIDI 有良好的支持，但首先需要让它在系统上工作，如 MIDI 中所解释的。最后，需要确保 Wine 使用了正确的 MIDI 输出。

### 其它依赖

部分应用软件可能需要额外的软件包 [1]:

- 加密： lib32-gnutls
- 32位程式的媒体后端： lib32-gst-plugins-base, lib32-gst-plugins-good, lib32-gst-plugins-badAUR and lib32-gst-plugins-uglyAUR
- 为 NTLM 认证：samba

### 字体

如果 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 字体。 See MS Fonts. If this does not help, try running `winetricks corefonts` first, then `winetricks allfonts` as a last resort.

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

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

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

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

另见Font configuration#Applications without fontconfig support。

#### 启用平滑字体

提高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

详见[2]。

### 桌面启动器

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

- 桌面快捷方式位于 `~/Desktop` 下。
- 开始菜单图标位于 `~/.local/share/applications/wine/Programs/` 下。

Note: Wine 不支持为所有用户安装 Winidows 应用程序，所以 Wine 不会把 .desktop 文件放到 `/usr/share/applications` 下。详见 WineHQ bug 11112
Tip: 如果安装软件时桌面启动器并没有创建或已经丢失，`wine winemenubuilder` 也许能帮得上忙。

#### 为Wine utilities创建菜单项

默认情况下，Wine 的安装不会为 Wine 附带的软件创建桌面菜单/图标(例如“ winecfg”、“ winebroserer”等)。这可以通过安装 wine-installerAUR或 wine-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*

Sometimes you should also remove `wine-*.menu` files from `/.config/menus/` to completely remove items from wine submenu in kde.

### 主题

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

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

测试版Wine用户也许想要尝试启用Enable GTK3 Theming在winecfg的测试部分作为一个主题匹配正在使用的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

要用 GUI，需要安装 zenity。

### 性能

#### CSMT

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

更多：

- Phoronix 论坛讨论

#### 强制使用OpenGL模式运行游戏

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

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

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

#### VKD3D-Proton

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

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

    $ WINEPREFIX=your-prefix setup_vkd3d_proton install

Warning: 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

Warning: DXVK 覆盖了 DirectX 10 和 11 的许多dll，这可能被认为是在线多人游戏中的作弊行为，并可能使你的账户被封。使用时风险自负!

#### Gallium Nine

这里是Gallium Direct3D state tracker，协同开源的基于 gallium 的驱动（可用于绝大部分的 超威 与 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}}、`txt`、`js` 在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 创建文件关联

Note: 必须对每个 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_cat`。winefps.sh 为它的帮助脚本。

### 在单独的用户帐户下运行 Wine

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

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

    # useradd -m -s /bin/bash wineuser

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

Note: 以下方法仅在为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

## 参见

- Wine 主页
- Wine 维基
- Wine 程序数据库 (AppDB) - 关于运行一些特定的 Windows 程式的讯息 (已知问题、指北、等级、其它关于程式的讯息)
- Wine 论坛 - 一个问问题的好地方在你看了 FAQ 和 AppDB 后。
- Gentoo:Wine
- Darling - 一个模拟 MacOS 程式的小项目
- WineASIO - WineASIO 项目的 Github Page，有更多的讯息。

Categories:

- Emulation (简体中文)
- Gaming (简体中文)