Theme NexT works best with JavaScript enabled

学习飞翔的企鹅

What's the point in living if I have to hide ?

0%

Linux 下使用 Wine 安装 windows 版的微信

一个令 Linux 用户十分头痛的问题就是QQ和微信的使用。目前腾讯有Linux版的QQ,但是界面十分简陋,仿佛上世纪的产品,且没有Linux版的微信。之前一直在用的微信是 electronic-wechat,是基于网页版微信用electron进行UI展示的开源软件,虽然一定程度上可以用了,但毕竟只是基于网页版重新写了个UI,bug很多,而且近两年注册的微信号因为不能登录网页版微信所以不能用。于是就想能不能用 Wine 装一个 windows 下的微信客户端解决问题。

一、Wine 简介

Wine是在x86x86-64容许类Unix操作系统X Window System运行Microsoft Windows程序的软件。另外,Wine也提供程序运行库(Winelib)来帮助计算机程序设计师将Windows程序移植到类Unix系统;也有不少软件经过Wine测试后发布,比如PicasauTorrentMediaCoder

Wine通过提供一个兼容层来将Windows的系统调用转换成与POSIX标准的系统调用。它还提供了Windows系统运行库的替代品和一些系统组件的替代品。为了避免著作权问题,Wine主要使用黑箱测试逆向工程来编写。

Wine最早是“Windows Emulator”,即Windows模拟器的缩写,但Wine现在为“Wine Is Not an Emulator”的递归缩写,即Wine不是模拟器。Wine的正确名称是“Wine”,而不是全大写或全小写。

以上是 wiki 对 Wine 的简介。主要就是通过一个兼容层改变 windows 的系统调用,从而能在使用 POSIX 标准的系统(如Linux)上运行 windows 的软件。如果不是很懂的话把它看作是一个轻量的虚拟机也行(虽然两者完全不同)。

二、安装步骤

1. 安装 Wine

Wine 在大部分 Linux 发行版的软件库中都有,直接用包管理器进行安装即可。例如在 ubuntu 下使用 apt:

1
sudo apt install wine

Wine 除了基础版本以外,还有 deepin 系统基于 Wine 开发的 deepin-wine,主要用于 deepin 系统,一般只用基础版的 Wine 就行了。

安装完 Wine 后会附带 winecfg 程序,这是用来调整要模拟的 windows 版本、选择增加的 dll 库、画面分辨率等设置的。

2. 安装 winetricks

winetricks 是一个辅助脚本,用于在 wine 中下载并安装各种闭源的组件和运行库。因为 windows 版的微信运行需要 riched20.dll 和 riched32.dll 两个动态库的支持,因此需要用到 winetricks。

使用包管理器安装的 winetricks 可能版本过老,导致安装的依赖不对,因此最好直接去 github 上下载。

1
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

然后给权限并移动到/usr/local/bin/(系统路径之一)下

1
2
chmod +x winetricks					# 给执行权限
sudo mv winetricks /usr/local/bin # 移动到系统路径

除此之外, winetricks 有一个依赖项是 cabextract,需要手动安装:

1
sudo apt install cabextract

3. 创建 wine bottle

如果直接用默认参数运行 Wine、winetricks 的话,装的所有东西都会装到系统盘里,不同的软件要用的 dll 可能不一样,最后会杂糅在一起,而且它塞一堆 dll 进系统盘我们肯定不愿意,但如果手动创建 wine bottle 则可以把这些环境分开,就像 python 中的 virtualenv 一样。创建的方式很简单,只需要指定这些软件打开的路径即可。

1
2
3
4
cd /path/to/target		# 切到用来装 Wine 环境的路径
mkdir Wine # 不同程序的依赖将装在 Wine 文件夹的各个子目录下
cd Wine # 进入 Wine 文件夹
WINARCH=win32 WINEPREFIX=/path/to/target/Wine/WeChat winecfg # 初始化 Wine/Wechat 目录

初次进入 winecfg 时可能会跳出很多错误提示,让你下载一些依赖,可以直接跳过,等以后要用了再下载。跳过之后进入 winecfg 的界面,很有可能字、界面非常小,这是因为自己在 Linux 系统中设置了屏幕放缩,在Graphics->Screen Resolution 一栏中可以调整 dpi,从而调大字。

winecfgresolution

至此一个基础的环境已经配置好了,如果要运行一些 windows 程序时只需要用以下指令即可:

1
WINARCH=win32 WINEPREFIX=/path/to/target/Wine/WeChat wine ***.exe

当然,复杂一点的 windows 程序需要的 dll 不一样,所以只用基础环境可能并不能运行。对于微信而言,还需要riched20.dll 和 riched32.dll 两个动态库,使用 winetricks 进行安装。

1
WINARCH=win32 WINEPREFIX=/path/to/target/Wine/WeChat winetricks

选择 Select the default wineprefix -> Install a Windows DLL or component,然后勾选上riched20.dll 和 riched32.dll 两个动态库,按确定,等待下载即可。注意这里如果一直下载失败的话可能会需要科学上网,命令行代理可以使用proxychains。下载完成之后退出 winetricks 即可。

到此为止一个适合微信的环境已经建立完成,接下来只需要安装微信即可。

4. 安装微信

首先从微信官网下载微信安装器,然后用 Wine 运行安装器 WechatSetup.exe:

1
WINARCH=win32 WINEPREFIX=/path/to/target/Wine/WeChat wine WechatSetup.exe

接下来按照在 Windows 上的安装操作一样即可。安装完后即可使用。一般来说会自动在桌面产生快捷方式,如果桌面没有可以在开始菜单中搜索微信。

三、参考资料

  1. Linux下的wine生活(QQ/微信/Office)
  2. Linux下通过Wine安装微信
  3. Wine 维基百科