跳至內容
出自 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 目錄,之後執行 $WINEARCH=win32 winecfg 來創建一個32位的 Wine 環境。不明確配置 WINEARCH 會默認創建64位環境。

我們可以結合 WINEPREFIX 來分別創建32位和64位環境

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

WINEARCH 也對一些其他程序生效,例如 #Winetricks(以 Steam 為例)

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

確認已經創建的 Wine Prefix 是哪種環境需要檢查其註冊表內容。下面的命令通過查找 ~/.wine 目錄下的註冊表文件內容,檢查其包含 #arch-win32 還是 #arch=win64 來確認其架構類型。

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

字體

如果 Wine 應用程式的字體存在丟失、無法正常顯示等問題,您可以嘗試用軟連結的方式,將系統字體文件映射到對應 #WINEPREFIX 中:

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

Wine 使用 FreeType 渲染字體,因此在一些情況下,您可以嘗試修改 FreeType 的一些配置。例如您可以嘗試設置如下的環境變量修改 FreeType 的解析器版本:

FREETYPE_PROPERTIES="truetype:interpreter-version=35"

此外,您也可以嘗試在 Wine Prefix 中安裝微軟的 TrueType 字體,詳見微軟字體。也可以考慮使用 #Winetricks ,執行 winetricks corefonts ,如果仍存在問題,可以嘗試執行 winetricks allfonts

您還可以通過修改 Wine 註冊表的方式添加字體別名,以便 Wine 使用系統字體。

以中文用戶常用字體 Noto Sans CJK SC 為例,將以下文本保存為 chs.reg

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"MS Shell Dlg"="Noto Sans CJK SC"
"MS Shell Dlg 2"="Noto Sans CJK SC"
"SimSun"="Noto Sans CJK SC"
"Microsoft YaHei"="Noto Sans CJK SC"

通過執行 wine regedit ./chs.reg即可導入以上條目。

執行相關操作後,需要關閉所有 Wine 服務並運行 winecfg 查看效果。

如果字體看起來模糊不清,可以嘗試執行下面的命令來修改 Wine 註冊表配置:

$ wine reg add 'HKEY_CURRENT_USER\Software\Wine\X11 Driver' /v ClientSideWithRender /t REG_SZ /d N

對於高解析度屏幕,可以在 winecfg 中嘗試調整 dpi 值。

您還可以參考字體配置#不支持_Fontconfig_的程序及相關頁面嘗試調整文字渲染問題。

啟用字體平滑

啟用 ClearType 字體平滑可以提高 Wine 中的字體渲染效果。 若要啟用「次像素平滑(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 的工具創建桌面項

默認情況下,Wine 附帶的軟體不會創建桌面項(例如 winecfg winebrowser 等)。這可以通過安裝 wine-installerAURwine-installer-gitAUR (後者不依賴 #Winetricks )來解決,您也可以根據下面的說明手動創建相關條目。

下面的文件您可以保存在 ~/.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 創建的 MIME 綁定,可以執行以下命令(摘自 Wine FAQ,請仔細確認後執行) :

$ 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 子菜單的圖標。

主題

類似 Windows XP 外觀的主題可以在 這裡下載。可以參考 Wine 維基頁面進行安裝。安裝完成後,可以使用 winecfg 選擇對應的主題。

注意:上面提到的主題只能安裝在32位,系統兼容性配置為 Windows XP 的 #WINEPREFIX 中。要將其安裝在64位環境上,您需要在的32位 Wine Prefix 環境中安裝該主題,之後從32位 Wine Prefix 環境下的 drive_c/Windows/Resources/Themes 目錄內,將 Zune 文件夾和 Zune.theme 文件複製到您使用的環境中。

wine-staging 用戶可以嘗試在 winecfg 中配置啟用「Enable GTK3 Theming」令相關應用適配當前的 GTK 主題。

印表機

為了在32位的 #WINEPREFIX 中(例如微軟 Word)使用您已經安裝的印表機(包括本地印表機和網絡印表機),您需要安裝 lib32-libcups ,並在之後重啟所有 Wine 服務及您的應用程式。

網絡

一些32位的程序可能需要安裝 lib32-gnutls 來創建 TLS 或 HTTPS 連接。

對於 ICMP(ping 命令),需要為 Wine 配置相關權限(Capabilities),詳見 WineHQ FAQ

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

如果執行上述命令後,您遇到了一些問題(例如程序異常、權限問題等),您可以通過下面的命令取消相關權限:

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

使用

警告:不要以 root 身份運行 Wine 或安裝 Windows 應用程式!詳見 Wine FAQ

Wine 用戶手冊可以為您提供 Wine 使用說明。

Wine 程序資料庫(AppDB)可以提供部分特定 Windows 程序在 Wine 中運行的參考信息。

Wayland

警告:Wine 的 Wayland 驅動仍處於實驗階段

目前 Wine 在 Wayland 環境下通過 XWayland 進行渲染,這可以為大部分用戶提供良好的體驗。在 9.0rc1 版本後,Wine 在原生 Wayland 支持上取得了較大進展,已經可以在一些情境下使用。

如果您希望嘗試 Wine 的原生 Wayland 支持,可以嘗試下面的內容:

  • Wine 9.22 後的版本執行下面的命令修改註冊表配置:
$ wine reg add 'HKEY_CURRENT_USER\Software\Wine\Drivers' /v Graphics /t REG_SZ /d 'x11,wayland'
  • 通過取消設置 DISPLAY 環境變量,來強制使用 Wayland 驅動
$ env -u DISPLAY wine example.exe

如果取消設置 DISPLAY 導致 Wine 運行出現問題,請檢查您安裝的 Wine 版本是否在構建時添加了 Wayland 驅動支持。

停止運行 Wine 程序

在執行 wine 的終端按下 Ctrl+Z 或在 wineconsole 的終端中按下 Ctrl+C,只是將進程轉入了後台運行。

假設當前進程如下:

$ ps -xo pid,cmd
    PID CMD
    297 -bash
    933 /usr/bin/wineserver
    939 C:\windows\system32\services.exe
    942 C:\windows\system32\winedevice.exe
    950 C:\windows\system32\explorer.exe /desktop
    954 C:\windows\system32\winedevice.exe
    965 C:\windows\system32\plugplay.exe
    977 C:\windows\system32\svchost.exe -k LocalServiceNetworkRestricted
    984 C:\windows\system32\rpcss.exe
    997 mbserver.exe
   1017 start.exe /exec
   1019 C:\windows\system32\conhost.exe --unix --width 169 --height 40 --server 0x10
   1021 Z:\home\wineuser\mbserver.exe
   1030 ps -xo pid,cmd

所有正在運行中的 winewineconsole 進程都可以被 wineserver -k 命令終止。例如:

$ wineserver -k 15

這個命令可以與 #WINEPREFIX 關聯,因此當您使用自己配置的 WINEPREFIX 時,可以執行:

$ WINEPREFIX=~/wine/my-prefix wineserver -k

一個與上面操作等價的命令是直接將相關進程終止掉:

$ kill 997 1021

提示與技巧

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

參見