在Linux上使用Wine安裝輕聊版的QQ的步驟講解

準備 Wine 環境

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

刪除或者備份你的 ~/.wine,若是你以前運行過 wine 的話。由於涉及到少許配置,儘可能不要讓之前的環境干擾你。api

配置 Wine
運行 winecfg,在「應用程序」頁籤底部,「Windows版本」,選擇爲"8.1"。8.0可能也是能夠的,但我選的是8.1。瀏覽器

設置爲 windows 8.1,打開全部外部連接,好比 qq 空間等,會使用內置的 IE 瀏覽器(gecko win32 引擎)。若是不喜歡這個行爲,能夠用 winecfg 修改成"Windows XP",增長一個 QQProtect.exe 設置,將其單獨設置爲 "Windows 8.1" 便可。bash

安裝 QQ 輕聊版
下載安裝
下載 QQ7.7Light.exe,有官方去廣告版咱們就用官方去廣告版好了。去官方網站下載。別人作的我信不過。
2015125120602929.jpg (917×673)ide

安裝命令:函數

WINEDEBUG=-all wine ./QQ7.7Light.exe字體

加 WINEDEBUG=-all 的目的是避免安裝過程當中的各類調試信息和 warning 信息,由於不必看。網站

耐心等待,直到安裝完成。(最後的組件註冊時間會比較長,耐心等待)。安裝過程無任何注意事項。ui

安裝完成,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。

相關文章
相關標籤/搜索