本文介紹如何使用Bottles在Linux系統的電腦執行和安裝Windows exe。
例如跑WinRAR、 Photoshop CC、 遊戲GTA IV、 通訊軟體Line、微信、QQ、 Microsoft Office 365等Windows才有的程式。
0. Wine是什麼#
什麼是Wine?參閱 Wine指令使用教學
Wine本身得打指令才能啟動,這個時候有個Wine的前端管理程式會比較方便。
這篇文章我採用的是義大利設計師Mirko Brombin開發的「Bottles」。
在Bottles之前已經有PlayOnLinux和 Lutris的Wine前端管理程式出現, Linux版Steam客戶端亦整合了Wine技術。
Bottles是最近幾年才出現的。
Bottles作者宣稱應選擇本程式的理由如下:
- PlayOnLinux和Lutris所作的僅是用指令稿協助安裝Windows程式。
- Bottles能一鍵切換Wine版本(Wine有官方原版、Valve版、中國Deepin版…等等針對不同環境特化的分支),不需頻繁打指令。
- 一個exe程式一個酒瓶,Bottles可以輕鬆將WINEPREFIX的容器隔離,不讓環境互相污染。
- 提供預先設定好的範本,以達成開箱即用的體驗,例如「GAMING」的環境設定好後,應可直接執行遊戲exe。
- 可做快照進行備份完整Wine環境,程式更新後無法運作就回退至上一版。
- 提供隔離檔案系統的功能。用Wine跑Windows程式,病毒也是照樣能傷害Linux系統。Bottles預設會利用Flatpak技術,限制Wine的程式只能存取自身的目錄,除非使用者自行開放其他目錄的權限,否則Wine無法存取。
1. 如何安裝Bottles#
作者推薦用Flatpak技術安裝Bottles。
Flatpak是跨發行版的套件管理員,大部分的Linux發行版都支援。請參閱 Flatpak安裝方式
- 例如Ubuntu,開啟終端機輸入以下指令:
sudo apt install flatpak
- 然後加入Flatpak套件庫,重開機。
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
- 在那之後,安裝Bottles,輸入y確認,大約需要1GB空間 (Flatpak把應用程式的依賴套件都包在一塊因此很肥)
flatpak install flathub com.usebottles.bottles
安裝後在應用程式列表找到Bottles。
開啟後等待Bottles初始化完成。
2. 建立「酒瓶」並執行exe#
Bottles的功用就是用來建立Wine執行環境,就像把Wine裝入酒瓶(Bottle)一樣,每個酒瓶都是一個Wine容器。
以Wine的術語來說,每個Bottles的酒瓶就是一個WINEPREFIX。
按照Bottles的設計,每個酒瓶應當只放一個Windows exe。如下圖,遊戲和一般軟體分別位於不同的酒瓶,如果某個酒瓶環境被弄亂,直接刪除即可,其他酒瓶不受影響。
讓我們實地演練:執行遊戲《Undertale》,Wine官方資料庫顯示此程式不用額外裝任何東西就能跑!
點選Bottles左上角的+號,點選新增酒瓶(Create Bottle)。輸入此酒瓶的名稱,下面環境(Environment)選取Gaming,這樣會自動裝好大多數程式需要的依賴套件。
(選擇性步驟) 點選執行檔案(Run Executable…)旁邊的小齒輪,勾選在終端機執行(Run in Terminal),這樣有助於除錯。
接著按執行檔案(Run Executable…),選取Undertale的遊戲exe(若看不到exe請點一下檔案選取對話框的篩選器,將其打叉)
程式執行後會一併開啟終端機,可用於監測程式是否有異常狀況。
確認程式能正常執行後,你可以點選
Add Shortcuts...
建立exe捷徑,這樣之後就可以直接從應用程式列表開啟exe程式。執行以下指令,重開Bottles,再點選
Add Desktop Entry
即可將程式加到桌面捷徑。
flatpak override com.usebottles.bottles --user --filesystem=xdg-data/applications
3. Bottles的資料位置#
Bottles模擬的假C槽位於~/.var/app/com.usebottles.bottles/data/bottles/bottles/<酒瓶名稱>/drive_c
進入該酒瓶主畫面。點選右上角Browse Files...
即可開啟Bottles建立的虛擬C槽。
你的檔案管理器應該會自動開啟,這個就是Bottles建立的假C槽了。
4. 自訂酒瓶環境#
如果程式需要額外套件才能運作,就得細調酒瓶的環境,幸而Bottles將過去要用指令調整的東西都圖形化了。
在酒瓶的主選單有以下選項,個別介紹。
Settings 設定值#
Runner
選項用於切換Wine版本,預設為Valve開發的soda
。如果程式執行發生問題,可以切換成原版sys-wine
試試看。
還有圖形設定,是否要使用DXVK
(將DirectX指令轉成Vulkan)之類的設定。這邊通常不用動。
滑到最下面,Compatibiity
處可設定要模擬的Windows版本和系統語言。通常用Windows 10就夠了。
Snapshots
則是設定是否自動製作Wine環境的快照,防止程式一更新就無法運作。
Graphics
裡面的Screen Scaling設定,可縮放Windows程式的字體大小(DPI)。
Dependencies 相依項目#
此處是用於安裝依賴套件的,類似Winetricks的效果。
例如很多中文程式需要安裝cjkfonts
字體否則會亂碼;有些程式要安裝vcredist
(Visual C++ Redistributable) 才能運作。
程式具體需要哪些套件,請至WineDB參看該程式的安裝說明。
有些Windows依賴套件並無列在Bottles的Dependencies
選單,若有需求請向作者
回報。
Snapshots 快照#
應用程式可能因為更新後便無法啟動,適時按右上角+號新增快照,輸入註解後即可新增。
點選快照後即會自動將酒瓶的Wine環境回退至該版本。
酒瓶的主畫面右上角尚提供完整備份Full Backup
的功能,可將酒瓶環境匯出為壓縮檔。這樣重裝Bottles主程式後便能快速復原。
Task Manager 工作管理員#
模擬Windows的工作管理員。
如果此處無法中止程式,也可以點選酒瓶主畫面右上角的Force Stop All Processes
強制中止所有處理程序。
Wine舊版工具#
酒瓶主畫面最下面的是Wine本身的工具,包含登錄檔(Registry)、命令提示字元(cmd)、控制台(Control Panel)、設定畫面(wiencfg)等。
5. 進階用法:使用Bottles-cli命令行工具#
參考 Bottles-cli文章了解如何使用指令操作Bottles容器,並將Bottles的Wine整合到你的系統。
6. 解決Bottles相關問題#
如何用指令執行Bottles的酒瓶
如下使用flatpak run,執行「Undertale」酒瓶裡面的Undertale.exe
/usr/bin/flatpak run --command=bottles-cli com.usebottles.bottles run -p Undertale -b Undertale -- %u
exe執行後沒有反應
exe執行後無反應,請一律將該exe和相關程式檔案放到Bottles的C槽 (~/.var/app/com.usebottles.bottles/data/bottles/bottles/<酒瓶名稱>/drive_c
)
並勾選"Run in Terminal"後執行,再看終端機輸出的訊息判讀錯誤來源。
exe的檔案管理員看不到特定目錄的檔案
假設你有二個硬碟,而Bottles執行exe時看不到第二個硬碟的檔案,這是Flatpak的檔案系統隔離所致。
跟上面建議執行程式的時候把exe直接放到Bottles的假C槽的理由一樣。因為從其他硬碟讀取exe,很容易發生無法讀取dll等各種奇怪狀況。
如果你堅持要從另一個硬碟執行exe,那請開啟終端機,輸入以下指令開放存取exe所在目錄的權限:
flatpak override --user --filesystem="目錄" com.usebottles.bottles
例如要存取第二個硬碟上的Pictures目錄:
flatpak override --user --filesystem="/run/media/user/HDD/Pictures" com.usebottles.bottles
再重啟Bottles。
module:import_dll Loading library xxx.dll (which is needed by…
同上,使用指令開放該目錄的讀取權限
Unhandled exception: page fault on read…
- 關掉DXVK
- 嘗試切換Wine版本
- 檢查該程式是否有依賴套件未安裝
- 試試該程式的32位元版
- 將該程式放到Bottles的C槽再執行
程式文字變成方塊
請安裝cjkfonts
字體。
或手動下載Windows字型,將檔案放到Bottles假C槽的/windows/Fonts/
目錄。
你還可以設定 fontconfig調整字體優先級別。
Wayland閃退、卡頓
Wine的應用程式可能不支援Wayland,它會用XWayland下去跑,導致效能降低。
如果遇到應用程式黑螢幕,嘗試關閉酒瓶設定的「使用獨立顯示卡」選項。
或者回退到X11工作階段。