舊文件

此處文件僅供參考,請自行考量時效性與適用程度,其他庫藏文件請參考文件頁面
我們亟需您的協助,進行共筆系統搬移、及文件整理工作,詳情請查閱參與我們

Portable Firefox 使用、自訂與中文化

出自 MozTW Wiki

於 2005年11月13日 (日) 14:53 由 Scripter對話 | 貢獻 所做的修訂 中文化方法之一,en-US.jar 置換法
這個頁面屬於非官方建製版本列表計畫的一部份,歡迎您共同參與本計畫。詳見專案首頁


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 來中文化)

下載 Portable Firefox 的圖例,按下圖片放大

現在要開始進入正題了。前面說了這麼多關於理論的東西,現在來實際操作吧,如果你懶得中文化的話,建議你直接下載 某A 前輩製作的中譯版。這一段是要教你如何取得英文版的 Portable Firefox。

  1. 請先按下下方的連結,進入 Portable Firefox 下載頁:http://johnhaller.com/jh/mozilla/portable_firefox
  2. 然後請按下 Download Now! 下載檔案。
  3. 下載完畢後,請用你熟悉的解壓縮軟體,將 portable_firefox_1.0.7_beta.zip 解壓縮
  4. 解壓縮後,請放置在英文目錄下(例如:C:\Temp\Portablefirefox),並執行 PortableFirefox.exe 測試是否有問題(註:作此動作之前,請先關閉你正在使用的 Firefox。)
  5. 這時候 Portable Firefox 所開啟的 Firefox 應該是英文的
  6. 以下有兩個中文化方法,請擇一使用

中文化方法之一,en-US.jar 置換法

  1. http://johnhaller.com/jh/mozilla/portable_firefox/localization/ 下載 Chinese (Traditional) 的 Language Pack,或直接官方下載
  2. 使用任何能解開 ZIP 檔案的軟體打開它,在 chorme 資料夾內會有一個叫 zh-TW.jar 的檔案。請將它解壓縮後改名成 en-US.jar
  3. 在 Portable Firefox 沒有開啟的狀態下,把剛才準備好的 en-US.jar 置換掉本來在 firefox\chrome 下(本例中即 C:\Temp\Portablefirefox\firefox\chrome)同檔名的檔案即可。
  4. 重新開啟 Portable Firefox 就應該是中文的了。

注意 其實本來應該要使用 Locale-Switcher 套件,但是會有問題,所以請參照這樣方法操作。

中文化方法之二,Mozilla 官方安裝程式中 zh-TW.xpi 之安裝

  1. moztw.orgmozilla.org 下載官方的中文版安裝程式。
  2. 使用任何可以解 zip 檔案的軟體(例如:7-zip)把安裝程式解壓縮
  3. 找到 zh-TW.xpi ,並使用你的 Portable Firefox 安裝他
  4. 重新開啟 Portable Firefox 就應該是中文的了。

備註 這種方法理論上不需要 Locale-Switcher 套件,如果安裝後,仍然無法變成中文,或者你要讓你的 Portable Firefox 變成多國語言版,請安裝 Locale-Switcher 套件。


Portable Firefox 的下載與中文化之二(使用 安裝的中文版 Firefox)

下載 Portable Firefox Launcher 的例圖,按下圖片放大
  1. 請先按下下方的連結,進入 Portable Firefox 下載頁:http://johnhaller.com/jh/mozilla/portable_firefox
  2. 然後請找到 Portable Firefox Launcher 並下載,如右圖。
  3. 解壓縮 portable_firefox_launcher_1.1.0.zip ,到一個英文目錄下(例如:C:\Temp\Portablefirefox)(此後簡稱<PortableFirefox>)
  4. 到你安裝 Firefox 的資料夾之下,複製所有資料夾之下的檔案。
  5. 到 "<PortableFirefox>\firefox" 資料夾之下,將所有的檔案貼上
  6. 再把 "<PortableFirefox>\firefox" 資料夾之下的 plugins 資料夾剪下,"<PortableFirefox>" 資料夾下貼上,取代全部
    注意 如果你打算發佈給其他人使用,請注意是否使用了相依本地端程式的外掛(Plugins)(例如:fdm.dll 等等),如果你沒將他們從 plugins 資料夾中移除,除了將會使 Portable Firefox 不具可攜性;同時也可能會產生相關的版權問題(例如 Macromedia Flash Player 的 plugin)。預設應該只有 npnul32.dll 一個檔案 (Mozilla Default plugin)
  7. 執行 PortableFirefox.exe
  8. 開啟時,PortableFirefox 會詢問:「No profile was found. Would you like to create a new profile here?」,請回答「是」。如果不成功或是出現錯誤訊息請依照下步驟操作複製預設個人設定檔:
    1. 關掉 PortableFirefox
    2. 複製 "<PortableFirefox>\firefox\default\profile" 的內容物到 "<PortableFirefox>\profile" 裡面。
  9. 如果 Portable Firefox 所開啟的 Firefox 詢問是否要設為預設瀏覽器,請回答「否」
  10. 做到這裡你就已經有一個簡單的中文版 Portable Firefox


設定 PortableFirefox.ini

PortableFirefox.ini 是 Portable Firefox 內建的一個功能,他可以讓你設定一些參數,讓 Portable Firefox 更符合你的需求。你可以閱讀 Portable Firefox 所附的 Readme.txt,以獲得更多的資料。

備註 Portable Firefox 資料夾以下簡稱 <PortableFirefox>

如果要使用 PortableFirefox.ini這個功能,只要將 "<PortableFirefox>\PortableFirefoxCode" 資料夾中的PortableFirefox.ini 複製到 <PortableFirefox> 即可。

接著請用純文字編輯軟體(例如:記事本)修改,參數定義如下:

FirefoxDirectory=firefox
ProfileDirectory=profile
PluginsDirectory=plugins
FirefoxExecutable=firefox.exe

以上四個較不重要,其中 firefoxprofilepluginsfirefox.exe 分別是 firefox.exe 所在目錄、profile 所在目錄、plugins 所在目錄、Firefox 應用程式的名字。這幾個基本上都維持預設值即可。

以下幾個相對比較重要。

AdditionalParameters=
這個參數後方可以接一些你想要傳給 Firefox 的參數

AllowMultipleInstances=false
這個參數有兩個,false和true(僅可使用小寫),若使用true,則 Portable Firefox 開啟的 Firefox 可以不受已開啟的 Firefox 干擾,若使用 false 則會受影響(使用相同的 Profile)。

SkipChromeFix=false
這個參數有兩個,false和true(僅可使用小寫),若使用 true ,則 Portable Firefox 不會去修補 Chrome.rdf ,這會造成套件、佈景主題無法正常使用,除非必要,請使用 false。但是對於 Firefox 1.5 Beta 的使用者而言,這個參數設或不設都沒影響。

SkipCompregFix=false
這個參數有兩個,false和true(僅可使用小寫),若使用 false ,則 Portable Firefox 刪除 compreg.dat ,讓 Firefox 重新撰寫,避免造成問題。部份套件會使用到這個檔案,除非必要,請不要使用 true。

WaitForFirefox=false
這個參數有兩個,false和true(僅可使用小寫),若使用true,則 PortableFirefox.exe 在 Firefox 結束後才會結束,但這個參數並不適用於 Firefox 1.5 Beta,因為 firefox.exe 第一次執行時,會先關閉自己,執行 update.exe 然後再開啟自己,因此這個參數不適用於 Firefox 1.5 Beta。


修改與自訂 Portable Firefox

這一段其實並不重要,基本上 Portable Firefox 依然是一套 Firefox,因此你平常如何自訂你的 Firefox 你就可以怎麼自訂 Portable Firefox。我想教的方法是比較偷懶的方法,直接複製你現有的 Profile 讓 Portable Firefox 使用

備註 以下以 <PortableFirefox> 代稱 PortableFirefox.exe 所在的資料夾。

  1. 請先刪除 "<PortableFirefox>" 資料夾底下的 profile 資料夾
  2. 請開啟檔案總管,在網址列輸入 "%Appdata%\Mozilla\Firefox\Profiles"
  3. 選取你要的個人設定檔,並把他複製到 <PortableFirefox> 資料夾之下
  4. 把這個資料夾重新命名為 "profile"
  5. 完成


已知問題

已知問題你可以參閱這裡:http://johnhaller.com/jh/mozilla/portable%5Ffirefox/support/#known_issues

以下使我所研究過的已知問題。

被部份的防毒軟體視為病毒

最新版本 Portable Firefox (Firefox 1.5 rc1) 會被偵測為含有病毒

注意: 最新版本 Portable Firefox (Firefox 1.5 rc1) 會被偵測為含有病毒,相關病毒資訊如下:

D:\****\PORTABLE_FIREFOX_1.5RC1_EN-US\PORTABLEFIREFOX\FIREFOX\COMPONENTS\JAR50.DLL
Contains signature of the worm WORM/Bagz.A.5

目前暫時認為是防毒軟體對 UPX 程式壓縮的誤判。

重現相同問題的方法:

  1. 取得 UPX ,網址: http://upx.sf.net
  2. 從 <Mozilla Firefox 資料夾>\components\ 資料夾之下,找到 jar50.dll
  3. 使用這個指令壓縮這個檔案 upx --best --compress-icons=0 --nrv2d --crp-ms=999999 -k jar50.dll
  4. 用 AntiVir 去掃,網址: http://www.free-av.com/

Portable Firefox (Firefox 1.0.7) 並不含有病毒(即使可能被偵測到)

其實這個問題並非 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

  1. 請先自下方連結下載 Macromedia Flash Player: Get Flash Player
  2. 在有安裝官方 Firefox 的電腦執行該程式
  3. 在 Firefox 安裝資料夾之下的 plugins 資料夾下 將 NPSWF32.dll GetFlash.exe GetFlash.exe.manifest 複製到 Portable Firefox 資料夾中的 plugins 資料夾之下
  4. 完成

注意 Macromedia Flash Player 是美國 Macromedia 公司的註冊商標, Flash Player 也是有版權的軟體,如果你的 Portable Firefox 是要公開讓人下載的,請不要包含 Macromedia Flash Player,以免陷入法律問題。

打包為 LiveCD Portable FireFox

為什麼 LiveCD Portable FireFox?

有時候我們需要將 Portable Firefox 燒在 CD 上,作為展示用,但是,卻會遇到問題,因為 CD 是唯讀的,因此 Portable Firefox 將會無法正常運作,因此有這一段的產生。

原理

這個原理非常容易理解:既然 CD 是唯獨的,複製到使用者硬碟的暫存資料夾總可以吧。基本上,只要將 Portable Firefox 封裝,在將他變成自解檔(SFX)即可。因此有很多軟體都能勝任。例如:WinZip、WinRAR 等軟體。本章將用 7-zip 來實做。

用 7-zip 實做

備註 Firefox 1.5 Beta 在執行時好像會將自己關掉進行 Update.exe 再把自己重開,因此以下的方法僅適用 Firefox 1.0.7 或以下的版本。至於 Firefox 1.5 Beta 可能要想新的方法。

下載 7-zip Extra modules 的圖例,按下圖片放大
  1. 先取得 7-zip 壓縮軟體,網址 http://www.7-zip.org
  2. Download 頁面找到 7-zip Extra modules 並下載,如右圖
    備註 4.23 或 4.29 beta 皆可
  3. 安裝 7-zip
  4. 使用 PortableFirefox.ini
  5. 將 WaitForFirefox 設成 true
  6. 全選 Portable Firefox 目錄下所有的檔案,按下右鍵,Add to archive...
  7. 按下確定,你將可以得到一個 7z 壓縮檔,把這個檔案重新命名為 pfa.7z
  8. 將下面的內容複製,並儲存為 config.txt (請使用 UTF-8 為編碼)並放在 Portable Firefox 目錄下
    ;!@Install@!UTF-8!
    Title=""
    BeginPrompt=""
    RunProgram="PortableFirefox.exe";
    !@InstallEnd@!
  9. 將下面的程式碼複製,並儲存為 make.bat 並放在 Portable Firefox 目錄下
    copy /b 7zS.sfx + config.txt + pfa.7z livecdportablefirefox.exe
  10. 將步驟 2. 取得的解壓縮 7z423_extra.tar.bz2 或 7z429_extra.tar.bz2 連續解壓縮兩次,並從中找到 7zS.sfx 這個檔案,然後複製到 Portable Firefox 目錄下
  11. 執行 make.bat
  12. 如果看到 livecdportablefirefox.exe 即完成。


相關連結

個人工具