本文是手動設定Box64+Wine環境的教學,如果你想要一鍵安裝,請參閱 Android轉譯玩Windows exe遊戲的方法一覽
如果想在Android手機跑Windows exe程式,在Termux中用Box86/Box64轉譯x86架構的Wine,再用來跑Windows程式會是個好方法。
我們知道Linux平台有Wine能跑Windows遊戲,且幾乎沒有效能損失。但是Wine只能轉譯x86/x64架構的Windows程式,在以ARM架構為主的Android裝置無法使用。
所以我們需要一個轉譯器,那就是Box86和Box64。Box86用於轉譯32位元的x86指令集為ARM;Box64則是將64位元的x64指令集轉為ARM64,二者可以共存。
相較於閉源的Exagear,Box86是開源免費的技術,並且 Github每週都有更新,作者正在積極完善各類功能。
1. 安裝Termux Proot發行版#
首先,安裝 Termux
再安裝 Proot Debian。
再安裝 Termux X11存取桌面環境。
2. 編譯Box86和Box64#
- 以一般帳戶登入Proot Debian
proot-distro login debian --user user shared-tmp
- 啟用armhf套件庫支援
dpkg --add-architecture armhf
- 新增 ryanfortner的套件庫,安裝Box86
sudo apt install gpg
sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
wget -qO- https://ryanfortner.github.io/box86-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box86-debs-archive-keyring.gpg
sudo apt update
sudo apt install box86-android
- 新增 ryanfortner的套件庫,安裝Box64
sudo wget https://ryanfortner.github.io/box64-debs/box64.list -O /etc/apt/sources.list.d/box64.list
wget -qO- https://ryanfortner.github.io/box64-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg
sudo apt update
sudo apt install box64-android
3. 安裝Wine和Wine64#
Wine用於執行32位元(x86)的exe;Wine64則是執行64位元exe。
ARM環境下,i386架構的Wine用套件管理員是裝不起來的。此處是直接下載Wine的執行檔,並用符號連結的模式安裝。
- 安裝Wine的依賴套件
sudo apt install nano cabextract libfreetype6 libfreetype6:armhf libfontconfig libfontconfig:armhf libxext6 libxext6:armhf libxinerama-dev libxinerama-dev:armhf libxxf86vm1 libxxf86vm1:armhf libxrender1 libxrender1:armhf libxcomposite1 libxcomposite1:armhf libxrandr2 libxrandr2:armhf libxi6 libxi6:armhf libxcursor1 libxcursor1:armhf libvulkan-dev libvulkan-dev:armhf zenity
- 從 Kron4ek’s Wine-Builds下載Wine和Wine64。目前最新版是Wine 9.7。
cd ~/
wget https://github.com/Kron4ek/Wine-Builds/releases/download/9.7/wine-9.7-amd64.tar.xz
wget https://github.com/Kron4ek/Wine-Builds/releases/download/9.7/wine-9.7-x86.tar.xz
- 解壓縮檔案,刪除多餘檔案
tar xvf wine-9.7-amd64.tar.xz
tar xvf wine-9.7-x86.tar.xz
rm wine-9.7-amd64.tar.xz wine-9.7-x86.tar.xz
mv wine-9.7-amd64 wine64
mv wine-9.7-x86 wine
- 用以下指令建立建立符號連結,將
/usr/local/bin/wine
指向$HOME/wine/bin/wine
。
echo '#!/bin/bash
export WINEPREFIX=~/.wine32
box86 '"$HOME/wine/bin/wine "'"$@"' > /usr/local/bin/wine
chmod +x /usr/local/bin/wine
echo '#!/bin/bash
export WINEPREFIX=~/.wine64
box64 '"$HOME/wine64/bin/wine64 "'"$@"' > /usr/local/bin/wine64
chmod +x /usr/local/bin/wine64
- 用以下指令將Box86和Box64的PATH加入到
~/.bashrc
echo 'export DISPLAY=:0
export BOX86_PATH=~/wine/bin/
export BOX86_LD_LIBRARY_PATH=~/wine/lib/wine/i386-unix/:/lib/i386-linux-gnu/:/lib/aarch64-linux-gnu/:/lib/arm-linux-gnueabihf/:/usr/lib/aarch64-linux-gnu/:/usr/lib/arm-linux-gnueabihf/:/usr/lib/i386-linux-gnu/
export BOX64_PATH=~/wine64/bin/
export BOX64_LD_LIBRARY_PATH=~/wine64/lib/i386-unix/:~/wine64/lib/wine/x86_64-unix/:/lib/i386-linux-gnu/:/lib/x86_64-linux-gnu:/lib/aarch64-linux-gnu/:/lib/arm-linux-gnueabihf/:/usr/lib/aarch64-linux-gnu/:/usr/lib/arm-linux-gnueabihf/:/usr/lib/i386-linux-gnu/:/usr/lib/x86_64-linux-gnu' >> ~/.bashrc
source ~/.bashrc
- 用以下指令安裝Winetricks
cd ~/
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks
mv winetricks /usr/local/bin/
echo '#!/bin/bash
export BOX86_NOBANNER=1 WINE=wine WINEPREFIX=~/.wine32 WINESERVER=~/wine/bin/wineserver
wine '"/usr/local/bin/winetricks "'"$@"' > /usr/local/bin/winetricks32
chmod +x /usr/local/bin/winetricks32
echo '#!/bin/bash
export BOX64_NOBANNER=1 WINE=wine64 WINEPREFIX=~/.wine64 WINESERVER=~/wine64/bin/wineserver
wine64 '"/usr/local/bin/winetricks "'"$@"' > /usr/local/bin/winetricks64
chmod +x /usr/local/bin/winetricks64
- 用以下指令,在Linux桌面建立Wine檔案總管的捷徑,這樣就可以直接點選exe啟動:
cd ~/Desktop
echo '[Desktop Entry]
Name=Wine32 Explorer
Exec=bash -c "wine explorer"
Icon=wine
Type=Application' > ~/Desktop/Wine32_Explorer.desktop
chmod +x ~/Desktop/Wine32_Explorer.desktop
cp ~/Desktop/Wine32_Explorer.desktop /usr/share/applications/
cd ~/Desktop
echo '[Desktop Entry]
Name=Wine64 Explorer
Exec=bash -c "wine64 explorer"
Icon=wine
Type=Application' > ~/Desktop/Wine64_Explorer.desktop
chmod +x ~/Desktop/Wine64_Explorer.desktop
cp ~/Desktop/Wine64_Explorer.desktop /usr/share/applications/
4. 安裝DXVK#
DXVK為將DirectX轉譯成Vulkan的工具,可以提昇部份Windows程式的效能。
- 安裝依賴套件
sudo apt install mesa-vulkan-drivers mesa-vulkan-drivers:armhf libvulkan1 libvulkan1:armhf
- 從 Github下載最新版DXVK,目前是2.3.1
wget https://github.com/doitsujin/dxvk/releases/download/v2.4.1/dxvk-2.4.1.tar.gz
- 解壓縮,將dxvk的檔案移動到Wine的目錄下
tar -xvf dxvk-2.4.1.tar.gz
cd dxvk-2.4.1
cp x32/* ~/.wine32/drive_c/windows/system32
cp x32/* ~/.wine64/drive_c/windows/system32
cp x64/* ~/.wine64/drive_c/windows/syswow64
- 開啟Wine設定,到函式庫頁面,設定DLL覆寫,將d3d11、d3d10core、dxgi、d3d9調整為「內建先於原生」。
export WINEPREFIX=~/.wine
cp x64/*.dll $WINEPREFIX/drive_c/windows/system32
cp x32/*.dll $WINEPREFIX/drive_c/windows/syswow64
5. Box86+Wine的使用方式#
您可以開啟Proot的瀏覽器下載Windows exe,或者複製手機的檔案到Proot Linux裡面。
Linux開啟檔案管理員 → 檔案系統的/sdcard
目錄便是手機內部儲存空間的目錄。
注意有些程式可能需要 GPU硬體加速才能正常開啟。
執行程式前可以到
WineDB看該程式是否需要裝其他套件才能跑,並透過winetricks
指令安裝額外的exe。
box86 wine notepad++.exe
等待幾秒後Notepad++的視窗便會開啟。
以此類推,如果是64位元版程式:
box64 wine64 notepad++.exe
- 你可以在執行Wine64指令前先宣告
WINEPREFIX
,這樣會新建一個目錄,將不同位元的執行環境區隔開來:
export WINEPREFIX=~/.wine64
export WINEARCH=win64
box64 wine64 notepad++.exe