Linux 下使用 Wine 安装运行 TM2008 Beta 及相关问题解决
本文也同步發(fā)布到 rainux.org:Linux 下使用 Wine 安裝運(yùn)行 TM2008 Beta 及亂碼、與 Windows 共享聊天記錄等相關(guān)問(wèn)題的解決
?
前言
騰訊已經(jīng)發(fā)布了官方的 QQ for Linux,雖然有很多問(wèn)題,例如沒(méi)有 amd64 版本,功能太弱,聊天記錄格式與 Windows 下的 QQ/TM 格式不一致等等,但無(wú)疑是 Linux 里使用 QQ/TM 最簡(jiǎn)單的方案。如果它已經(jīng)能滿(mǎn)足你的需求了,那么不必浪費(fèi)時(shí)間看本文。
精簡(jiǎn)版本
如果你沒(méi)時(shí)間看我嘮叨,精簡(jiǎn)的版本是:TM2008 Beta 運(yùn)行需要 Unicode 版本的 IE6、rpcrt4.dll、Visual C++ 2005 SP1 運(yùn)行庫(kù),安裝程序需要 GDI+。不可以使用 IEs4Linux ,因?yàn)樗惭b的 IE6 及相關(guān)運(yùn)行庫(kù)是 Win9x 的 ANSI 版本。必須使用 CrossOver Games 里的 rpcrt4.dll ,然后用 winetricks 安裝 msxml3 gdiplus riched20 riched30 ie6 vcrun6 vcrun2005sp1 即可安裝運(yùn)行 TM2008 Beta。
詳細(xì)版本
只看精簡(jiǎn)版沒(méi)搞定?請(qǐng)看詳細(xì)的(嘮叨的)版本:
?
安裝 Wine,運(yùn)行一下 winecfg,讓它生成一個(gè)干凈的 ~/.wine 目錄。如果要使用已有的 ~/.wine,請(qǐng)先將其備份。同時(shí)確保 winecfg 里設(shè)置的 Windows 版本至少是 Windows 2000(我用的是 Wine 1.x 默認(rèn)的 Windows XP)。
?
獲取一份 CrossOver Games 里的 rpcrt4.dll ,將其復(fù)制為 ~/.wine/drive_c/windows/system32/rpcrt4.dll(覆蓋已有的文件),運(yùn)行 winecfg,在 Libraries -> DLL Overrides 里將 rpcrt4 設(shè)置為 Native (Windows)。
?
下載 winetricks ,使用它安裝 IE6 和一些重要的運(yùn)行庫(kù)。如果這個(gè)過(guò)程失敗,刪除 ~/.wine(或者恢復(fù)備份的 ~/.wine)并從頭再來(lái)。
sh winetricks msxml3 gdiplus riched20 riched30 ie6 vcrun6 vcrun2005sp1此時(shí)如果你有 Windows 上安裝好的 TM2008,它已經(jīng)可以運(yùn)行了,但是無(wú)法登錄,會(huì)提示“網(wǎng)絡(luò)連接失敗,請(qǐng)檢查網(wǎng)絡(luò)。”。所以還是老老實(shí)實(shí)用安裝程序裝一次吧。這里有個(gè)很莫名的問(wèn)題,如果直接使用 Wine 運(yùn)行 TM2008 安裝程序,它很可能會(huì)直接崩潰,看不到任何圖形界面的提示。而使用 Wine 運(yùn)行一個(gè)其它的程序,例如 cmd.exe 或者 Total Commander,再用這個(gè)程序去啟動(dòng) TM2008 安裝程序則不會(huì)有任何問(wèn)題。
中文亂碼(空心方框)問(wèn)題
好吧,終于看到 TM2008 的安裝界面了,不過(guò)很可能你又會(huì)頭大了——所有的中文全是空心方框。原因是安裝程序界面的字體是被指定為 Tahoma 的,而實(shí)際上 Tahoma 字體并不包括中文字符。有兩個(gè)辦法解決,都是 Windows 的技術(shù),把 Tahoma 字體替換成某個(gè)中文字體,或者把某個(gè)中文字體鏈接到 Tahoma 上。照這兩個(gè)片段修改 ~/.wine/system.reg,只需要其中一個(gè)。別忘了把中文字體名改成你自己需要的。
[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes] "MS Shell Dlg"="Microsoft YaHei" "MS Shell Dlg 2"="Microsoft YaHei" "Tahoma"="Microsoft YaHei"[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontLink\\SystemLink] "Tahoma"=str(7):"SimSun.TTC,SimSun\0"最后還必須把你改的中文字體文件符號(hào)鏈接到 ~/.wine/drive_c/windows/Fonts 目錄下,不這么做其它軟件都沒(méi)問(wèn)題,就 QQ 或 TM 會(huì)亂碼,該死的硬編碼。
查看聊天記錄時(shí)的性能問(wèn)題
好了,現(xiàn)在不會(huì)有什么問(wèn)題阻擋你了,TM2008 Beta 安裝和啟動(dòng)都非常順利,使用也很穩(wěn)定。甚至 QQ2009 Preview4 都可以安裝并啟動(dòng),不過(guò)使用時(shí)很容易崩潰。但是如果你像我這樣瘋狂地保存了七八年的聊天記錄,你會(huì)發(fā)現(xiàn):
- 每次啟動(dòng) TM2008 后第一次給任何人發(fā)消息都會(huì)導(dǎo)致 TM2008 失去響應(yīng)將近 20 秒鐘,之后繼續(xù)發(fā)消息則不會(huì)有問(wèn)題。第一次接收到某人的消息也會(huì)同樣如此。
- 任何試圖查看聊天記錄的操作都會(huì)導(dǎo)致 TM2008 消耗 100% CPU 并且很長(zhǎng)時(shí)間沒(méi)有反應(yīng),等待足夠長(zhǎng)的時(shí)間后才可以看到聊天記錄。
這是由于 TM2008 的聊天記錄數(shù)據(jù)庫(kù)使用了 Windows 的 Structured Storage 技術(shù),而其 API 庫(kù) ole32.dll 的 Wine 實(shí)現(xiàn)還不完善或者可能性能太低。雖然可以用 winetricks 安裝 dcom98 來(lái)獲取一個(gè) Win9x 的 ANSI 版本的 ole32.dll,但它沒(méi)法讓 Unicode 版本的 TM2008 運(yùn)行起來(lái)。搜遍了網(wǎng)絡(luò)也找不到在 Wine 里使用 Win2k 以上系統(tǒng)的 ole32.dll 的方法。沒(méi)辦法,為了保持聊天記錄的一致性,只有兩個(gè)選擇。要么不在 Linux 里看聊天記錄;要么把聊天記錄數(shù)據(jù)庫(kù) Msg2.0.db 備份并從 QQ Profile 目錄(我的文檔\QQ Files\QQ 號(hào)碼)里刪除,讓 TM2008 自己生成一個(gè)空白的 Msg2.0.db,暫時(shí)拋棄歷史包袱,以后再到 Windows 下把新的記錄導(dǎo)出為備份文件后合并到老的數(shù)據(jù)庫(kù)里。
與 Windows 共享聊天記錄
如果你還像我這樣偶爾會(huì)切換到 Windows,希望跟 Windows 下的 TM2008 共享聊天記錄數(shù)據(jù)庫(kù),那么有兩個(gè)辦法:
- 直接在 Linux 里使用 ntfs-3g 讀寫(xiě)存放 TM2008 聊天記錄的 NTFS 分區(qū)。雖然 ntfs-3g 已經(jīng)號(hào)稱(chēng)非常穩(wěn)定可靠了,但對(duì)于聊天記錄這種極度個(gè)人化的數(shù)據(jù)我還是寧可保守一些。
- 創(chuàng)建一個(gè) ext2 分區(qū)用來(lái)和 Windows 共享數(shù)據(jù),在 Windows 下可以用 Ext2 IFS 驅(qū)動(dòng)來(lái)訪(fǎng)問(wèn)它。比起私有文件系統(tǒng) NTFS 的 Linux 版開(kāi)源驅(qū)動(dòng)來(lái)說(shuō),當(dāng)然是開(kāi)源的 ext2 文件系統(tǒng)的 Windows 版驅(qū)動(dòng)更值得信賴(lài)。
用這兩種辦法都需要在 Linux 和 Windows 里創(chuàng)建 QQ Files 目錄的符號(hào)鏈接,Linux 里不必說(shuō),ln -s 即可。Windows Vista 以前的版本可以用 Junction 來(lái)創(chuàng)建 NTFS 上的符號(hào)鏈接,Windows Vista 可以用自帶的 MKLINK。
?
對(duì)于我這種非筆記本用戶(hù)來(lái)說(shuō)使用日志文件系統(tǒng)來(lái)抵御意外斷電是必須的。按照 Ext2 IFS 的 FAQ ,它也可以讀寫(xiě) ext3 分區(qū)。不過(guò)比較新的 Linux 發(fā)行版的 mkfs.ext3 創(chuàng)建的 ext3 分區(qū) Ext2 IFS 是無(wú)法訪(fǎng)問(wèn)的,可能是 ext3 文件系統(tǒng)格式發(fā)生了變化。而 Windows 下一些分區(qū)工具如 Paragon Partition Manager 或 Acronis Disk Director 創(chuàng)建的 ext3 分區(qū)則沒(méi)有問(wèn)題。
參考資料
- Howto: Office 2007 on Linux with Wine
- Microsoft Office 2007 Update
總結(jié)
以上是生活随笔為你收集整理的Linux 下使用 Wine 安装运行 TM2008 Beta 及相关问题解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2020年中国洪涝受灾人口数、死亡失踪人
- 下一篇: linux 家目录没有ssh文件夹,ss