「Portable Firefox 使用、自訂與中文化」修訂間的差異
出自 MozTW Wiki
(→打包為 LiveCD Portable FireFox) |
(→原理) |
||
行 162: | 行 162: | ||
===原理=== | ===原理=== | ||
這個原理非常容易理解:既然 CD 是唯獨的,複製到使用者硬碟的暫存資料夾總可以吧。基本上,只要將 Portable Firefox 封裝,在將他變成自解檔(SFX)即可。因此有很多軟體都能勝任。例如:WinZip、WinRAR 等軟體。本章將用 7-zip 來實做。 | 這個原理非常容易理解:既然 CD 是唯獨的,複製到使用者硬碟的暫存資料夾總可以吧。基本上,只要將 Portable Firefox 封裝,在將他變成自解檔(SFX)即可。因此有很多軟體都能勝任。例如:WinZip、WinRAR 等軟體。本章將用 7-zip 來實做。 | ||
− | |||
===用 7-zip 實做=== | ===用 7-zip 實做=== |
於 2005年10月21日 (五) 20:39 的修訂
內容大綱
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
設定 PortableFirefox.ini
PortableFirefox.ini 是 Portable Firefox 內建的一個功能,他可以讓你設定一些參數,讓 Portable Firefox 更符合你的需求。
備註 Portable Firefox 資料夾以下簡稱 <PortableFirefox>
如果要使用 PortableFirefox.ini這個功能,只要將 "<PortableFirefox>\PortableFirefoxCode" 資料夾中的PortableFirefox.ini 複製到 <PortableFirefox> 即可。
接著請用純文字編輯軟體(例如:記事本)修改,參數定義如下:
FirefoxDirectory=firefox
ProfileDirectory=profile
PluginsDirectory=plugins
FirefoxExecutable=firefox.exe
以上三個較不重要,其中 firefox、profile、plugins、firefox.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 所在的資料夾。
- 請先刪除 "<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,以免陷入法律問題。
打包為 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 壓縮軟體,網址 http://www.7-zip.org
- 從 Download 頁面找到 7-zip Extra modules 並下載,如右圖
備註 4.23 或 4.29 beta 皆可 - 安裝 7-zip
- 使用 PortableFirefox.ini
- 將 WaitForFirefox 設成 true
- 全選 Portable Firefox 目錄下所有的檔案,按下右鍵,Add to archive...
- 按下確定,你將可以得到一個 7z 壓縮檔,把這個檔案重新命名為 pfa.7z
- 將下面的內容複製,並儲存為 config.txt (請使用 UTF-8 為編碼)並放在 Portable Firefox 目錄下
;!@Install@!UTF-8!
Title=""
BeginPrompt=""
RunProgram="PortableFirefox.exe";
!@InstallEnd@! - 將下面的程式碼複製,並儲存為 make.bat 並放在 Portable Firefox 目錄下
copy /b 7zS.sfx + config.txt + pfa.7z livecdportablefirefox.exe - 將步驟 2. 取得的解壓縮 7z423_extra.tar.bz2 或 7z429_extra.tar.bz2 連續解壓縮兩次,並從中找到 7zS.sfx 這個檔案,然後複製到 Portable Firefox 目錄下
- 執行 make.bat
- 如果看到 livecdportablefirefox.exe 即完成。