Wine安裝微信保姆教程

當你讀到這篇文章的時候,我想你已經摺騰過 wine 微信一段時間了。從 N 年前使用 Linux 工作生活以來,騰訊公司的相關產品一直缺乏對 Linux 的友好支持。等到大家不怎麼用 QQ 的時候,它開始支持了。之前用官方和 UOS 合作的 deb 包微信,簡單聊天還是可以的,功能過於簡單,捉襟見肘,幾年過去了,也沒見更新。

在當前這種狀況,如果你需要在 Linux 下使用新版微信,幾乎只有 wine 一條路,虛擬機的方式太笨重了。

本文介紹 2 種方式 wine 安裝微信,一種適合新手操作較簡單的; 一種複雜一些,解決特定桌面環境下的一些問題。坦白講,爲了測試這 2 種方式,解決一些相關問題,非常費時耗力,部分內容,應該是中文互聯網世界第一次出現(反正我是沒有搜到有人記錄),考慮到用戶羣體龐大,只能用愛心負重前行,希望終有一天,人們不需要這麼倒騰(這的確有點浪費時間)。

題外話不多說,開始操作。

方式一、 簡單 wine 方式 安裝微信

先看效果圖:

wine-wechat-bit-32

這種方式是官方推薦的, wine 官方提供多種 os 的安裝包,還是很不錯的。

wine-binary-packages

參考文檔,以 Ubuntu 爲例,其它發行版類似。

    1. 32 位系統支持
1sudo dpkg --add-architecture i386
    1. 包源相關設置
1sudo mkdir -pm755 /etc/apt/keyrings
2sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
    1. 下載源文件

寫這個文章的時候,用的 Ubuntu 23.10

1sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/mantic/winehq-mantic.sources
    1. 安裝 wine

當前沒有 stable,安裝 staging 版本也還行。

1sudo apt install --install-recommends winehq-staging

官方文檔讓安裝的是winehq-stable,實際上我寫這個文章的時候,官方還沒有打包,會提示找不到(直接去倉庫網頁裏面查找,的確沒有!)。如果怕不穩定,等官方出 stable 的時候再操作一邊也很簡單。

1➜  images git:(main) ✗ sudo apt install --install-recommends winehq-stable
2[sudo] password for mephisto:
3Reading package lists... Done
4Building dependency tree... Done
5Reading state information... Done
6E: Unable to locate package winehq-stable

經過前面 4 個步驟,wine 就安裝好了。接着使用 wine 安裝最新版本微信。

    1. 去微信官網下載微信安裝包
    • 下載的是 windows 版本

    download-wechat-step1

    • 選 32 位或者 64 位

    建議選 32 位,我安裝 64 位的時候遇到的問題多一些

    download-wechat-step2

    1. 安裝

網上很多教程弄得花裏胡哨的,其實默認的就好,WeChatSetup_x86.exe 就是 32 位的版本。

1wine WeChatSetup_x86.exe

這樣,簡單安裝的方式就大功告成了!

安裝完成後,會自動給創建一個啓動器文件,用啓動器或者其它方式找到啓動就好(簡單說,其它軟件怎麼運行啓動,你就怎麼操作)

1➜  ~ cat ~/Desktop/WeChat.desktop
2[Desktop Entry]
3Name=WeChat
4Exec=env WINEPREFIX="/home/mephisto/.wine" wine C:\\\\users\\\\Public\\\\Desktop\\\\WeChat.lnk
5Type=Application
6StartupNotify=true
7Path=/home/mephisto/.wine/dosdevices/c:/Program Files/Tencent/WeChat
8Icon=E282_WeChat.0
9StartupWMClass=wechat.exe

有興趣的可以看看這個啓動文件,Name、 Exec 、Icon 是較爲關鍵的元素。

    1. 其它問題

如果你遇到字體方框的問題,大概率是缺少字體, 把 Windows 中的 simsun.ttc 複製到 ~/.wine/drive_c/windows/Fonts/,可以解決宋體顯示問題。

1cp fake_simsun.ttc ~/.wine/drive_c/windows/Fonts

字體網上很多鏈接可以下載的,因版權問題,我不提供鏈接。

arch wiki 的解決方式,軟鏈接字體到目標目錄

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

輸入框光標不能正常定位(表相爲無法將光標移動到目標位置,修正輸入錯誤時非常惱人)的問題,解決辦法如下:

  • 首先,安裝 winetricks
1sudo apt install winetricks
  • 接着,使用 winetricks 安裝 riched20(很多也一併安裝了 gdiplus riched20 riched30,我測試了下 riched20 就能解決問題)
1winetricks gdiplus riched20 riched30

安裝 riched20 的時候,會提示下載 InstMsiW.exe 超時或者 404,真的是苦不堪言。

instmsiw download err

讀者需要自行去網上搜索下載地址(或者關注我的個人公衆號“兩畝六分地”,留言"芝麻開門"獲得下載地址,地址會不定期更換,小破站帶寬有限不用網盤請原諒,網上的各種網盤地址也是經常失效的)

下載地址獲取示例:

wechat wine file download

下載文件放到.cache下的正確位置,再執行上面的命名安裝。

 1  ~ cd .cache/winetricks/
 2➜  winetricks pwd
 3/home/mephisto/.cache/winetricks
 4➜  winetricks tree
 5.
 6├── cmd
 7├── corefonts
 8├── msls31
 9│   └── InstMsiW.exe
10├── riched30
11│   └── InstMsiA.exe
12├── sourcehansans
13│   └── SourceHanSans.ttc.zip
14├── track_usage
15├── win2ksp4
16│   └── W2KSP4_EN.EXE
17└── win7sp1
18    └── windows6.1-KB976932-X86.exe
19
208 directories, 6 files

測試光標定位正常,如動圖所示。

input ok

方式二、 複雜 wine 方式 安裝微信

有興趣的同學建議先閱讀官方文檔,我就是地鐵上手機橫屏看的。

老實說,對絕大部分用戶,我建議使用上面簡單無痛的方式 wine 安裝微信。

但是,不是所有用戶都用 Gnome 和 KDE 等主流桌面環境,也不是每個人安裝的時候都平坦順利。

由於筆者使用 labwc 自己搭建的環境,方式一安裝的 wechat 在啓動時候,是個大黑屏,sway 環境也是相同遭遇。就好像一個大黑布罩住了微信界面一樣,什麼都看不了,此時光標移動到不同區塊還是有反應的,盲人摸象。

黑框長這樣,外面一個黑圈,裏面一個黑框。

wechat-blocked

爲了解決這個問題,耽誤了好長時間,直到搜到這個文章

解決方式就是直接修改 wine 的源碼,重新編譯。重新編譯真的非常耗時(i5 4 核心電腦太差,感覺差不多 40 分鐘,因爲不知道哪些模塊不需要,默認參數)。編譯一次差不多一個小時,前後爲了測試不同版本(32bit 和 64bit),不同依賴庫的影響,大概變編譯了 4 次!

當然這樣折騰也是有好處的,解決了黑屏的問題,可以學到一點用處不大的知識,能幫助到讀者,沒錯,就是你 😅。

    1. 下載 wine 源碼

源碼應該都能找到,找你認爲合適的版本,我一般用最新的。

1wget https://dl.winehq.org/wine/source/8.x/wine-8.19.tar.xz
    1. 解壓後進入目錄
1➜  wine-8.19 ls
2aclocal.m4  AUTHORS     config.status  configure.ac  dlls           fonts    libs     LICENSE.OLD  MAINTAINERS  nls  programs  server  VERSION
3ANNOUNCE    config.log  configure      COPYING.LIB   documentation  include  LICENSE  loader       Makefile     po   README    tools   wine
4➜  wine-8.19 pwd
5/home/mephisto/Downloads/wine-8.19
    1. 修改 wine 源碼

圖片解釋:

wine-source-code-diff.webp

代碼片段:

1    if (exStyle == 0x080800a0 && style != 0x80000000 ) // WeChat/WxWork shadow hwnd ; fix can not open chat info
2    {
3        FIXME("hack %x\n", cs.dwExStyle);
4        return NULL;
5    }

vscode 截圖:

wine-patch

    1. 安裝基礎依賴

實在是懶得整理了,看下面的操作記錄,

 1➜  ~ history |grep install |grep :i386
 2 9809  sudo apt install libx11-dev:i386
 3 9810  sudo apt install libfreetype6-dev:i386 libfreetype6-dev
 4 9812  sudo apt install libxrender-dev:i386 libgnults-dev:i386
 5 9814  sudo apt install libxrender-dev:i386
 6 9816  sudo apt install libgl-dev:i386
 7 9818  sudo apt install libasound2-dev:i386
 8 9860  sudo apt install libxcursor-dev:i386
 9 9861  sudo apt install libfreetype-dev:i386
10 9862  sudo apt install libfontconfig-dev:i386
11 9863  sudo apt install libgnutls28-dev:i386

基礎依賴裝好後,運行./configure 沒有看到 warning 就表明依賴庫裝的差不多了。

提示缺什麼就根據官方文檔補什麼。

獨家內容: 強烈建議 libfreetype-devlibfontconfig-dev一定要安裝,不然微信安裝界面中文都是方塊(不會提示 warning,我就是漏了這 2 個,重新編譯又是 1 個小時!)。

當然如果你是高手,清楚哪些是有用,哪些沒有用,直接忽略就好。

 1➜  wine-8.19 ./configure
 2checking build system type... x86_64-pc-linux-gnu
 3checking host system type... x86_64-pc-linux-gnu
 4checking whether make sets $(MAKE)... yes
 5#####此處省略一萬行#####
 6config.status: executing include/stamp-h commands
 7config.status: executing tools/makedep commands
 8config.status: executing Makefile commands
 9
10configure: libxi 32-bit development files not found, the Xinput extension won't be supported.
11configure: XShm 32-bit development files not found, X Shared Memory won't be supported.
12configure: XShape 32-bit development files not found, XShape won't be supported.
13configure: libXxf86vm 32-bit development files not found, XFree86 Vidmode won't be supported.
14configure: libxrandr 32-bit development files not found, XRandr won't be supported.
15configure: libxinerama 32-bit development files not found, multi-monitor setups won't be supported.
16configure: libxcomposite 32-bit development files not found, Xcomposite won't be supported.
17configure: libOSMesa 32-bit development files not found (or too old), OpenGL rendering in bitmaps won't be supported.
18configure: Wayland 32-bit development files not found, the Wayland driver won't be supported.
19configure: OpenCL 32-bit development files not found, OpenCL won't be supported.
20configure: pcap 32-bit development files not found, wpcap won't be supported.
21configure: libpcsclite not found, smart cards won't be supported.
22configure: libdbus 32-bit development files not found, no dynamic device support.
23configure: libsane 32-bit development files not found, scanners won't be supported.
24configure: libusb-1.0 32-bit development files not found (or too old), USB devices won't be supported.
25configure: libv4l2 32-bit development files not found.
26configure: libgphoto2 32-bit development files not found, digital cameras won't be supported.
27configure: libgphoto2_port 32-bit development files not found, digital cameras won't be auto-detected.
28configure: libpulse 32-bit development files not found or too old, Pulse won't be supported.
29configure: gstreamer-1.0 base plugins 32-bit development files not found, GStreamer won't be supported.
30configure: OSS sound system found but too old (OSSv4 needed), OSS won't be supported.
31configure: libudev 32-bit development files not found, plug and play won't be supported.
32configure: libSDL2 32-bit development files not found, SDL2 won't be supported.
33configure: libcapi20 32-bit development files not found, ISDN won't be supported.
34configure: libcups 32-bit development files not found, CUPS won't be supported.
35configure: libkrb5 32-bit development files not found (or too old), Kerberos won't be supported.
36configure: libnetapi not found, Samba NetAPI won't be supported.
37configure: libvulkan and libMoltenVK 32-bit development files not found, Vulkan won't be supported.
38
39configure: Finished.  Do 'make' to compile Wine.
    1. 編譯安裝 wine
1make -j `nproc`
2make install

默認安裝到/usr/local/bin/

 1➜  ~ ls -al /usr/local/bin/wine*
 2-rwxr-xr-x 1 root root   22668 Nov  7 13:45 /usr/local/bin/wine
 3-rwxr-xr-x 1 root root   25528 Nov  6 17:37 /usr/local/bin/wine64
 4-rwxr-xr-x 1 root root   49760 Nov  6 17:37 /usr/local/bin/wine64-preloader
 5-rwxr-xr-x 1 root root    1973 Nov  7 13:45 /usr/local/bin/wineboot
 6-rwxr-xr-x 1 root root  761180 Nov  7 13:46 /usr/local/bin/winebuild
 7-rwxr-xr-x 1 root root    1973 Nov  7 13:45 /usr/local/bin/winecfg
 8-rwxr-xr-x 1 root root    1973 Nov  7 13:45 /usr/local/bin/wineconsole
 9lrwxrwxrwx 1 root root       7 Nov  7 13:46 /usr/local/bin/winecpp -> winegcc
10-rwxr-xr-x 1 root root    1973 Nov  7 13:45 /usr/local/bin/winedbg
11-rwxr-xr-x 1 root root 1070420 Nov  7 13:46 /usr/local/bin/winedump
12-rwxr-xr-x 1 root root    1973 Nov  7 13:45 /usr/local/bin/winefile
13lrwxrwxrwx 1 root root       7 Nov  7 13:46 /usr/local/bin/wineg++ -> winegcc
14-rwxr-xr-x 1 root root  242128 Nov  7 13:46 /usr/local/bin/winegcc
15-rwxr-xr-x 1 root root   95127 Nov  7 13:46 /usr/local/bin/winemaker
16-rwxr-xr-x 1 root root    1973 Nov  7 13:45 /usr/local/bin/winemine
17-rwxr-xr-x 1 root root    1973 Nov  7 13:45 /usr/local/bin/winepath
18-rwxr-xr-x 1 root root   45452 Nov  7 13:45 /usr/local/bin/wine-preloader
19-rwxr-xr-x 1 root root 3560536 Nov  7 13:45 /usr/local/bin/wineserver

這 2 步沒什麼好說的,懂的都懂。

    1. 使用手編的 wine 安裝微信

這裏和方式一的不同點是使用的 wine 不同(/usr/bin/wine/usr/local/bin/wine)。

操作之前建議備份下 ~/.wine 目錄, 我設置.wine是當前使用的,.wine_32.wine_64分別是 32 位和 64 爲備份,有備無患!

1➜  ~ ls .wine*
2.wine:
3dosdevices  drive_c  system.reg  userdef.reg  user.reg  winetricks.log  wrapper.cfg
4
5.wine_32:
6dosdevices  drive_c  system.reg  userdef.reg  user.reg  wrapper.cfg
7
8.wine_64:
9dosdevices  drive_c  system.reg  userdef.reg  user.reg

安裝,這一步和之前一樣。

1/usr/local/bin/wine WeChatSetup_x86.exe
    1. 其它問題
    • 其它如字體缺失,處理方式相同,不再贅述。

    • 關閉時候進程退出不乾淨,直接全殺了,一般都不怎麼關。

      1pkill WeChat
      
    • wine system tray,waybar 下目前無解,貌似要等 wine 合併代碼,影響不大。

    • 部分功能無法使用,搜一搜、視頻號,無關緊要不看也罷。

寫在最後

使用自己編譯的方式很繁瑣,在某些情況下不得不爲之。也感慨 wine 項目的強大,現在使用的就是自己編譯的 wine,感覺良好!電腦配置高的,編譯時間估計能縮減很多。

至此,釘釘、飛書、微信都可以正常在 Linux 下順暢使用了。如果讀者有疑問,可以搜索本站相關教程。

最後修改於: Tuesday, January 9, 2024

相關文章:

翻譯: