欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

在Linux上使用Wine安装轻聊版的QQ的步骤讲解

程序员文章站 2023-02-17 15:10:30
这篇文章主要介绍了在Linux上使用Wine安装轻聊版的QQ的步骤讲解,Wine环境中运行并不算完美但起码是Linux下想用QQ的一种解决方案,需要的朋友可以参考下... 15-12-05...

准备 wine 环境
wine 版本要求,越新越好,我用的 1.7.55,目前最新是1.8rc2。

删除或者备份你的 ~/.wine,如果你之前运行过 wine 的话。因为涉及到少量配置,尽量不要让以前的环境干扰你。

配置 wine
运行 winecfg,在“应用程序”页签底部,“windows版本”,选择为"8.1"。8.0可能也是可以的,但我选的是8.1。

设置为 windows 8.1,打开所有外部链接,比如 qq 空间等,会使用内置的 ie 浏览器(gecko win32 引擎)。如果不喜欢这个行为,可以用 winecfg 修改为"windows xp",增加一个 qqprotect.exe 设置,将其单独设置为 "windows 8.1" 即可。

安装 qq 轻聊版
下载安装
下载 qq7.7light.exe,有官方去广告版我们就用官方去广告版好了。去下载。别人做的我信不过。
在Linux上使用Wine安装轻聊版的QQ的步骤讲解

安装命令:

复制代码
代码如下:
winedebug=-all wine ./qq7.7light.exe

加 winedebug=-all 的目的是避免安装过程中的各种调试信息和 warning 信息,因为没必要看。

耐心等待,直到安装完成。(最后的组件注册时间会比较长,耐心等待)。安装过程无任何注意事项。

安装完成,qq 登录窗口出现,先退出即可,因为这时候是无法输入的(我们需要替换几个 dll 才行)。

替换 dll
首先下载 dll :riched20.dll 和 iphlpapi.dll。

riched20.dll 下载win7版本的
iphlpapi.dll 下载 windows 2008版本的
然后替换 dll:

复制代码
代码如下:

cd .wine/drive_c/windows/system32
mv iphlpapi.dll iphlpapi.dll.bak
mv riched20.dll riched20.dll.bak

将下载的两个dll拷贝到此处。

修改注册表

复制代码
代码如下:

vi ~/.wine/user.reg

添加:

复制代码
代码如下:

[software\\wine\\dlloverrides] 1447325077 6869640
#time=1d11d37208b6b08
"*iphlpapi"="native"
"*riched20"="native,builtin"
"*qcap"=""
"txplatform.exe"=""
"txupd.exe"=""

说明
禁用 qcap 的原因是“禁用本地摄像头”(如果有的话),因为 wine 目前的摄像头处理跟 qq 所需要调用的接口仍有差距,本地摄像头打开会崩溃,结果是视频聊天时如果使用了本地摄像头会崩溃。禁用后,虽然不能使用本地的视频,但远程的视频可以正常使用。这个问题,可以通过修改wine的代码来搞定。(有时间再搞吧)。
替换 riched20.dll,是为了让“登录对话框可以输入”。
替换 iphlpapi.dll,是避免登录后的崩溃退出。
禁用 txplatform.exe,是因为这个进程在 wine qq 退出后不退出,对于 windows 倒是无所谓,对于 linux 来说,这意味着后台跑着一堆 wine 进程。
禁用 txupd.exe,是因为它在后台定期检查更新时会偶发崩溃,不影响使用,但总弹“wine 崩溃对话框”也是不好的。


替换字体
如果不使用 simsun 字体,其实没必要使用 simsun,更没必要使用什么 corefont

wine 的字体位于 /usr/share/wine/fonts/ 我只保留了 dejavu 系列 ttf 字体和 sourcehansanscn-normal.otf,对于中文环境来说已经足够了。

因为 windows 下的软件字体调用比较乱,有时候会 fallback 到 simsun 或者“宋体”,替换的目的是“当软件请求宋体时,使用我们的替代字体”,这可以解决到几乎所有的"中文方框问题"。如果不做替换(也没有使用 simsun),qq 的某些界面字体可能会显示成“方框”。

替换方法是:

找到 ~/.wine/user.reg 中的 [software\\wine\\fonts\\replacements],如果没有就自己加入。

复制代码
代码如下:

[software\\wine\\fonts\\replacements] 1448856028 1650250
#time=1d12b23a623844a
"nsimsun"="\x601d\x6e90\x9ed1\x4f53 cn normal"
"simsun"="\x601d\x6e90\x9ed1\x4f53 cn normal"
"\x5b8b\x4f53"="\x601d\x6e90\x9ed1\x4f53 cn normal"
"\x65b0\x5b8b\x4f53"="\x601d\x6e90\x9ed1\x4f53 cn normal"

后面的字提名按照你的实际情况来写。记得以后不用再装 simsun 或者什么 winetricks corefont 了,这个方法适用于所有字体显示为“方框”的情况,比如“网易云音乐”客户端。

运行qq

复制代码
代码如下:

cd ~/.wine/drive_c/program files/tencent/qqlite/bin
winedebug=-all wine ./qq.exe

如果你系统的 wine 会自建菜单项,也可以使用菜单项运行。

保留环境
wine 可以通过 wineprefix 变量保留多个 wine 环境。

复制代码
代码如下:

mv ~/.wine qqlite
cd qqlite

添加一个脚本“qq”,内容如下:

复制代码
代码如下:

#!/bin/bash
exepath=$(cd `dirname $0`; pwd)
export wineprefix=$exepath
export winedebug=-all
export lang=zh_cn.utf-8
export lc_all=zh_cn.utf-8
cd "$exepath/drive_c/program files/tencent/qqlite/bin"
wine qq.exe

自己保存好 qqlite 这个目录,以后可以放在任何地方运行。视频单向,语音双向,演示桌面等都是可以正常使用的。

残留问题
理论上这些可以通过修改 wine 代码解决

不能保存密码和自动登录。
密码输入框有点难点,用弹出小键盘输入或者轮换点击账号密码框1,2次就可以输入了。
本地摄像头被禁用(暂时的,以后都会好的)
某些窗口,比如“文件列表窗口”不接受窗口管理器管理,点开后可能“x”不掉,偶尔可以用“系统任务栏”关闭窗口,无碍,少点就可以了,如果 hang 了可以退出重新登录。
离线后无法再上线,只能退出重新登录。
其他各种小问题。
如果只是正常的使用聊天功能,一整天加休眠等应该都没什么问题,我还没遇到拖慢系统,崩溃,无法退出等问题。

ps:wine (“wine is not an emulator” 的递归缩写)是一个能够在多种 posix-compliant 操作系统(诸如 linux,mac osx 及 bsd 等)上运行 windows 应用的兼容层。另外英语单词wine是葡萄酒的意思。
wine (wine is not an emulator)[即wine不是一个模拟器]是一个在linux和unix之上的,windows 3.x和 windows apis的实现。注意,wine不是windows模拟器,而是运用api转换技术实做出linux对应到windows相对应的函数来调用dll以运行windows程序。wine可以工作在绝大多数的unix版本下,包括linux, freebsd, 和 solaris。另外,也有适用于mac os x的wine程序。wine不需要microsoft windows, 因为这是一个完全由百分之百的免费代码组成的。如果有可利用的副本的话,它也可以随意地使用本地系统的dlls。wine的发布是完全公开源代码的,并且是免费发行的。(基于lgpl发布:gnu宽通用公共许可证)
关于wine的真正含义,有人对“wine is not an emulator”的说法表示质疑,认为”非模拟器“的解释不过是一种娱乐性的说法,wine的真实意思应当是是windows enviroment的缩写,即wine。