舊文件

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

「Portable Firefox 使用、自訂與中文化」修訂間的差異

出自 MozTW Wiki

檔案路徑不可以有中文
檔案路徑不可以有中文
行 103: 行 103:
 
   Exch $R0
 
   Exch $R0
 
  FunctionEnd
 
  FunctionEnd
 +
  
 
但是第二部份就沒這麼好改了,
 
但是第二部份就沒這麼好改了,
  
原因是 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 讀取時就發生問題了。
+
原因是 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 的形式才能解決。可是這部份的函式我是從一份很久以前的文獻偷過來的,測試的結果的確可行,但是這些函式並不是我寫的,所以我並不能公佈,向各位網友們道歉了。如果有高手寫得出來,那的確可以解決這個問題。
 
這個問題要有一個軟體可以把 CJK 轉為 %NN%NN 的形式才能解決。可是這部份的函式我是從一份很久以前的文獻偷過來的,測試的結果的確可行,但是這些函式並不是我寫的,所以我並不能公佈,向各位網友們道歉了。如果有高手寫得出來,那的確可以解決這個問題。

於 2005年10月21日 (五) 17:25 的修訂

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。

  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. 請用 Portable Firefox 所開啟的 Firefox (下簡稱 FofP)瀏覽這一頁: http://johnhaller.com/jh/mozilla/portable_firefox/localization/ 安裝 Chinese (Traditional) 的 Language Pack,或直接按下這裡直接安裝
  7. 關閉 FofP 並在執行一次 PortableFirefox.exe,你就已經有一個簡單的中文版 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 不具可攜性。
  7. 執行 PortableFirefox.exe
  8. 開啟時,PortableFirefox 會詢問:「No profile was found. Would you like to create a new profile here?」,請回答「是」。
  9. 如果 Portable Firefox 所開啟的 Firefox (下簡稱 FofP)詢問是否要設為預設瀏覽器,請回答「否」
  10. 做到這裡你就已經有一個簡單的中文版 Portable Firefox


修改與自訂 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 本身,或是 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


但是第二部份就沒這麼好改了,

原因是 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

打包為 LiveCD Portable FireFox

個人工具