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 就不需要再下載這些文件了。

可選依賴項[編輯 | 編輯原始碼]

提示:常見的依賴項,尤其是與遊戲相關的依賴項,列於the lutris documentation.

Wine 有許多可選依賴項,基本應用程序可能不需要這些依賴項,但要提供聲音、3D 圖形、視頻播放等功能,則應安裝這些依賴項。

請注意,許多 Windows 應用程序都是 32 位的,因此需要 32 位版本的相應庫,其中有些庫僅在AUR上提供。標準(64 位)庫可用於 64 位應用程序,如果運行的 Wine 版本採用新的 WoW64 模式(參見#安裝中的說明),則可用於任何應用程序。使用 file(1) 命令可以檢查 Windows 可執行文件是否為 64 位。

前綴依賴項(In-prefix dependencies)[編輯 | 編輯原始碼]

除了系統依賴項之外,許多程序還需要將其他字體和dll安裝到Wine前綴 My_application_says_some_DLL_or_font_is_missing._What_do_I_do?。為了滿足這些依賴關係,你可以使用 Wineticks,一個原始的 「包管理器」,其中每個 「verb」 可執行安裝,或調整配置。有兩種使用wineticks的方法:

  • CLI: 運行 winetricks verb_name.
  • GUI: 安裝 zenitykdialog 再運行 winetricks.

由於依賴關係之間的衝突,您可能無法創建可以運行所有內容的 「完美」 Windows安裝 [2] [3]。相反,您應該將前綴視為一次性的 (除非它們包含重要的配置或數據),並為具有不同依賴關係的程序使用單獨的前綴。您可以使用 # WINEPREFIX 環境變量來控制動詞作用於哪個前綴。

確定程序需求所需的動詞需要反覆試驗。請參閱Bottles dependency page,了解一些更常見的依賴關係,以及以下針對特定程序的資源:

  • Wine Application Database. 官方資源,但年代久遠,維護可能不如其他資源。
  • Lutris website. 如果您正在嘗試運行恰好在此站點上顯示的遊戲,則可以單擊下拉菜單,然後單擊 「查看安裝腳本」 以查看Lutris使用了哪些wineticks動詞。
  • 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
  • Bottles — Wine 的圖形化前綴和運行管理器,基於 GTK。
https://usebottles.com/ || bottlesAUR
  • 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 可能會出錯。 [4]

您可以使用 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來創建一個分開的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

圖形驅動程序[編輯 | 編輯原始碼]

你需要安裝 32 位版本的圖形驅動程序。請安裝Xorg#驅動安裝OpenGL (multilib) 一欄列出的軟件包。

當 Wine 在你的終端窗口中報告以下內容時,很可能你的驅動程序不合適或沒有正確配置:

Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly
注意: 安裝正確的庫之後你可能需要重新啟動 X。

聲音[編輯 | 編輯原始碼]

默認情況下,運行Wine應用程序時可能會出現聲音問題。確保在winecfg中只選擇一個聲音設備。

為你要使用的音頻驅動器安裝正確的軟件包:

額外的軟件包:

使用高級聲音系統的遊戲(例如 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 輸出。

其他依賴項[編輯 | 編輯原始碼]

某些應用程序可能需要額外的軟件包 [5]:

字體[編輯 | 編輯原始碼]

如果 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

詳見[6]

桌面啟動器[編輯 | 編輯原始碼]

當使用 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

要用 GUI,需要安裝 zenity

性能[編輯 | 編輯原始碼]

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

參見[編輯 | 編輯原始碼]