【折腾记录】Ubuntu24.04LTS下安装Windows版微信

最近装了Win11和Ubuntu双系统,为了能更方便地和朋友交流,遂决定在Ubuntu下安装微信。

首先要去网上找教程,经过一番搜索,正当我在wine和deepin-wine之间犹豫不定之时,忽然发现了GitHub上的这个仓库zq1997/deepin-wine

据其README描述:

deepin-wine环境与应用在Debian/Ubuntu上的移植仓库
使用deepin官方原版软件包
安装QQ/微信只需要两条命令

居然还有这么方便的事情?那必须得是选择这种方式啊!

殊不知,README中还藏着一段文字,被我所忽视,而它将为后文的一切埋下深深的伏笔……

Linux不是Windows,Wine也不是Windows,不要期待100%丝滑享受。

依赖问题

在依据其README完成setup之后,使用apt安装微信,出现类似下面的依赖问题:

(因为当时自己这边的信息找不到了,所以用了GitHub上别人的)

正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
libsane : 依赖: libsane-common (= 1.0.27.2-3.2+deepin) 但是 1.2.1-7build4 正要被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

因为有很多已安装的包依赖于1.2.1版本的libsane-common,所以只能尝试提高deepin版微信依赖的libsane-common的版本。

因此需要修改deb包中的依赖信息并重新打包。

但是由于不是很懂Ubuntu的包管理机制,只好在这个仓库的issues里搜索sane关键词,最终找到了这篇博文——解决向日葵软件在Ubuntu 20.04依赖libwebkitgtk-3.0-0等问题

通过aptitude可以发现,是com.qq.weixin.deepin包依赖的deepin-wine8-stable包依赖了libsane,所以需要修改deepin-wine8-stable包的deb。

先下载对应的deb文件,

apt download deepin-wine8-stable

然后参照这篇博文去修改即可。

由于我才疏学浅,不知道怎么指定版本为>=1.2.1(试过了修改版本号但是有问题,睡了一觉忘记问题是啥了),为了快速解决问题,用了个简单粗暴的方法——直接去掉libsane这个依赖项。

安装上述博文中的方法修改,然后重新打包,再使用

apt install ./xxx.deb

安装即可(install后面要写一个路径,否则apt会认为是包名从而到仓库中去找)

接着再使用

sudo apt-get install com.qq.weixin.deepin

来安装微信就没有问题了,安装好之后可能需要注销再重新登陆(或者重启)才能看到微信的图标。

高兴得太早

正当高兴之时,打开微信,发现居然提示解压错误了。

不过好在,在GitHub Issues里找到了适配的解决方案:微信解压失败,files.7z的md5值不正确 #378

image

按照上图方法修改后,终于可以打开微信了……

后记

探究解压失败的原因

在run_v4.sh中找到相关代码,发现其逻辑是这样的:

如果7z解压文件后返回的状态码不是0,则认为是解压失败。

ExtractApp()
{
$SHELL_DIR/deepin-wine-banner unpack &
mkdir -p "$1"
7z x "$APPDIR/$APPTAR" -o"$1"
if [ $? != 0 ];then
$SHELL_DIR/deepin-wine-banner info "解压失败"
rm -rf "$1"
exit 1
fi
mv "$1/drive_c/users/@current_user@" "$1/drive_c/users/$USER"
sed -i "s#@current_user@#$USER#" $1/*.reg
FixLink
$SHELL_DIR/deepin-wine-banner unpacked
}

而在7z命令后面加上 || true之后,这条命令的返回值就一定是0了,也就是忽略7z解压错误,继续执行后面的代码。

可是为什么明明解压发生错误了,还能正常启动呢?

我尝试自己执行了run脚本中的解压命令,发现里面是有一些危险的链接被忽略了,从而导致了ERROR。

例如:

ERROR: Dangerous link path was ignored : drive_c/windows/winhlp32.exe : /opt/deepin-wine8-stable/lib/wine/i386-windows/winhlp32.exe

除了这些链接以外的文件似乎都被正确地解压出来了,但是我不太理解为什么没有这些链接,应用也能正常运行,也许是实际运行时没有用到,或者deepin-wine(或wine)对此有fallback机制?

待解决的托盘问题

关闭微信窗口后,点击托盘图标没反应。

查阅资料发现,这似乎是gnome-shell的一个bug(也有可能是相关插件),它会导致wine的托盘图标被放到状态栏上面之后无法点击,并且透明背景变成黑色。

https://github.com/zq1997/deepin-wine/issues/332
https://github.com/ubuntu/gnome-shell-extension-appindicator/issues/481

暂时的解决办法:找到“扩展”应用,找到Ubuntu Appindicator这个扩展,点击右边三个点,点击设置,关闭“启用旧托盘图标支持”。但这样很丑,所以我选择不关闭微信窗口:)

posted @   Re-Ch  阅读(1125)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示