debian 安装 wine 与 wine 微信备忘

最近使用 Debian 进行办公,微信在国内是必不可少的办公工具。在linux上有很两种实现方式,

  • 集成web微信的http接口,这是最常见的,例如
    • Snap 安装第三方微信客户端 Electronic-Wechat
    • rambox 安装微信
  • 虚拟化 win 软件,仅有 wine 一家。

两种方式对个人来说都差不多,基于web微信的可以搞更多的花样,但很可惜的是,我的账号不允许登陆 web 微信,我也不知道为什么。所以直接pass,只能走wine 微信这一条路。

这篇文章记录安装 wine 和 wine 微信的要点。

零、什么是wine

Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如Linux,Mac,FreeBSD和Solaris等)上运行 Windows 应用的兼容层。

Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是将 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。

一、安装wine

1. 打开多架构支持

查看内核架构:

sudo dpkg --print-architecture  

image-20210601164658434

如果运行的是 64 位系统,需要开启 32 位架构支持

  • 添加i386架构
sudo dpkg --add-architecture i386

2. 添加源并安装

  • 下载 winehq.key 并导入
wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
  • 添加 winehq 源,在/etc/apt/sources.list中增加一行
deb https://dl.winehq.org/wine-builds/debian/ buster main
  • 更新源
sudo apt update
  • 安装winehq-stable
sudo apt install --install-recommends winehq-stable

查看wine版本号:

wine --version

image-20210601165402549

二、配置wine

  1. 建议使用桌面用户进行安装,root用户未来要复制一些文件会比较麻烦。我暂时切到我的桌面用户kelu。
su kelu
  1. 由于我一般登陆两个微信,所以我希望能同时跑两个wine来解决这个问题。所以我在运行wine前都会选择各自的独立配置。

1. 配置不同的wine配置文件

mkdir ~/Wine
WINEARCH=win32 WINEPREFIX=~/Wine/WeChat winecfg
WINEARCH=win32 WINEPREFIX=~/Wine/WeChat2 winecfg

其中 WINEARCH=win32 的作用是告诉Wine创建一个32位的wineprefix。

wineprefix 是生成配置文件的目录。

image-20210601174338238

有一个库 riched20 经常使用,提前添加一下,点击 Add:

image-20210601174405902

三、安装微信

打开软件安装界面:

WINEPREFIX=~/Wine/WeChat wine uninstaller

选择 Install 安装微信:

image-20210601174447596

安装完成。再次打开微信可以这样打开:

cd ~/Wine/WeChat/drive_c/Program Files/Tencent/WeChat
WINEPREFIX=~/Wine/WeChat wine WeChat.exe

image-20210601174633344

四、解决微信中文显示

上面可以看到了,中文字符都是方框。下面来解决中文字符问题。

1. 拷贝win7的字体文件

无脑把win7的字体文件夹 C:\WINDOWS\Fonts\ 打包复制一份到 Linux系统中。因为我起了两个配置文件,就是分别拷贝到下面的文件夹:

  • ~/Wine/WeChat/drive_c/windows/Fonts
  • ~/Wine/WeChat2/drive_c/windows/Fonts

2. 修改注册表

gedit ~/Wine/WeChat/system.reg # 一定要使用 gedit 或其他支持 gb2312/utf8 编码的编辑器修改这些文件,否则文件中的中文可能变乱码
  1. 搜索: LogPixels

    找到的行应该是

    [System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts]
    

    将其中的:

    "LogPixels"=dword:00000060
    

    改为:

    "LogPixels"=dword:00000070
    
  2. 搜索: FontSubstitutes

    找到的行应该是:

    [Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes]
    

    将其中的:

    "MS Shell Dlg"="Tahoma"
    "MS Shell Dlg 2″="Tahoma"
    

    改为:

    "MS Shell Dlg"="SimSun"
    "MS Shell Dlg 2″="SimSun"
    
  3. 把下面的代码保存为 zh.reg

    REGEDIT4
    [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
    "Arial"="simsun"
    "Arial CE,238"="simsun"
    "Arial CYR,204"="simsun"
    "Arial Greek,161"="simsun"
    "Arial TUR,162"="simsun"
    "Courier New"="simsun"
    "Courier New CE,238"="simsun"
    "Courier New CYR,204"="simsun"
    "Courier New Greek,161"="simsun"
    "Courier New TUR,162"="simsun"
    "FixedSys"="simsun"
    "Helv"="simsun"
    "Helvetica"="simsun"
    "MS Sans Serif"="simsun"
    "MS Shell Dlg"="simsun"
    "MS Shell Dlg 2"="simsun"
    "System"="simsun"
    "Tahoma"="simsun"
    "Times"="simsun"
    "Times New Roman CE,238"="simsun"
    "Times New Roman CYR,204"="simsun"
    "Times New Roman Greek,161"="simsun"
    "Times New Roman TUR,162"="simsun"
    "Tms Rmn"="simsun"
    

    终端执行

     WINEPREFIX=~/Wine/WeChat regedit zh.reg
     WINEPREFIX=~/Wine/WeChat2 regedit zh.reg
    

完成以上的操作,中文就显示出来了。

image-20210601182700039

五、解决微信输入界面不显示中文

主要还是 riched20 的问题。我这边的解决办法是直接把 win7 的这个文件拷贝过来。 C:\WINDOWS\System32\riched20.dll ,拷贝到wine下相关的位置。要注意先给原文件做个备份。

  • ~/Wine/WeChat/drive_c/windows/System32/riched20.dll
  • ~/Wine/WeChat2/drive_c/windows/System32/riched20.dll

image-20210602104014874

然后重启电脑。

六、制作图标

因为有两个微信,还是要制作不同的图标,以下是我的设置。

image-20210602104004589

文件 wechat.desktop:

[Desktop Entry]
Name=WeChat
Exec=env WINEPREFIX="/home/kelu/Wine/WeChat" wine C:\\\\windows\\\\command\\\\start.exe /Unix /home/kelu/Wine/WeChat/dosdevices/c:/ProgramData/Microsoft/Windows/Start\\ Menu/Programs/WeChat/WeChat.lnk
Type=Application
StartupNotify=true
Path=/home/kelu/Wine/WeChat/dosdevices/c:/Program Files/Tencent/WeChat
Icon=8A76_WeChat.0
StartupWMClass=wechat.exe

文件 wechat2.desktop:

[Desktop Entry]
Name=WeChat2
Exec=env WINEPREFIX="/home/kelu/Wine/WeChat2" wine C:\\\\windows\\\\command\\\\start.exe /Unix /home/kelu/Wine/WeChat2/dosdevices/c:/ProgramData/Microsoft/Windows/Start\\ Menu/Programs/WeChat/WeChat.lnk
Type=Application
StartupNotify=true
Path=/home/kelu/Wine/WeChat2/dosdevices/c:/Program Files/Tencent/WeChat
Icon=8A76_WeChat.0
StartupWMClass=wechat.exe

分别给这两个文件赋予可执行权限:

chmod +x wechat.desktop
chmod +x wechat2.desktop

在桌面点击图标后,信任该文件,就可以看到图标了。

image-20210602104031729

参考资料


ThinkPad X270 上安装 Debian Linux 终端环境安装 L2TP 客户端