接下來(lái)的幾天里,我會(huì )陸續放出我的便攜版Firefox制作方法全教程,這個(gè)教程也是我制作便攜版Firefox至今的心得和體會(huì ),盡力讓大家在看完教程后都能制作屬于自己的便攜版Firefox。今天先從制作便攜版Firefox的第一步——選擇合適的Firefox主程序開(kāi)始。
Firefox是一個(gè)鼎鼎大名的開(kāi)源軟件,正由于它的名氣和開(kāi)源使得Firefox存在許多非官方的版本,算上官方的版本,這種種版本的選擇就成了一個(gè)問(wèn)題。
常見(jiàn)的第三方編譯版Firefox大家可以點(diǎn)擊這里查看。除去官方原版,國內使用的最多的第三方編譯版本就是tete009和綾川編譯的版本(注意,綾川的網(wǎng)站需使用代理才能訪(fǎng)問(wèn))。這三個(gè)版本在本質(zhì)上并沒(méi)有太大的區別,簡(jiǎn)單的說(shuō):
官方的版本注重的是穩定性和兼容性;
而tete009則比較注重技術(shù)的創(chuàng )新,他的版本在圖形繪制上略有優(yōu)勢,tete009的Firefox默認只對SSE指令集做了優(yōu)化,如果想對SSE2指令集也進(jìn)行優(yōu)化可下載tete009主頁(yè)上的支持SSE2指令集優(yōu)化的tmemutil.dll,替換tete009的Firefox中的默認文件即可,不過(guò)實(shí)際性能的提升相當有限;
綾川的版本最近在天朝蔓延的速度很快,雖然我也比較喜歡他的版本,但實(shí)際上他的版本是比較偏激的,他的版本里也有用到tete009的部分優(yōu)化技術(shù),并且非常追求新的編譯器,一直使用VS2008、VS2008SP1的,所以他的版本默認是需要安裝VC++2008或者VC++2008SP1運行庫才能正常運行的,當然,為了制作便攜版程序,我們也可以直接集成所需要的運行庫,這在后面會(huì )有提到。
就JavaScript性能來(lái)說(shuō)是綾川的最好,tete009的次之,官方的最差;但自從Firefox3.0Beta5時(shí)JavaScript性能大幅度提升后官方的版本性能比也不是太差,所以這三個(gè)版本在得分上的差距換算到實(shí)際使用恐怕只有幾十毫秒的差距。當然,官方的3.1并打開(kāi)TraceMonkey除外,這個(gè)性能提升太大了!綜合考慮性能、兼容性等各個(gè)方面,我更傾向于使用tete009的版本。至于你用什么版本,還得由你自己的使用環(huán)境說(shuō)決定。
下面我來(lái)說(shuō)說(shuō)上面提到的三個(gè)版本制作便攜版程序所需要的一些基本處理:
便攜版程序需要的是程序體積盡量小巧,以減少程序運行時(shí)對宿主設備的讀寫(xiě),對于傳輸速度普遍較慢的便攜存儲設備比較有利,所以程序的精簡(jiǎn)的必須的。
獲得官方版本最簡(jiǎn)單的方法就是下載網(wǎng)上發(fā)布的最新簡(jiǎn)體中文版Firefox,在本機上安裝,然后提取出安裝文件夾下的所有文件;或者也可以直接到Mozilla FTP下載最新的Nightly版,解壓即可獲得Firefox的主程序。而精簡(jiǎn)也主要集中在一些無(wú)用的文本類(lèi)文件、字典文件等。一般根目錄下只需保留application.ini、blocklist.xml、browserconfig.properties和platform.ini四個(gè)文本文件即可,其余文本類(lèi)型的文件均可刪除(注意:名為.autoreg的文件不要刪)。Uninstall文件夾也沒(méi)有用,可以刪除。
tete009的版本下載后除了和官方原版一樣的處理之外,另外還可以把除firefox.exe之外的所有exe程序刪除,另外還有一個(gè)名為Source的文件夾,是tete009的源代碼,也可以刪除。
綾川的版本相對干凈,只需要和官方版本一樣處理即可,只不過(guò)制作便攜版我們還需要集成綾川版所需要的運行庫,在安裝了VC++2008或者vc++2008sp1的機子上提取出vcomp90.dll和Microsoft.VC90.OpenMP.manifest兩個(gè)文件,放在firefox.exe的同一目錄下即可。
另外tete009和綾川的版本下載后默認都只有英語(yǔ)一種語(yǔ)言,所以我們需要加入簡(jiǎn)體中文語(yǔ)言文件,我們可以從官方版本的chrome文件夾里提取出zh-CN.jar和zh-CN.manifest兩個(gè)簡(jiǎn)體中文語(yǔ)言文件,然后放到tete009和綾川的同一文件夾下;或者也可以從Mozilla FTP下載對應版本的語(yǔ)言插件,然后用7z或者WinRAR解壓這個(gè)插件,即可獲得zh-CN.jar和zh-CN.manifest兩個(gè)語(yǔ)言文件。
當然,你也可以用Restorator等資源編輯工具把tete009或者綾川的Firefox.exe主程序的圖標改成Firefox正式版的圖標,這個(gè)怎么操作這里就不多講了。
到這里,Firefox主程序的處理就差不多了。
第一篇教程我已經(jīng)介紹了Firefox主程序的選擇和處理,這次我要講的是Firefox的擴展和插件。擴展和插件是不一樣的,擴展是指AdblockPlus、Download Statusbar等用于提升用戶(hù)體驗的組件;而插件則是Flash、WMP等能擴充Firefox的底層功能的組件。
在便攜版Firefox的制作中,擴展和插件的集成是相當重要的一個(gè)環(huán)節,甚至有些做得粗糙的便攜版Firefox就是原版集成幾個(gè)擴展及插件而已。我有時(shí)候也會(huì )下載別人做的便攜版Firefox,但幾乎每次總能看到塞得滿(mǎn)滿(mǎn)的擴展文件夾和插件文件夾,每次看到這里我就會(huì )直接把那個(gè)版本刪了,因為從這兒我就可以看出這個(gè)版本根本沒(méi)有任何借鑒價(jià)值,這個(gè)便攜版的作者也沒(méi)有用心的在做Firefox。Firefox的擴展和插件是很多的,這是他的優(yōu)勢,但也會(huì )帶來(lái)一些負面的影響。安裝過(guò)多的擴展和插件會(huì )影響到程序的啟動(dòng)和運行速度,增加資源占用。碰到制作不規范的甚至會(huì )導致Firefox的崩潰,所以對于擴展和插件我們應抱著(zhù)能不裝則不裝的心態(tài)來(lái)對待。
以現在流行的Firefox3為例,就是有很多人喜歡裝Fasterfox這個(gè)擴展,這個(gè)擴展官方就沒(méi)有提供對Firefox3的支持,但很多網(wǎng)友就是修改也要讓這個(gè)擴展強行支持Firefox3。其實(shí)在Mozilla的論壇上早有討論了,這個(gè)擴展在有限提升性能的同時(shí)會(huì )帶來(lái)不少兼容性問(wèn)題,在Firefox2下尚是如此,Firefox3下其實(shí)這個(gè)擴展根本發(fā)揮不了任何作用,他也只是修改了Firefox的配置文件中的幾個(gè)參數而已,那么我們還不如手工修改來(lái)的好。還有迅雷官方的擴展,那個(gè)擴展是為Firefox2準備的,經(jīng)過(guò)修改雖然能在Firefox3下使用但會(huì )造成一些菜單項的失效。盡管有網(wǎng)友的修改版解決了這些問(wèn)題,但安裝一個(gè)通用的FlashGot不是更好嗎?有人說(shuō)用FlashGot右鍵沒(méi)有下載項,不方便。那么,看圖:

Firefox的版本更新永遠是走在擴展的版本更新之前的,下面我來(lái)說(shuō)下讓原本不支持新版本Firefox的擴展支持新版本的方法,總體來(lái)說(shuō)有三種:
1、安裝Nightly Tester Tools這個(gè)擴展,安裝了這個(gè)擴展后就能安裝原本不支持的擴展了。
2、在地址欄輸入about:config,運行后新建兩個(gè)布爾值,名字分別為extensions.checkCompatibility和extensions.checkUpdateSecurity,值都為false。


再來(lái)說(shuō)下擴展的精簡(jiǎn):一般一個(gè)擴展下載下來(lái)里面都包含多國語(yǔ)言的,而我們最多用到英簡(jiǎn)繁三種,所以我們也只需要保留這三種即可。
1、把下載下來(lái)的擴展的后綴從xpi改為zip,然后用壓縮軟件解壓到一個(gè)文件夾,諸如擴展的文件名是download_statusbar-0.9.6.3-fx,則解壓到名為download_statusbar-0.9.6.3-fx的文件夾中,打開(kāi)這個(gè)文件夾,找到chrome.manifest的文件,用記事本打開(kāi)這個(gè)文件,找到locale開(kāi)頭的幾行,然后把除en-US、zh-CN和zh-TW的其他行刪掉。
2、進(jìn)入名為chrome的文件夾,這時(shí)候有兩種情況:
(1)、進(jìn)入后全是文件夾,則進(jìn)入名為local的文件夾,刪除除en-US、zh-CN和zh-TW的其他文件夾。
(2)、進(jìn)入后只有一個(gè)后綴為jar的文件,則把這個(gè)文件的后綴改成zip,然后解壓到一個(gè)文件夾,進(jìn)入這個(gè)文件夾,一般見(jiàn)到的是這樣的視圖:

還有問(wèn)題更多的插件,絕大多數便攜版或者綠色版的Firefox中都會(huì )集成一大堆的插件,什么Java、QuickTime、SilverLight、 Office03/07和PDF等等等等,但他們真的測試過(guò)這些插件嗎?他們知道這些插件在什么情況下能工作嗎?
Java,其實(shí)根本沒(méi)必要安裝插件,你系 統里裝了Java RunTime的話(huà)Firefox自己會(huì )找到相應的插件,自己裝的甚至反而可能出現版本對不上的情況,沒(méi)裝的話(huà)就算你裝了插件也沒(méi)用,只是一個(gè)占了茅坑不 拉SHI的家伙;
QuickTime的插件很多,有6~7個(gè),但絕大多數需要系統里裝有QuickTime才會(huì )生效,而且絕大多數插件的功能是在線(xiàn)播放一些格式比較特殊的音視頻,諸如3gp、mov等,還會(huì )強制接管mp3等文件的默認操作(點(diǎn)個(gè)MP3下載鏈接他不下載反而在線(xiàn)播放 了);
SilverLight,至少我測試在最新版的Firefox中還無(wú)效,而且網(wǎng)絡(luò )上用到SilverLight的機會(huì )實(shí)在太少了;
Office系 列,系統里有沒(méi)有裝MS的Office我們先不論,但你知道用戶(hù)裝的是03還是07嗎(03和07的插件不一樣的)?你有必要在Firefox中打開(kāi)一個(gè) Word文檔或者PPT文檔嗎?
PDF,集成的人也很多,但你知道這個(gè)插件需要系統里安裝了Adobe Reader才有效嗎?這個(gè)幾百兆的龐然大物我可不想裝。
RealPlayer,這個(gè)裝的人也很多,不過(guò)它和Java一樣,只要系統里裝了Real解碼器,Firefox就能自動(dòng)找到相應的插件,否則裝了也沒(méi)用。
所以,就我個(gè)人感覺(jué),插件我們只需要安裝Flash:NPSWF32.dll、ShockWave:np32dsw.dll(可選)、WindowsMediaPlayer:npdsplay.dll、QuickTime插件中的npqtplugin6.dll(用來(lái)支持JPEG2000圖片格式,無(wú)須安裝QuickTime,可選)、WPF:NPWPF.dll(用于支持微軟最新的WPF圖形格式,可選)。
還是那句話(huà),擴展和插件宜精不宜多,如果制作的精簡(jiǎn)版是要發(fā)布給網(wǎng)友分享的,那更應該注意每個(gè)擴展及插件的測試。
忙了一個(gè)學(xué)期,好久沒(méi)更新了,最近我會(huì )陸續更新一些內容的。言歸正傳,今天要說(shuō)的是便攜版Firefox制作教程的最后一篇——整合。至于如何整合,這和你所用的引導器有莫大的關(guān)系,引導器不同直接決定了文件布置的結構。我自然還是以我自己做的引導器FirefoxLoader為例介紹。
FirefoxLoader所要求的文件結構相當簡(jiǎn)介,僅需要在FirefoxLoader的同級目錄下放置一個(gè)名為Firefox的文件夾,并在這個(gè)文件夾里放置Firefox的程序文件即可,即形成如下圖所示結構:

Firefox程序本身需要精簡(jiǎn)的并不多,記得刪除Uninstall文件夾、Update文件夾(每次運行過(guò)Firefox后都會(huì )出現)和tete009編譯版本中的Source文件夾即可。
Firefox的主頁(yè)地址修改是在browserconfig.properties這個(gè)文件里的,用記事本打開(kāi)這個(gè)文件,把browser.startup.homepage后的網(wǎng)址替換成你要設定的主頁(yè)地址即可,空白頁(yè)就設成about:blank。
然后運行FirefoxLoader,FirefoxLoader會(huì )自動(dòng)在同級目錄下新建一個(gè)名為profiles的目錄,并用默認配置文件啟動(dòng)Firefox。然后你就可以在這里安裝擴展、主題并對Firefox的默認參數進(jìn)行調整了,你可以修改Firefox的選項或者擴展的選項,還可以通過(guò)在地址欄輸入about:config來(lái)進(jìn)入Firefox的“注冊表”,對Firefox進(jìn)行更徹底的修改,修改的方法可以參照這里。當然,這里的技巧也不是都要用,如何取舍還得看你經(jīng)驗的摸索。所有修改過(guò)的參數會(huì )在profiles文件夾下的prefs.js文件中體現出來(lái),你可以用記事本打開(kāi)并編輯它,這和你在Firefox程序里修改選項或者about:config是等效的。
如果有人分析過(guò)我做的便攜版Firefox會(huì )發(fā)現我的默認prefs.js中并沒(méi)有太多的優(yōu)化參數,難道我沒(méi)有做任何優(yōu)化?這當然不可能。我只是把優(yōu)化參數變成了Firefox的默認參數而已。Firefox的默認參數都保存在Firefox目錄下的defaults和greprefs目錄下的js文件中,而主要則保存在Firefox\defaults\pref目錄下的firefox.js和Firefox\greprefs目錄下的all.js這兩個(gè)文件中,你可以把你在prefs.js中看到的修改項在這兩個(gè)文件中查找,如果找到一樣的選項的話(huà)直接把他們的值改為和prefs.js中的值一樣即可,當然,查找的時(shí)候得把前面的“user_”去掉。
Firefox還可以通過(guò)修改profiles\Chrome文件夾下的Userchrome.css和UserContent.css對界面的顯示做一些控制。如果profiles\Chrome文件夾下只有UserChrome-example.css和UserContent-Example.css兩個(gè)文件則把他們改名為UserChrome.css和UserContent.css后再進(jìn)行修改。
當你要修改的全部改好后,就把profiles目錄下的extensions目錄下的所有文件夾都復制到Firefox目錄下的extensions文件夾中。再把profiles文件夾下除adblockplus(如果有裝AdBlockPlus的話(huà))、chrome兩個(gè)文件夾及prefs.js、firegestures.sqlite(如果有裝FireGestures)兩個(gè)文件之外的其他文件刪除,把Firefox\defaults\profile目錄下的所有文件和文件夾都刪除,把profiles文件夾中剩下的兩個(gè)文件夾和兩個(gè)文件復制到Firefox\defaults\profile目錄下,最后把多余的profiles目錄刪除即可。
至此,一個(gè)便攜版Firefox就誕生了……
聯(lián)系客服