本文介紹如何使用Bottles在Linux系統的電腦執行和安裝Windows exe。
例如跑Photoshop CC、遊戲GTA IV、通訊軟體Line、微信、QQ、Microsoft Office 2016等Windows才有的程式。
0. Wine是什麼
如果要在Linux系統跑Windows程式,只要能拿到exe,就有機率能透過"Wine"這個轉譯技術執行。

Wine(WineHQ,紅酒)是從上個世紀發展至今的exe轉譯技術,它將Windows exe的指令即時轉譯成Linux的系統呼叫,連3D繪圖指令都一併轉譯。因此Wine不是虛擬機,而是轉譯器,性能損失很小。
諸如Microsoft Office、Adobe Photoshop、Adobe AutoCAD、俠盜獵車手V等程式,都能用Wine在Linux執行(SteamOS也有採用Wine的技術),甚至有人回報說Linux跑遊戲比Windows還順暢。
WineDB和ProtonDB網站有收錄Wine能執行的Windows程式,還有安裝前的小撇步,建議安裝程式前先去看看。
在Bottles之前已經有"PlayOnLinux"和"Lutris"這二個Wine的前端管理程式出現,而Bottles是最近幾年才出現的。
作者宣稱應選擇Bottles的理由如下:
- PlayOnLinux和Lutris所作的僅是用指令稿協助安裝Windows程式。
- Bottles能一鍵切換Wine版本(Wine有官方原版、Valve版、中國Deepin版…等等針對不同環境特化的分支),而不需頻繁打指令。
- 提供預先設定好的範本,以達成開箱即用的體驗,例如"GAMING"的環境設定好後,應可直接執行遊戲exe。
- 可做快照進行備份完整Wine環境,程式更新後無法運作就回退至上一版。
- 提供隔離檔案系統的功能。用Wine跑Windows程式,病毒也是照樣能傷害Linux系統。Bottles預設會利用Flatpak技術,限制Wine的程式只能存取自身的目錄,除非使用者自行開放其他目錄的權限,否則Wine無法存取。
1. 如何安裝Bottles
作者只推薦用Flatpak技術安裝Bottles。
Flatpak是跨發行版的套件管理員,大部分的Linux發行版都支援。請至Flatpak官網查看對應發行版的安裝指令。
- 例如Ubuntu,開啟終端機輸入以下指令:
|
|
- 然後加入Flatpak儲存庫,重開機。
|
|
- 在那之後,安裝Bottles,輸入y確認,大約需要1GB空間 (Flatpak把應用程式的依賴套件都包在一塊因此很肥)
|
|
安裝後在應用程式列表找到Bottles。
開啟後等待Bottles初始化完成。
2. 建立「酒瓶」並執行exe
Bottles的功用就是用來建立Wine執行環境,就像把Wine裝入酒瓶(Bottle)一樣。
每個酒瓶應當只放一個Windows exe。如下圖,遊戲和一般軟體分別位於不同的酒瓶,如果某個酒瓶環境被弄亂,直接刪除即可,其他酒瓶不受影響。
讓我們實地演練:執行遊戲《Undertale》,Wine官方資料庫顯示此程式不用額外裝任何東西就能跑!
點選Bottles左上角的+號,點選Create Bottle。輸入此酒瓶的名稱,下面
Environment
選取Gaming,這樣會自動裝好大多數程式需要的依賴套件。稍待之後進入該酒瓶主畫面。點選右上角
Browse Files...
開啟Bottles建立的虛擬C槽。(這麼做的原因下面會說明)你的檔案管理器應該會自動開啟,這個就是Bottles建立的假C槽了。將《Undertale》的遊戲exe放到此目錄。
(選擇性) 點選
Run Executable...
旁邊的小齒輪,勾選Run in Terminal
,這樣有助於除錯。接著按
Run Executable...
,選取Undertale的遊戲exe (Bottles的假C槽位於~/.var/app/com.usebottles.bottles/data/bottles/bottles/<酒瓶名稱>/drive_c
)程式執行後會一併開啟終端機,可用於監測程式是否有異常狀況。
確認程式能正常執行後,你可以點選
Add Shortcuts...
建立exe捷徑,這樣之後就可以直接開啟exe程式。執行以下指令,重開Bottles,再點選
Add Desktop Entry
即可將程式加到桌面捷徑。
|
|
3. 自訂酒瓶環境
如果程式需要額外套件才能運作,就得細調酒瓶的環境,幸而Bottles將過去要用指令調整的東西都圖形化了。
在酒瓶的主選單有以下選項,個別介紹。
3.1. Settings
Runner
選項用於切換Wine版本,預設為Valve開發的soda
。如果程式執行發生問題,可以切換成原版sys-wine
試試看。
還有圖形設定,是否要使用DXVK
(將DirectX指令轉成Vulkan)之類的設定。這邊通常不用動。
滑到最下面,Compatibiity
處可設定要模擬的Windows版本和系統語言。通常用Windows 10就夠了。
Snapshots
則是設定是否自動製作Wine環境的快照,防止程式一更新就無法運作。
3.2. Dependencies
此處是用於安裝依賴套件的,類似Winetricks的效果。
例如很多中文程式需要安裝cjkfonts
字體否則會亂碼;有些程式要安裝vcredist
(Visual C++ Redistributable) 才能運作。
程式具體需要哪些套件,請至WineDB參看該程式的安裝說明。
3.3. Snapshots
應用程式可能因為更新後便無法啟動,適時按右上角+號新增快照,輸入註解後即可新增。
點選快照後即會自動將酒瓶的Wine環境回退至該版本。
酒瓶的主畫面右上角尚提供完整備份Full Backup
的功能,可將酒瓶環境匯出為壓縮檔。這樣重裝Bottles主程式後便能快速復原。
3.4. Task Manager
模擬Windows的工作管理員。
如果此處無法中止程式,也可以點選酒瓶主畫面右上角的Force Stop All Processes
強制中止所有處理程序。
3.5. Wine舊版工具
酒瓶主畫面最下面的是Wine本身的工具,包含登錄檔、命令提示字元、控制台等。
4. Bottles除錯
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所在目錄的權限:
|
|
例如要存取第二個硬碟上的Pictures目錄:
|
|
再重啟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/
目錄。
5. 進階用法:Winetricks搭配Bottles使用
在系統的Wine跟Bottles裡的Wine版本一致的情況下,才能執行此操作。
有些Windows依賴套件並無列在Bottles的Dependencies
選單,請向作者回報。
因為Bottles只是用於建立Wine環境而已,你還是能用系統的wine的指令執行裡面的exe,或是用Winetricks來安裝套件。
例如你嫌Bottles的依賴套件裝太慢,就直接用Winetricks裝:
|
|