舊文件

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

Portable Firefox 使用、自訂與中文化

出自 MozTW Wiki

於 2006年5月12日 (五) 20:52 由 Scripter對話 | 貢獻 所做的修訂 使用官方版本再中文化
這個頁面屬於非官方建製版本列表計畫的一部份,歡迎您共同參與本計畫。詳見專案首頁

Portable Firefox 簡介

Portable Firefox 是一個讓你能把你的 Firefox 帶著跑的程式,它的工作原理是利用 Firefox 可以用 "firefox.exe -profile 'Profile資料夾'"來指定 Firefox 所使用的 Profile ,進而能讓 Firefox 變成可攜式的 Firefox。

這個程式是由 John T. Haller 前輩使用 NSIS 撰寫的。除了上述原理,為了要讓 Firefox 能正常使用套件和佈景主題,程式碼中還有用來修補相關檔案的程式碼。但也因此產生了一些問題,請參後面的已知問題。

相關連結

Portable Firefox 下載頁 http://portableapps.com/portablefirefox

John T. Haller 前輩的網站 http://johnhaller.com/jh

某A 前輩製作的中譯版 http://forum.moztw.org/viewtopic.php?t=12716


本文名詞定義

名詞 說明
<PortableFirefox> 存放 Portable Firefox 及相關檔案的目錄
<FirefoxInstallDir> 安裝版 Mozilla Firefox 的安裝路徑
Portable Firefox CE 全名為 Portable Firefox Community Edition 意思是指社群人員修改過的版本。本文中所有的 Portable Firefox CE 是指使用 http://forum.moztw.org/viewtopic.php?t=11860 為 Launcher 的 Portable Firefox 版本
[CE-Only] 只有 Portable Firefox CE 才有的功能
Portable Firefox Launcher 指 Portable Firefox (CE) 的啟動程式(又名前導程式)。檔名通常為 PortableFirefox.exe 或 PortableFirefoxCE.exe
Portable Firefox 的設定檔 對於 Portable Firefox 官方版本而言,是 PortableFirefox.ini ;而對於 Portable Firefox CE 而言是 PortableFirefoxCE.ini 。


Portable Firefox 的下載與中文化

使用 PortableApps.com 官方版本再中文化

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

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

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

中文化方法之一,使用 Locale Switcher + Language Pack

  1. 到 Mozilla Addons 去安裝 Locale Switcher 擴充套件 Locale Switcher 1.5.1
  2. http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/1.5.0.3/win32/xpi/ 下載 zh-TW.xpi,並且用 Portable Firefox 把他安裝好
  3. 重新開啟之後,到 "Tools -> Languages" 中,選擇 "Chinese (Taiwan)"
  4. 重新啟動 Portable Firefox

中文化方法之二,使用安裝程式中的 zh-TW.xpi

  1. 這裡下載 DeveloperToolPack.zip 並且用能解 zip 格式的解壓縮軟體把他解壓縮
  2. 從 Locate 資料夾中,找到 PortableFirefox_zh-TW.xpi 並把他安裝起來
    注意 安裝完之後,就會從 Extension 視窗中消失
  3. 重新開啟 Portable Firefox

中文化方法之三,使用 Language Pack

  1. http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/1.5.0.3/win32/xpi/ zh-TW.xpi。
  2. 使用你的 Portable Firefox 安裝他
  3. 修改 Portable Firefox 的設定檔,在 AdditionalParameters 加上 -UILocale zh-TW -contentLocale TW
  4. 執行 Portable Firefox Launcher,你的 Portable Firefox 就應該是中文的了。

使用事先安裝好的 Mozilla 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


Portable Firefox 預設的資料夾架構

使用設定檔

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

如果要使用 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 使用

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


已知問題

已知問題你可以參閱這裡:http://portableapps.com/support/portable_firefox#known_issues

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

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

Portable Firefox (Firefox 1.5) 並不含有病毒

這是防毒軟體對 UPX 程式壓縮的誤判。

重現相同問題的方法:

  1. 取得 UPX ,網址: http://upx.sf.net
  2. 從 <FirefoxInstallDir>\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 方面已經克服這個問題。

檔案路徑不可以有中文

這是我仔細研究過的問題,事實上這個問題可以分為兩個部份:

第一部份是 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 讀取時就發生問題了。

如果對修改過的版本有興趣的人,可以試試看這個:http://forum.moztw.org/viewtopic.php?t=11860


附錄

以下是一些小技巧

安裝 Macromedia Flash Player

  1. 請先自下方連結下載 Macromedia Flash Player: Get Flash Player
  2. 在有安裝官方 Firefox 的電腦執行該程式
  3. 在 "<FirefoxInstallDir>\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 即完成。

壓縮 Portable Firefox

這一節是要教大家如何壓縮 Portable Firefox。

備註 官網或 某A 前輩所提供的版本,都已經壓縮過了,不用重壓

  1. 先到 http://upx.sourceforge.net/#download 去取得程式壓縮軟體(請選 upx125w.zipupx193w.zip
  2. 用支援 Zip 格式的解壓縮軟體,解壓縮
  3. 把 upx.exe 複製到你放 Portable Firefox 的資料夾
  4. 把最下面的程式碼複製起來,存成 upxcompress.vbs
  5. 執行 upxcompress.vbs,等到出現 UPX 程式壓縮結束 對話方塊,程式壓縮就結束了。你可以將 upxcompress.vbs 以及 upx.exe 刪除
Dim WshShell, fsObj, CommandOption
CommandOption = "--best --compress-icons=0 --crp-ms=999999 --force"
'CommandOption = "--best --nrv2d --compress-icons=0 --crp-ms=999999 --force"
'CommandOption = "-d" ' 解壓縮用的指令
Set WshShell = CreateObject("WScript.Shell")
Set fsObj = CreateObject("Scripting.FileSystemObject")
Sub CompressWithUPX(fdObj)
  For Each file In fdObj.Files
    If (FileCType(file.path) = "dll" Or FileCType(file.path) = "exe") And file.name <> "upx.exe" Then
      Call WshShell.Run("UPX " & CommandOption & " " & file.path, 7, true)
    End If
  Next
  For Each sfolder In fdObj.SubFolders
    Call CompressWithUPX(sfolder)
  Next
End Sub
Function FileCType(Filename)
  Dim LastDot
  LastDot = InstrRev(FileName, ".")
  FileCType = Mid(FileName, (LastDot + 1))
End Function
Call CompressWithUPX(fsObj.GetFolder(fsObj.GetAbsolutePathName(".")))
Set fsObj = Nothing
Set WshShell = Nothing
MsgBox("UPX 程式壓縮結束")


相關連結

個人工具