舊文件

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

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

出自 MozTW Wiki

修改與自訂 Portable Firefox
本文名詞定義
行 39: 行 39:
 
</tr>
 
</tr>
 
<tr>
 
<tr>
   <td style="background-color: #FFFFFF; ">'''[Office-Only]'''</td>
+
   <td style="background-color: #FFFFFF; ">'''[Offical-Only]'''</td>
 
   <td style="background-color: #FFFFFF; ">只有從 PortableApps.com 取得的 Portable Firefox 才有的功能、缺點</td>
 
   <td style="background-color: #FFFFFF; ">只有從 PortableApps.com 取得的 Portable Firefox 才有的功能、缺點</td>
 
</tr>
 
</tr>

於 2006年5月12日 (五) 22:38 的修訂

這個頁面屬於非官方建製版本列表計畫的一部份,歡迎您共同參與本計畫。詳見專案首頁

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 才有的功能、缺點
[Offical-Only] 只有從 PortableApps.com 取得的 Portable Firefox 才有的功能、缺點
Portable Firefox Launcher 指 Portable Firefox (CE) 的啟動程式(又名前導程式)。檔名通常為 PortableFirefox.exe 或 PortableFirefoxCE.exe
<PortableFirefox 設定檔> 對於 Portable Firefox 官方版本而言,是 PortableFirefox.ini ;而對於 Portable Firefox CE 而言是 PortableFirefoxCE.ini 。


Portable Firefox 的下載與中文化

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

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

下載 Portable Firefox 的圖例,按下圖片放大
  1. 請先按下下方的連結,進入 Portable Firefox 下載頁:http://portableapps.com/portablefirefox
  2. 然後請按下 Download Now! 下載檔案。
  3. 下載完畢後,請直接執行 Portable_Firefox_1.5.0.3_en-us.exe 來解壓縮
    注意 請放在純英文路徑下(例如:C:\Temp\Portablefirefox),因為官方版本的 Portable Firefox 有中文路徑問題。
  4. 並執行 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 來中文化

  1. 請先按下下方的連結,進入 Portable Firefox 下載頁:http://portableapps.com/portablefirefox
  2. 然後請按下 Download Now! 下載檔案。
  3. 下載完畢後,請直接執行 Portable_Firefox_1.5.0.3_en-us.exe 來解壓縮
    注意 請放在純英文路徑下(例如:C:\Temp\Portablefirefox),因為官方版本的 Portable Firefox 有中文路徑問題。
  4. 到 "<PortableFirefox>\App\firefox" 資料夾下把所有東西清空
  5. 到 "<PortableFirefox>\Data" 資料夾下刪除 profile 資料夾
  6. 到 "<FirefoxInstallDir>" 資料夾並複製資料夾下的所有東西
  7. 到 "<PortableFirefox>\App\firefox" 資料夾之下,將所有的檔案貼上
  8. 再把 "<PortableFirefox>\App\firefox" 資料夾之下的 plugins 資料夾剪下,到 "<PortableFirefox>\Data\" 資料夾下貼上,並取代全部
    注意 如果你打算發佈給其他人使用,請注意是否使用了相依本地端程式的外掛(Plugins)(例如:fdm.dll 等等),如果你沒將他們從 plugins 資料夾中移除,將會使 Portable Firefox 不具可攜性;另外也請注意相關的版權問題(例如 Macromedia Flash Player 的 plugin)。預設應該只有 npnul32.dll 一個檔案 (Mozilla Default plugin)
  9. 執行 PortableFirefox.exe
  10. 開啟時,PortableFirefox 會詢問:「No profile was found. Would you like to create a new profile here?」,請回答「是」。如果不成功或是出現錯誤訊息請依照下步驟操作複製預設個人設定檔:
    1. 關掉 PortableFirefox
    2. 複製 "<PortableFirefox>\App\firefox\default\profile" 的內容物到 "<PortableFirefox>\Data\profile" 裡面。
  11. 如果 Portable Firefox 所開啟的 Firefox 詢問是否要設為預設瀏覽器,請回答「否」
  12. 做到這裡你就已經有一個簡單的中文版 Portable Firefox

備註 步驟 1~5 可以直接到 http://forum.moztw.org/viewtopic.php?t=11860 取得 1.1.4.0-stable-200605121741@release.zip

使用 Portable Firefox CE Launcher + 標準 Mozilla Firefox 安裝程式

事前準備

  1. 取得同時能解 zip 還有 7z 格式的解壓縮程式(強力推薦 7-zip)。
  2. 取得 標準 Mozilla Firefox 安裝程式,http://mozilla.com
  3. http://forum.moztw.org/viewtopic.php?t=11860 取得 Portable Firefox CE

動工

  1. 將 "Firefox Setup 1.5.0.3.exe" 用能解開 7z 格式的解壓縮軟體解壓縮
  2. 保留附檔名為 xpi 的檔案,其餘直接刪除
  3. 用能解 zip 格式的解壓縮軟體解壓縮,把 browser.xpi 解壓縮,並複製 bin 子目錄底下的所有檔案到 "<PortableFirefox>\App\firefox" 目錄底下
  4. 用能解 zip 格式的解壓縮軟體解壓縮,把 xpcom.xpi 解壓縮,並複製 bin 子目錄底下的所有檔案到 "<PortableFirefox>\App\firefox" 目錄底下(如果有需要,取代所有檔案)
  5. 用能解 zip 格式的解壓縮軟體解壓縮,把 zh-TW.xpi 解壓縮,並複製 bin 子目錄底下的所有檔案到 "<PortableFirefox>\App\firefox" 目錄底下(如果有需要,取代所有檔案)
  6. 這樣執行 Portable Firefox Launcher 之後,應該就會有中文的 Portable Firefox
  7. 以下是可以選擇的項目:
    1. 安裝 DOM 觀察器:用能解 zip 格式的解壓縮軟體解壓縮,把 adt.xpi 解壓縮,並複製 bin 子目錄底下的所有檔案到 "<PortableFirefox>\App\firefox" 目錄底下(如果有需要,取代所有檔案)
    2. 安裝 Talkback:用能解 zip 格式的解壓縮軟體解壓縮,把 talkback.xpi 解壓縮,並複製 bin 子目錄底下的所有檔案到 "<PortableFirefox>\App\firefox" 目錄底下(如果有需要,取代所有檔案)


Portable Firefox 預設的資料夾架構

-pfx-structure.png
  • <PortableFirefox>
    這個資料夾是右圖中的 "SID" ,是整個 Portable Firefox 的根目錄
  • <PortableFirefox>\App\firefox
    這個資料夾是用來放置 firefox 主程式
  • <PortableFirefox>\Data\plugins
    這個資料夾是用來放置一些額外的 Plugins
  • <PortableFirefox>\Data\profile
    這個資料夾是用來放置 Firefox 的個人設定檔
  • <PortableFirefox>\Other\FirefoxSource
    這個資料夾是用來放置 Firefox 的原始碼(但是事實上只有一個指向下載網址的說明檔)
  • <PortableFirefox>\Data\PortableFirefoxCode
    這個資料夾是用來放置 Portable Firefox Launcher 的原始碼
  • <PortableFirefox>\Data\AppInfo
    有一些關於 Portable Firefox 資訊的檔案,不過只有出現於 1.5.0.2 版,1.5.0.3 版時就移除了(CE版本仍然保留)
  • <PortableFirefox>\Data\AdditionalManual
    這個資料夾是用來放置 Portable Firefox 的相關(額外的)說明 [CE-only]


使用設定檔

<PortableFirefox 設定檔> 可以讓你設定一些參數,讓 Portable Firefox 更符合你的需求。你可以閱讀 Portable Firefox 所附的 Readme.txt,以獲得更多的資料。 備註 Readme.txt 在官方的版本中被存放於 "<PortableFirefox>\Other\PortabeFirefoxCode" 在 Portable Firefox CE 中,被存放於 "<PortableFirefox>\Other\AdditionalManual"

要使用 <PortableFirefox 設定檔>,請先依以下說明,取得 <PortableFirefox 設定檔> 範本

  • 如果你使用 PortableApps.com 的官方版本
    要將 "<PortableFirefox>\Other\PortableFirefoxCode" 資料夾中的 PortableFirefox.ini 複製到 <PortableFirefox>。
  • 如果你使用 Portable Firefox CE'
    要將 "<PortableFirefox>\Other\PortableFirefoxCode\data" 資料夾中的 PortableFirefoxCE.ini 複製到 <PortableFirefox>。

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

  • FirefoxDirectory=App\firefox
  • ProfileDirectory=Data\profile
  • PluginsDirectory=Data\plugins
  • UserProfileDirectory=Data\userprofile
  • FirefoxExecutable=firefox.exe

以上五個較不重要,其中 App\firefoxData\profileData\pluginsData\userprofilefirefox.exe 分別是 firefox.exe 所在目錄、profile 所在目錄、plugins 所在目錄、沒有意義的選項、Firefox 應用程式的名字。這幾個基本上都維持預設值即可。

以下幾個相對比較重要。

  • AdditionalParameters=
    這個參數後方可以接一些你想要傳給 Firefox 的參數
  • AllowMultipleInstances=false
    這個參數有兩個,false和true(僅可使用小寫),若使用true,則 Portable Firefox Launcher 才會讓兩個使用不同 Profile 的 Firefox 並存;若使用 false ,則 Portable Firefox Launcher 一旦偵測到其他 firefox.exe 正在運行的話,他就會出現錯誤並終止。
    注意 這各選項有副作用:即同一個時段不能以 Portable Firefox Launcher 開啟兩個 Firefox 視窗
  • SkipChromeFix=false
    這個參數有兩個,false和true(僅可使用小寫),若使用 true ,則 Portable Firefox 不會去修補 Chrome.rdf ,這會造成套件、佈景主題無法正常使用,除非必要,請使用 false。但是對於 Firefox 1.5 的使用者而言,這個參數設或不設都沒影響。
  • SkipCompregFix=false
    這個參數有兩個,false和true(僅可使用小寫),若使用 false ,則 Portable Firefox 刪除 compreg.dat ,讓 Firefox 重新撰寫,避免造成問題。部份套件會使用到這個檔案,除非必要,請不要使用 true。
  • SkipUseFirefoxFormatPath=false       [CE-only]
    這個參數有兩個,false和true(僅可使用小寫),若使用 false ,則 Portable Firefox 會以 Firefox 格式的路徑來處理 Chrome.rdf 以及取得引數的功能;如果是 true ,則關閉這項功能,對於中文使用者來說,可能會有問題。
  • WaitForFirefox=false
    這個參數有兩個,false和true(僅可使用小寫),若使用true,則 PortableFirefox.exe 在 Firefox 結束後才會結束,但這個參數並不完全適用於 Firefox 1.5,因為有時候 firefox.exe 第一次執行時,會先關閉自己,執行 update.exe 或進行套件處理然後再開啟自己。
  • WaitForFirefoxAnyway=false       [CE-only]
    這個參數有兩個,false和true(僅可使用小寫),若使用true,則 PortableFirefox.exe 在 Firefox 結束後才會結束,這不同於 WaitForFirefox。他是區偵測 firefox.exe 有沒有在運行,來決定要不要結束程式,缺點是,如果同時運行兩個使用不同 Profile 的 Firefox ,則必須要兩個 Firefox 都結束才會結束。
  • DisableSplashScreen=false
    這個參數有兩個,false和true(僅可使用小寫),若使用true,則 SPLASH 會關閉。
  • LocalHomepage=
    您可以輸入一個相對於 <PortableFirefox> 與某個檔案的相對路徑,如果這個值不是空白的,他為被設成 Firefox 的首頁。
    例如
    • help.html [Official-Only]
    • help_tradChinese.html [CE-only]
  • DynamicSplash=       [CE-only]
    如果這個值不是空白的,而且指向一個存在的檔案,Portable Firefox Launcher 會將他當作 SPLASH 圖片
    注意 使用 bmp 為格式較佳,不然在一些 Windows 98 SE 電腦上會有問題


修改與自訂 Portable Firefox

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

  1. 請先刪除 "<PortableFirefox>\Data" 資料夾底下的 profile 資料夾
  2. 請開啟檔案總管,在網址列輸入 "%Appdata%\Mozilla\Firefox\Profiles"
  3. 選取你要的個人設定檔,並把他複製到 "<PortableFirefox>\Data" 資料夾之下
  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 程式壓縮結束")


相關連結

個人工具