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