Portable Firefox 使用、自訂與中文化
出自 MozTW Wiki
內容大綱
Portable Firefox 簡介
Portable Firefox 是一個讓你能把你的 Firefox 帶著跑的程式,它的工作原理是利用 Firefox 可以用 "firefox.exe -profile 'Profile資料夾'"來指定 Firefox 所使用的 Profile ,進而能讓 Firefox 變成可攜式的 Firefox。
這個程式是由 John T. Haller 前輩使用 NSIS 撰寫的。除了上述原理,為了要讓 Firefox 能正常使用套件和佈景主題,程式碼中還有用來修補 Chrome.rdf 的程式碼。但也因此產生了一些問題,請參後面的已知問題。
相關連結
Portable Firefox 下載頁 http://johnhaller.com/jh/mozilla/portable_firefox
John T. Haller 前輩的網站 http://johnhaller.com/jh
某A 前輩製作的中譯版 http://forum.moztw.org/viewtopic.php?t=10821
Portable Firefox 的下載與中文化之一(使用 zh-TW.xpi 來中文化)
現在要開始進入正題了。前面說了這麼多關於理論的東西,現在來實際操作吧,如果你懶得中文化的話,建議你直接下載 某A 前輩製作的中譯版。這一段是要教你如何取得英文版的 Portable Firefox。
- 請先按下下方的連結,進入 Portable Firefox 下載頁:http://johnhaller.com/jh/mozilla/portable_firefox
- 然後請按下 Download Now! 下載檔案。
- 下載完畢後,請用你熟悉的解壓縮軟體,將 portable_firefox_1.0.7_beta.zip 解壓縮
- 解壓縮後,請放置在英文目錄下(例如:C:\Temp\Portablefirefox),並執行 PortableFirefox.exe 測試是否有問題(註:作此動作之前,請先關閉你正在使用的 Firefox。)
- 這時候 Portable Firefox 所開啟的 Firefox 應該是英文的
- 請用 Portable Firefox 所開啟的 Firefox (下簡稱 FofP)瀏覽這一頁: http://johnhaller.com/jh/mozilla/portable_firefox/localization/ 安裝 Chinese (Traditional) 的 Language Pack,或直接按下這裡直接安裝
- 關閉 FofP 並在執行一次 PortableFirefox.exe,你就已經有一個簡單的中文版 Portable Firefox
備註 其實比較正規的方法是使用 Locale-Switcher 套件,但是為了簡化流程,所以這樣做。
Portable Firefox 的下載與中文化之二(使用 安裝的中文版 Firefox)
- 請先按下下方的連結,進入 Portable Firefox 下載頁:http://johnhaller.com/jh/mozilla/portable_firefox
- 然後請找到 Portable Firefox Launcher 並下載,如右圖。
- 解壓縮 portable_firefox_launcher_1.1.0.zip ,到一個英文目錄下(例如:C:\Temp\Portablefirefox)(此後簡稱<PortableFirefox>)
- 到你安裝 Firefox 的資料夾之下,複製所有資料夾之下的檔案。
- 到 "<PortableFirefox>\firefox" 資料夾之下,將所有的檔案貼上
- 再把 "<PortableFirefox>\firefox" 資料夾之下的 plugins 資料夾剪下,"<PortableFirefox>" 資料夾下貼上,取代全部
注意 如果你打算發佈給其他人使用,請注意是否使用了相依本地端程式的外掛(Plugins)(例如:fdm.dll 等等),如果你沒將他們從 plugins 資料夾中移除,將會使 Portable Firefox 不具可攜性。 - 執行 PortableFirefox.exe
- 開啟時,PortableFirefox 會詢問:「No profile was found. Would you like to create a new profile here?」,請回答「是」。
- 如果 Portable Firefox 所開啟的 Firefox (下簡稱 FofP)詢問是否要設為預設瀏覽器,請回答「否」
- 做到這裡你就已經有一個簡單的中文版 Portable Firefox
修改與自訂 Portable Firefox
這一段其實並不重要,基本上 Portable Firefox 依然是一套 Firefox,因此你平常如何自訂你的 Firefox 你就可以怎麼自訂 Portable Firefox。我想教的方法是比較偷懶的方法,直接複製你現有的 Profile 讓 Portable Firefox 使用
備註 以下以 <PortableFirefox> 代稱 PortableFirefox.exe 所在的資料夾。
- 請先刪除 "<PortableFirefox>" 資料夾底下的 profile 資料夾
- 請開啟檔案總管,在網址列數入 "%Appdata%\Mozilla\Firefox\Profiles"
- 選取你要的個人設定檔,並把他複製到 <PortableFirefox> 資料夾之下
- 把這個資料夾重新命名為 "profile"
- 完成
已知問題
已知問題你可以參閱這裡:http://johnhaller.com/jh/mozilla/portable%5Ffirefox/support/#known_issues
以下使我所研究過的已知問題。
被部份的防毒軟體視為病毒
其實這個問題並非 Portable Firefox 本身,或是 NSIS 的錯。如果真的要歸納錯誤的話,應該歸功於防毒公司。但幸運的,就我所知,NSIS 方面已經克服這個問題,有興趣者請參:http://nsis.sourceforge.net/index.php?id=2&backPID=2&tt_news=24
檔案路徑不可以有中文
這是我仔細研究過的問題,事實上這個問題可以分為兩個部份:
第一部份是 GetParameters 的錯誤,導致誤傳訊其給 firefox.exe ,改成以下的程式即可解決
Function "GetParameters" Push $R0 Push $R1 Push $R2 StrCpy $R2 $CMDLINE 1 0 StrCmp $R2 "$\"" 0 +3 StrCpy $R0 "" Goto ReturnTheValue StrCpy $R0 $CMDLINE 1 StrCpy $R1 '"' StrCpy $R2 1 StrCmp $R0 '"' loop StrCpy $R1 ' ' ; we're scanning for a space instead of a quote loop: StrCpy $R0 $CMDLINE 1 $R2 StrCmp $R0 $R1 loop2 StrCmp $R0 "\" "" "nofile" IntOp $2 $R2 + 1 nofile: ;MessageBox MB_OK "r0: $R0" StrCmp $R0 "" loop2 IntOp $R2 $R2 + 1 Goto loop loop2: IntOp $R0 $R2 - $2 IntOp $R0 $R0 - 4 ;MessageBox MB_OK "$R2 - $2 = $R0" StrCpy $R7 $CMDLINE $R0 $2 ; we save the filename ;MessageBox MB_OK "$2" loop2b: IntOp $R2 $R2 + 1 StrCpy $R0 $CMDLINE 1 $R2 ;MessageBox MB_OK "rr0: $R0" StrCmp $R0 " " loop2b StrCpy $R0 $CMDLINE "" $R2 ReturnTheValue: Pop $R2 Pop $R1 Exch $R0 FunctionEnd
備註 上方的程式碼因為部份是屬於 Portable Firefox 的一部分,因此使用 GPL 為使用條款
但是第二部份就沒這麼好改了,
原因是 Firefox 本身對非 ANSII 路徑的處理方式,大家都知道 CJK 字集是用兩的 byte 組成的,基於一些理由, Firefox 把所有 CJK 語言都轉成 %NN%NN 例如:桌面->%AE%E0%AD%B1。現在問題在於,當 Firefox 安裝套件時會把路徑名稱中文的部份轉為 %NN%NN ,但 Firefox 在事後重新讀取 Chrome.rdf 時就不會再去轉換了,但是為了可攜, PortableFirefox.exe 會去修改 Chrome.rdf 以讓套件正常運作,然而 NSIS 並不會將中文轉換為 %NN%NN 形式,因此 Firefox 讀取時就發生問題了。
這個問題要有一個軟體可以把 CJK 轉為 %NN%NN 的形式才能解決。可是這部份的函式我是從一份很久以前的文獻偷過來的,測試的結果的確可行,但是這些函式並不是我寫的,所以我並不能公佈,向各位網友們道歉了。如果有高手寫得出來,那的確可以解決這個問題。
不過好消息是: Firefox 1.5 Beta 好像已經不使用 Chrome.rdf,因此不會產生這個問題,期待 Firefox 1.5 吧!
附錄
以下是一些小技巧
安裝 Macromedia Flash Player
- 請先自下方連結下載 Macromedia Flash Player: Get Flash Player
- 在有安裝官方 Firefox 的電腦執行該程式
- 在 Firefox 安裝資料夾之下的 plugins 資料夾下 將 NPSWF32.dll GetFlash.exe GetFlash.exe.manifest 複製到 Portable Firefox 資料夾中的 plugins 資料夾之下
- 完成
注意 Macromedia Flash Player 是美國 Macromedia 公司的註冊商標, Flash Player 也是有版權的軟體,如果你的 Portable Firefox 是要公開讓人下載的,請不要包含 Macromedia Flash Player,以免陷入法律問題。