别再到处找安装包了!手把手教你用Deepin-Wine把Windows版QQ打包成Deb,在UOS/Deepin上自己动手
深度定制:用Deepin-Wine打造专属Windows软件Deb包的终极指南
每次打开UOS或Deepin的应用商店,发现QQ版本还停留在两年前,而同事的Windows电脑上早已用上了最新功能——这种体验对Linux桌面用户来说太熟悉了。官方软件源更新滞后的问题,让许多用户不得不放弃心仪的功能,或者冒险使用来路不明的第三方打包。其实,你完全有能力自己动手,将最新版Windows软件打包成可靠的Deb安装包,彻底摆脱版本滞后的困扰。
1. 为什么需要自己打包Windows软件
Linux桌面生态一直面临着软件匮乏的挑战,特别是国内常用软件的支持往往不尽如人意。Deepin团队开发的Deepin-Wine技术,通过在Linux上运行Windows程序,部分缓解了这一难题。但官方仓库的软件版本更新速度,常常跟不上Windows原版的节奏。
自己打包Windows软件到Deb包的核心优势在于:
- 版本自由:不再受限于发行版维护者的更新节奏,随时可以使用最新版本
- 功能完整:官方原版的所有功能都能得到保留,避免社区版可能的阉割
- 系统集成:打包后的Deb可以完美融入系统,像原生应用一样管理
- 个性定制:可以按需调整软件配置,加入自己需要的补丁或插件
提示:虽然本文以QQ为例,但同样的方法适用于大多数基于Deepin-Wine的Windows软件打包,如微信、钉钉等。
2. 准备工作与环境配置
2.1 基础工具安装
在开始之前,确保你的Deepin或UOS系统已经安装了必要的工具:
sudo apt update sudo apt install p7zip-full deepin-wine5 dpkg-dev -y这些工具各司其职:
- p7zip:用于处理压缩文件
- deepin-wine5:运行Windows程序的核心环境
- dpkg-dev:构建Deb包所需的工具链
2.2 创建纯净的Wine容器
为了避免与系统已有配置冲突,我们为QQ创建一个独立的Wine容器:
WINEARCH=win32 WINEPREFIX=~/.deepinwine/qq deepin-wine5 winecfg这条命令做了三件事:
WINEARCH=win32指定创建32位环境(多数Windows软件兼容性更好)WINEPREFIX设置容器的存储位置winecfg初始化配置并生成容器目录
2.3 解决中文显示问题
Windows程序在Linux下常见的中文乱码问题,通常是由于字体缺失造成的。将中文字体复制到Wine容器的字体目录:
cp ./simsun.ttc ~/.deepinwine/qq/dosdevices/c:/windows/Fonts/ cp ./simsun.ttc ~/.deepinwine/qq/dosdevices/c:/windows/Fonts/Tahoma.ttc3. 软件安装与初始配置
3.1 获取最新版QQ安装包
直接从腾讯官网下载最新版的QQ安装程序:
wget https://down.qq.com/qqweb/PCQQ/PCQQ_EXE/PCQQ2021.exe注意:URL中的版本号可能会随时间变化,建议访问官网获取最新下载链接。
3.2 在Wine容器中安装QQ
使用指定前缀运行安装程序:
WINEPREFIX=~/.deepinwine/qq deepin-wine5 PCQQ2021.exe安装过程中,Wine会模拟Windows环境,所有文件将被安装到~/.deepinwine/qq虚拟的C盘中。安装完成后,你可以在以下位置找到相关文件:
- 桌面图标:
~/.local/share/icons/hicolor/ - 快捷方式:
~/.local/share/applications/
4. 逆向工程官方Deb包
4.1 获取基础模板包
我们需要一个官方QQ的Deb包作为模板,从中提取打包所需的框架:
apt download com.qq.im.deepin这个命令会下载当前仓库中的QQ Deb包,而不会安装它。
4.2 解包分析结构
Deb包实际上是一个ar归档文件,包含三个主要部分:
- debian-binary:格式版本号
- control.tar.gz:包含包的控制信息
- data.tar.gz:包含实际要安装的文件
我们使用dpkg工具解包:
mkdir -p package/extract/DEBIAN dpkg -x com.qq.im.deepin_9.3.2deepin20_i386.deb package/extract/ dpkg -e com.qq.im.deepin_9.3.2deepin20_i386.deb package/extract/DEBIAN/解包后的目录结构如下:
package/ └── extract/ ├── DEBIAN/ │ ├── control │ ├── md5sums │ └── ... └── opt/ └── apps/ └── com.qq.im.deepin/ ├── entries/ ├── files/ └── info5. 关键文件修改与定制
5.1 更新版本信息
我们需要修改多处版本号以匹配新安装的QQ版本:
sed -i 's@9.3.2@9.4.8@g' package/extract/opt/apps/com.qq.im.deepin/info sed -i 's@9.3.2@9.4.8@g' package/extract/opt/apps/com.qq.im.deepin/files/run.sh sed -i 's@9.3.2@9.4.8@g' package/extract/DEBIAN/controlinfo文件是Deepin软件包的核心配置文件,其结构如下:
{ "appid": "com.qq.im.deepin", "name": "QQ", "version": "9.4.8deepin20", "arch": ["i386"], "permissions": { "autostart": false, "notification": false, "trayicon": true, "clipboard": true, "account": false, "bluetooth": false, "camera": true, "audio_record": true, "installed_apps": false } }5.2 替换核心文件
将我们新安装的QQ文件替换模板包中的旧版本:
cd package/extract/opt/apps/com.qq.im.deepin/files rm files.7z 7z a files.7z ~/.deepinwine/qq/*这个步骤将整个Wine容器压缩打包,替换原有的files.7z文件。7z格式提供了较好的压缩率,适合包含大量小文件的Windows程序。
6. 构建最终的Deb包
6.1 生成文件校验信息
为确保包完整性,我们需要为所有文件生成MD5校验和:
cd package find extract/opt -type f -print0 | xargs -0 md5sum > md5sums mv md5sums extract/DEBIAN/md5sums6.2 执行打包命令
一切准备就绪后,使用dpkg-deb工具构建最终的Deb包:
mkdir build dpkg-deb -b extract/ build/成功执行后,你会在build目录下找到新生成的Deb包,文件名类似于com.qq.im.deepin_9.4.8deepin20_i386.deb。
7. 测试与安装
7.1 清理测试环境
在安装新包之前,建议清理之前的Wine容器以避免冲突:
rm -rf ~/.deepinwine/qq7.2 安装自定义包
使用dpkg安装你亲手打造的Deb包:
sudo dpkg -i build/com.qq.im.deepin_9.4.8deepin20_i386.deb安装完成后,你可以在应用菜单中找到QQ,它将以最新版本运行,同时完美集成到Deepin/UOS的桌面环境中。
7.3 常见问题排查
如果遇到问题,可以检查以下几个方面:
- 版本号一致性:确保所有文件中的版本号都已正确更新
- 文件权限:检查打包过程中是否有文件权限被意外修改
- 依赖关系:使用
sudo apt install -f修复可能的依赖问题 - Wine配置:如果程序无法启动,尝试重新创建Wine容器
8. 进阶技巧与扩展应用
掌握了基本打包方法后,你可以进一步优化和扩展:
- 多版本共存:通过修改appid和安装路径,实现同一软件的多个版本并存
- 预配置:在打包前对Wine容器进行调优,如注册表修改、DLL覆盖等
- 自动更新:编写脚本自动检测新版本并重新打包
- 界面美化:替换程序图标和桌面文件,使其更符合Linux桌面风格
对于需要频繁更新的软件,可以考虑将整个过程脚本化。下面是一个简化版的自动化脚本框架:
#!/bin/bash VERSION="9.4.8" DOWNLOAD_URL="https://down.qq.com/qqweb/PCQQ/PCQQ_EXE/PCQQ2021.exe" # 清理旧容器 rm -rf ~/.deepinwine/qq # 创建新容器并安装QQ WINEARCH=win32 WINEPREFIX=~/.deepinwine/qq deepin-wine5 winecfg cp simsun.ttc ~/.deepinwine/qq/dosdevices/c:/windows/Fonts/ wget -O PCQQ.exe "$DOWNLOAD_URL" WINEPREFIX=~/.deepinwine/qq deepin-wine5 PCQQ.exe # 打包过程 apt download com.qq.im.deepin mkdir -p package/extract/DEBIAN dpkg -x com.qq.im.deepin_*.deb package/extract/ dpkg -e com.qq.im.deepin_*.deb package/extract/DEBIAN/ # 更新版本信息 sed -i "s@9.3.2@$VERSION@g" package/extract/opt/apps/com.qq.im.deepin/info sed -i "s@9.3.2@$VERSION@g" package/extract/opt/apps/com.qq.im.deepin/files/run.sh sed -i "s@9.3.2@$VERSION@g" package/extract/DEBIAN/control # 替换文件 cd package/extract/opt/apps/com.qq.im.deepin/files rm -f files.7z 7z a files.7z ~/.deepinwine/qq/* # 构建deb包 cd ../../../../../.. find package/extract/opt -type f -print0 | xargs -0 md5sum > package/md5sums mv package/md5sums package/extract/DEBIAN/ mkdir -p package/build dpkg-deb -b package/extract/ package/build/这个脚本可以保存为update-qq.sh,每次需要更新时,只需修改版本号和下载URL,然后运行脚本即可自动完成所有步骤。
