[Tutorials] 利用deepin-wine6打包最新64位微信(微信版本:3.5.4.27)
Tofloor
poster avatar
川顺页
deepin
2021-12-30 03:56
Author

2021/12/30更新

  1. 修复与官方deepin-wechat冲突问题。
  2. 更新最新微信图标(从spark-wine剽来的)。
  3. 精简文件,安装包变成300多M。
  4. 编写了sh自动打包脚本(支持官方容器,deepin-wine6 64位容器)。
  5. 编写了python检查更新脚本(理论上可以利用cron定时任务,自动检查更新,自动打包)
  6. 编写了gitlab-ci.yaml,支持CI/CD自动打包。
    代码已开源,并且上传gitlab。
    项目地址
  7. 成品地址,直接从gitlab的最新jobs下载,解压,sudo dpkg -i xx.deb安装就行了。
    image.png
  8. 配套字体项目,缓解小程序乱码问题

背景

  1. 小白一个,不过用deepin+ubuntu也有4,5年了,懂一点点编程。
  2. 第一次用deepin-wine打包应用。
  3. wine出来的文件有点大,主是没有删除drive_c下面的Program Files(x86),官方的wine的微信把这个精简掉了。小白比较谨慎,不敢乱删东西,所以这次wine的微信有将近700M。
  4. 一直在等deepin官方更新微信,结果等了半年还没有消息,加上最新微信的自动登陆和群聊折叠,网页文件助手确实很香,所以就有了自己动手的打算。
  5. 第一次打包应用,结果会与官方deepin-wine冲突,如果要保留的话,建议手动配置一下启动文件就行了,不过用我的教程会比较麻烦,自行斟酌。
  6. 测试了公司电脑和个人电脑直接装deb包,没有发现太大问题。

准备工作

  1. 下载vek,[官网地址]https://jacklee02.gitee.io/vek/),快速下载地址:Deepin​&UOS Download vek-0420.zip(解压密码:2021-4-20)
  2. 安装vek推荐的,必须安装的运行库。
sudo apt install dh-make fakeroot aria2 winbind cabextract libvulkan1 libvulkan1:i386 icoutils wmctrl
  1. 下载微信,官网地址
  2. 准备一个windows系统,推荐win7(deepin官方就是用的win7容器),不过我习惯用win11,问题不大。可以用vmware搞一个就行。

正式开始

  1. 解压vek,然后文件夹双击打开,然后提示打开方式,建议选择“在终端打开并运行”

  2. 第一次打开会提示升级,直接点击确定升级即可。

  3. 打开后点击菜单栏的wine管理,然后选择wine安装,之后选择deepin-wine6即可,大概需要等待20分钟上面的deepin-wine6才会装好。
    这里有个坑,deepin-wine6不支持用该工具打包输出deb,只有deepin-wine5才支持,但是deepin-wine5试了一下还是不支持,所以还是选择deepin-wine6算了。
    image.png

  4. 然后返回主界面,选择增加容器,选择deepin-wine6,选择win64,然后会提示是否安装xx组件,全部选择是即可,容器名称随意。
    image.png

  5. 点击安装应用,确保已经安装成功上面提示的xx组件。
    image.png

  6. 点击增加应用,手动设置,这里的执行程序是安装好的微信所在文件夹。
    image.png

  7. 进入windows系统,我用的win11,然后下载并且安装最新微信,安装位置用默认的即可,不要动它。安装后不要运行,直接右键微信快捷方式,打开文件所在路径,然后把Tencent下面的整个wechat压缩成zip,弄到deepin下面来。
    image.png

  8. 把wechat.zip放到vek所在文件夹,新建一个文件夹,名称随意(我习惯用applications),然后解压Wechat.zip到该路径。
    image.png

  9. 回到vek,新增应用界面,设置软件启动程序那里,选择Wechat下面的WeChat.exe程序,之后填写一下软件名即可,名称随意。其他程序会自动生产。
    image.png

    image.png

  10. 之后回到vek界面,发现有了一个微信图标,右键,运行程序,测试一下。
    image.png

  11. 经测试小程序,微信公众号,自动登陆功能都正常,但是不能输入文字(或者说输入了不显示),下面需要修复它。

修复bug

  1. 查看当前deepin-wine函数库
env WINEPREFIX=/home/tlntin/.deepinwine/Deepin-TIM deepin-wine6-stable winecfg

image.png

  1. 回到Vek主界面,点击你的容器,比如我的容器名是"D64 container_for_tlntin",右键,容器winecfg,然后把上面截图的函数库抄一下,停用的可以不用管。
riched20
mlang
msls31
msvcp60
msvcr100
usp10

image.png

  1. 再次回到vek界面,还是点击你的容器,比如我的容器名是"D64 container_for_tlntin", 右键,winetricks-cmd, 然后输入函数名"riched20",注册该服务,点击ok,即可看到终端会下载大量文件
    image.png
  2. 之后退出vek,左上角退出微信,然后重新打开vek,重新运行微信,输入框正常。
  3. 此时还有两个小bug,比如设置,关于,它显示在聊天框后面,问题不大。还有一个bug就是下方菜单栏没有微信小图标闪动,这需要打包一下应用。
  4. 测试了两台电脑都没有问题,最新的deepin系统

安装应用[弄个快捷方式]

  1. 先退出微信与vek。
  2. 把容器放到系统路径下,微信文件夹放到容器下(建议,不然打包了别人可能运行不了。),具体命令如下:
# 1.进入你的vek目录
$ cd ~/Downloads/vek-0420/vek-0420

# 确保下面文件结构正确
$ ls
# applications  data.json  tempVek  vek  vekCache  vekDock  # vekScript   vekWine   vUpdate

# 2. 进入容器目录,复制一份到官方放的.deepinwine目录
$ cd vekDock
$ ls
# 具体下面的容器叫啥根据你取的容器名而定。
# container_for_tlntin
$ cp
$ cp -r container_for_tlntin ~/.deepinwine/

# 3. 新建一个Tencent文件夹在容器的Program Files(与deepin-wechat一致),注意双引号。
$ mkdir "/home/tlntin/.deepinwine/container_for_tlntin/drive_c/Program Files/Tencent"
# 4. 回到主vek主路径,把微信文件夹拷贝到刚刚创建的文件夹下面。
$ cd ..
$ cd applications
$ cd WeChat  # 这一步如果你已经是wechat根目录了可以省略
$ ls
# WeChat
$ cp -r WeChat "/home/tlntin/.deepinwine/container_for_tlntin/drive_c/Program Files/Tencent"
  1. 复制一个启动文件夹
$ cd /opt/apps
$ sudo cp -r com.qq.weixin.deepin com.weixin.myself
$ cd com.weixin.myself/files
$ sudo vim run.sh
# 改成你的容器名
BOTTLENAME="container_for_tlntin"
# 版本号
APPVER="3.4.5.27"
# 包名
export DEB_PACKAGE_NAME="com.weixin.myself"
  1. 修改启动器,创建一个快捷方式
$ cd ..
$ cd entries
$ cd applications
# 换个名称,防止覆盖
$ mv com.qq.weixin.deepin.desktop com.weixin.self.desktop
$ sudo vim com.weixin.self.desktop

```bash
# 执行路径改一下
Exec="/opt/apps/com.weixin.myself/files/run.sh" -f %f
# 名称也改一下
Name=WeChat-myself
Name[zh_CN]=微信-myself

# 输入:wq 
# 保存文件
$ sudo cp com.weixin.self.desktop  /usr/share/applications
  1. 快捷指令快速打开微信
/opt/deepinwine/tools/sendkeys.sh w WeChat

image.png

  1. 成品
    image.png

    image.png

手动打包deb

  1. 下载官方deepin微信包。
wget https://com-store-packages.uniontech.com/appstore/pool/appstore/c/com.qq.weixin.deepin/com.qq.weixin.deepin_3.2.1.154deepin14_i386.deb
  1. 创建目录,解压deb
mkdir -p extract/DEBIAN
dpkg -X ./com.qq.weixin.deepin_3.2.1.154deepin14_i386.deb extract/DEBIAN
dpkg -e ./com.qq.weixin.deepin_3.2.1.154deepin14_i386.deb extract/DEBIAN
  1. 剩余修改方式参考安装应用部分。
cd extract/DEBIAN
cd opt/apps
mv com.qq.weixin.deepin com.weixin.myself
cd com.weixin.myself
vim info
# 修改包名,版本信息
"appid": "com.weixin.myself"
"name": "WeChat-myself"
"version": "3.4.5.27"
cd files
vim run.sh
# 改成你的容器名
BOTTLENAME="container_for_tlntin"
# 版本号
APPVER="3.4.5.27"
# 包名
export DEB_PACKAGE_NAME="com.weixin.myself"
  1. 修改快捷方式名
$ cd ..
$ cd entries
$ cd applications
# 换个名称,防止覆盖
$ mv com.qq.weixin.deepin.desktop com.weixin.myself.desktop
$ vim com.weixin.self.desktop

```bash
# 执行路径改一下
Exec="/opt/apps/com.weixin.myself/files/run.sh" -f %f
# 名称也改一下
Name=WeChat-myself
Name[zh_CN]=微信-myself
# 输入:wq 
# 保存文件
  1. 封装容器
cd ../..
cd files
ls
dlls   files   files.7z   files.md5sum   run.sh

这里面有一个files.7z,封装了容器与微信安装后的文件,把你的替换进去就行了。

$ 7z x files.7z -y -aos -o./files
$ cd files
$ ls
#  dosdevices   drive_c   system.reg   update.policy   user.reg   userdef.reg   winx

# 保留一下driver_c/users/@current_user@
cp -r files/drive_c/users/@current_user@ @current_user@

# 删除files下面的所有东西
rm -r ./*

# 根据你的vekDock路径,将你前面创建的容器下的内容复制过来
cp -r ~/Downloads/vek-0420/vek-0420/vekDock/container_for_tlntin/* .
$ ls
 dosdevices   drive_c   system.reg   user.reg   userdef.reg   winetricks.log

# 考虑分发,不要把自己目录弄进去了,删除drive_c下面的你的用户目录
$rm -rf "drive_c/users/$USER"

# 复制之前保存的@current_user@到drive_c/users/
$ cd ..
$ ls
@current_user@   dlls   files   files.7z   files.md5sum   run.sh
$ mv @current_user@ files/drive_c/users

# 复制后老样子创建一个Tencent文件夹
mkdir "drive_c/Program Files/Tencent"

# 把微信文件夹丢进去
cp -r ~/Downloads/vek-0420/vek-0420/applications/WeChat/WeChat "drive_c/Program Files/Tencent"

# 重新压缩
$ cd ..
$ ls
#  dlls   files   files.7z   files.md5sum   run.sh
$ rm files.7z
$ cd files
$ 7za a ../files.7z *

# 计算7z的md5sum取值,覆盖files.md5sum
$ cd .. && rm -rf files
$ md5sum files.7z | awk '{print $1}' > files.md5sum
  1. 修改DEBIAN下面的control文件
$ cd xxx # 自己把握,确保下面有一个control文件
Package: com.weixin.myself
Version: 3.4.5.27
# 架构amd64,看着舒服
Architecture: amd64
  1. 修改DEBIAN下面的md5sum文件
# 批量替换一下
$ sed -i 's/opt\/apps\/com.qq.weixin.deepin/opt\/apps\/com.weixin.myself/g' md5sums

$ sed -i 's/com.qq.weixin.deepin.desktop/com.weixin.myself.desktop/g' md5sums
# 重新生成md5sum文件
$ cat md5sums | awk '{print $2}' | xargs md5sum > new_md5sums
# 确保没问题后,覆盖旧文件
$ mv new_md5sums md5sums
  1. 顺便把opt放到上级路径(与DEBIAN),不然打包后无法安装,非常重要
$ mv opt ../
$ cd ..
$ ls
 DEBIAN   opt
  1. 回到deb所在文件夹,打包deb文件
$ cd ..
$ mkdir build
$ dpkg-deb -b extract build/

# 输出日志如下,等待1分钟左右。
# dpkg-deb: 正在 'build//com.weixin.myself_3.4.5.27_amd64.deb' 中构建软件包 'com.weixin.myself'。
$ cd build
$ ls
# com.weixin.myself_3.4.5.27_amd64.deb

安装deb文件

安装前仔细阅读背景说明deb版直装说明

sudo dpkg -i com.weixin.myself_3.4.5.27_amd64.deb

输出日志1:

sudo dpkg -i com.weixin.myself_3.4.5.27_amd64.deb
正在选中未选择的软件包 com.weixin.myself。
dpkg: 关于含有 com.weixin.myself 的 com.weixin.myself_3.4.5.27_amd64.deb:
 com.weixin.myself 与之冲突 deepin.com.wechat
  com.qq.weixin.deepin:i386 提供了 deepin.com.wechat 并已存在而且 已安装。

dpkg: 处理归档 com.weixin.myself_3.4.5.27_amd64.deb (--install)时出错:
 软件包相互冲突 - 将不安装 com.weixin.myself
在处理时有错误发生:
 com.weixin.myself_3.4.5.27_amd64.deb

卸载官方原版,重新安装

sudo apt purge com.qq.weixin.deepin:i386
# 注意卸载后会提示让你执行autoremove
# 注意千万不要执行,不然下面的包就没法装了,不要手贱,切记

输出日志2:

sudo dpkg -i com.weixin.myself_3.4.5.27_amd64.deb
(正在读取数据库 ... 系统当前共安装有 380550 个文件和目录。)
准备解压 com.weixin.myself_3.4.5.27_amd64.deb  ...
正在解压 com.weixin.myself (3.4.5.27) ...
正在设置 com.weixin.myself (3.4.5.27) ...

打开一下,正在解压
image.png

稍等一下,提示出微信扫码,然后登陆的时候手机勾选一下自动登陆即可。
image.png

手动安装版已知bug

  1. 设置-关于,有时候不会弹出(一般在聊天框背面)
  2. 微信通知栏不在任务栏,而是在wine System Tray
  3. 小程序个别字体显示不全,比如美团左上角地址显示有点问题。
  4. 浏览公众号前1秒有些闪动或者黑屏1-2秒(可能是驱动问题)。
  5. 拖动微信会有透明框,拖动完成后消失。

deb版直装说明

  1. 貌似可以菜单栏通知,没有出现wine System Tray
  2. 拖动没有透明框
  3. 设置-关于很正常。
  4. 公众号加载过程黑屏1-2秒(官方版貌似也有这个bug,可能是驱动问题),不影响浏览。
  5. 小程序个别字体显示不全,比如美团左上角地址显示有点问题(已发现是缺失aria字体,发现方法:进h5版美团,利用what font插件观察字体)。
  6. 理论上ubuntu等其它系统也可以用,不过需要装一下deepin-wine6-stable这个包,可以参考这个链接(注:这个也是我写的)
  7. image.png
  8. 网盘链接com.weixin.myself_3.4.5.27_amd64.deb

  9. 阿里云盘:https://www.aliyundrive.com/s/5FojYw61tyT 提取码:0JCp
  10. 修复小程序字体:百度链接: https://pan.baidu.com/s/1TrQl4XLigj3eT0gjDLp3Yw 提取码: reea
Reply Favorite View the author
All Replies
1 / 2
To page
川顺页
deepin
2021-12-30 04:15
#1

image.png

朋友圈功能正常。

Reply View the author
liwl
deepin
2021-12-30 04:55
#2

厉害了,可加精

Reply View the author
安洛
deepin
2021-12-30 05:51
#3

manjaro用户表示aur里面的deepin-wine微信一直都是最新版微信……

另外星火商店里面的微信不是最新版吗?

Reply View the author
云的眼泪
deepin
2021-12-30 06:40
#4

不错,点赞。

我一般都是修改files.7z文件升级的。

Reply View the author
神末shenmo
deepin
Spark-App
2021-12-30 06:40
#5

装包用apt install ./就可以自动处理依赖,没必要用dpkg -i,而且这样就不会出现装不上去

教程详细值得支持,但是想要用微信的话可以直接改官方的deb包替换文件,不必自己照着抄环境

或者用星火的版本

spk://store/store/com.qq.weixin.spark

图片.png

感谢 @sgb76


楼主是不是可以直接去统信应聘了joy 欢迎大佬给星火投递自己打包的wine应用哦

Reply View the author
川顺页
deepin
2021-12-30 06:56
#6
神末shenmo

装包用apt install ./就可以自动处理依赖,没必要用dpkg -i,而且这样就不会出现装不上去

教程详细值得支持,但是想要用微信的话可以直接改官方的deb包替换文件,不必自己照着抄环境

或者用星火的版本

spk://store/store/com.qq.weixin.spark

图片.png

感谢 @sgb76


楼主是不是可以直接去统信应聘了joy 欢迎大佬给星火投递自己打包的wine应用哦

😂 好吧。没发现星火更新微信了,上周还刷了星火,以为停更了。

这个就是拿deepin官方deb改的包,发教程就是偷个懒,说不定有人学会了下次微信更新我就能直接白嫖呢?亦或者有人简单弄个sh自动打包,类似aur,时时刻刻都是最新版?所以deb取名就比较随意,纯属教学功能。

apt install ./*.deb这个貌似听过,但是可能是从ubuntu安装sougou输入开始,已经习惯 dpkg -i + apt intall -f。所以基本很少用 apt install ./*deb

Reply View the author
jianguo922
deepin
2021-12-30 07:05
#7

谢谢分享!

Reply View the author
liwl
deepin
2021-12-30 14:49
#8
神末shenmo

装包用apt install ./就可以自动处理依赖,没必要用dpkg -i,而且这样就不会出现装不上去

教程详细值得支持,但是想要用微信的话可以直接改官方的deb包替换文件,不必自己照着抄环境

或者用星火的版本

spk://store/store/com.qq.weixin.spark

图片.png

感谢 @sgb76


楼主是不是可以直接去统信应聘了joy 欢迎大佬给星火投递自己打包的wine应用哦

大佬,星火的微信,现在有什么问题没有?

Reply View the author
element
deepin
2021-12-30 17:18
#9

这个算是一个比较详细的wine打包说明了

Reply View the author
川顺页
deepin
2021-12-30 17:45
#10
川顺页

image.png

朋友圈功能正常。

容器大的原因找到了。我手动安装了400多M字体,200M的mono组件,这两加起来600多M。

$ cd windows
$ du --max-depth=1 -lh .
48K     ./twain_32
96K     ./command
145M    ./system32
4.0K    ./logs
3.3M    ./globalization
1.6M    ./winsxs
160M    ./syswow64
4.3M    ./Microsoft.NET
242M    ./mono
48K     ./twain_64
4.0K    ./tasks
194M    ./Installer
12K     ./system
28K     ./inf
4.0K    ./temp
434M    ./Fonts
4.0K    ./help
1.2G    .

字体安装方法,打开vek,选择你的容器,右键winetricks-gui,选择默认容器,选择安装字体,然后勾选你想要的字体,然后应用即可(反正我勾选了大概80%的字体)

Reply View the author
神末shenmo
deepin
Spark-App
2021-12-30 18:38
#11
liwl

大佬,星火的微信,现在有什么问题没有?

都写在简介里了

Reply View the author
fly0512
deepin
2021-12-30 18:46
#12

支持,上次卡在bug那里了

Reply View the author
186******75
deepin
2021-12-30 22:54
#13
云的眼泪

不错,点赞。

我一般都是修改files.7z文件升级的。

你有修改好的这个文件吗?

Reply View the author
186******75
deepin
2021-12-31 00:12
#14
神末shenmo

都写在简介里了

有透明背影。这个只能官方可以去掉。

Reply View the author
云的眼泪
deepin
2021-12-31 01:09
#15
186******75

你有修改好的这个文件吗?

复制files.7z到WIN电脑,用7z软件打开,用WIN电脑安装目录的文件替换包中相应的文件。

在deepin电脑中替换掉原files.7z文件,生成 新md5码,替换掉md5文件

有可能还要修改run文件中的版本号

Reply View the author
xtcpl
deepin
2021-12-31 02:09
#16

直接安装微信不好吗?

Reply View the author
川顺页
deepin
2021-12-31 04:07
#17
xtcpl

直接安装微信不好吗?

貌似不行,会有很多bug.

Reply View the author
kirin2020
deepin
2022-01-06 22:39
#18

感谢楼主的奉献,不过说老实话,如果 能有大侠出一个能自动打包的软件该有多好呀。 能打成deb包,也可以打成rpm包。这才是最实用的工具, 有了它可以自由打包分享软件。

Reply View the author
川顺页
deepin
2022-01-07 00:05
#19
kirin2020

感谢楼主的奉献,不过说老实话,如果 能有大侠出一个能自动打包的软件该有多好呀。 能打成deb包,也可以打成rpm包。这才是最实用的工具, 有了它可以自由打包分享软件。

有人做过,但是效果不佳,linux的依赖太复杂了,版本不一样,有时候都有出Bug,所以想找一个通用的,万能打包工具在linux上比较难,一般都是用各种shell脚本或者垮平台语言才能实现。

目前已经可以实现运行shell打包wine微信到deb文件了,rpm的话,没有这个需求。

Reply View the author
jianguo922
deepin
2022-02-13 06:25
#20

感谢楼主分享

Reply View the author
1 / 2
To page