最近使用 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
如果运行的是 64 位系统,需要开启 32 位架构支持
sudo dpkg --add-architecture i386
2. 添加源并安装
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 install --install-recommends winehq-stable
查看wine版本号:
二、配置wine
- 建议使用桌面用户进行安装,root用户未来要复制一些文件会比较麻烦。我暂时切到我的桌面用户kelu。
- 由于我一般登陆两个微信,所以我希望能同时跑两个wine来解决这个问题。所以我在运行wine前都会选择各自的独立配置。
1. 配置不同的wine配置文件
mkdir ~/Wine
WINEARCH=win32 WINEPREFIX=~/Wine/WeChat winecfg
WINEARCH=win32 WINEPREFIX=~/Wine/WeChat2 winecfg
其中 WINEARCH=win32
的作用是告诉Wine创建一个32位的wineprefix。
wineprefix 是生成配置文件的目录。
有一个库 riched20 经常使用,提前添加一下,点击 Add:
三、安装微信
打开软件安装界面:
WINEPREFIX=~/Wine/WeChat wine uninstaller
选择 Install 安装微信:
安装完成。再次打开微信可以这样打开:
cd ~/Wine/WeChat/drive_c/Program Files/Tencent/WeChat
WINEPREFIX=~/Wine/WeChat wine WeChat.exe
四、解决微信中文显示
上面可以看到了,中文字符都是方框。下面来解决中文字符问题。
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 编码的编辑器修改这些文件,否则文件中的中文可能变乱码
-
搜索: LogPixels
找到的行应该是
[System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts]
将其中的:
"LogPixels"=dword:00000060
改为:
"LogPixels"=dword:00000070
-
搜索: 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"
-
把下面的代码保存为 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
完成以上的操作,中文就显示出来了。
五、解决微信输入界面不显示中文
主要还是 riched20 的问题。我这边的解决办法是直接把 win7 的这个文件拷贝过来。 C:\WINDOWS\System32\riched20.dll
,拷贝到wine下相关的位置。要注意先给原文件做个备份。
- ~/Wine/WeChat/drive_c/windows/System32/riched20.dll
- ~/Wine/WeChat2/drive_c/windows/System32/riched20.dll
然后重启电脑。
六、制作图标
因为有两个微信,还是要制作不同的图标,以下是我的设置。
文件 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
在桌面点击图标后,信任该文件,就可以看到图标了。
参考资料