MozTW 討論區

各項 Mozilla 相關軟體與技術討論
現在的時間是 2025-08-24, 10:50

所有顯示的時間為 UTC + 8 小時





發表新文章 回覆主題  [ 4 篇文章 ] 
發表人 內容
文章發表於 : 2010-04-01, 00:16 
離線

註冊時間: 2010-03-31, 22:41
文章: 4
來自: a long time ago, in a galaxy far far away....
Firefox for U3 目前還是只有 2.0.0.4 版,雖然說安裝之後多次服用內建的「更新」功能就可以一路升級到最新版的 Firefox,但是我想一定有人跟我一樣,會有這樣的擔心或需求:

萬一哪一天 Mozilla 基金會倒掉了,我沒得更新,怎麼辦?
萬一我被困在沒有聯外網路的環境中,但是又需要新版的 Firefox 來瀏覽內部網路中的網頁,怎麼辦?
萬一我非用不可的擴充套件在最新版的 Firefox 當中會爛掉,所以我一定祇能用沒那麼新的版本的 Firefox,而這個版本又會被內建的「更新」功能跳過,怎麼辦?

為了解決這樣的需求,首先我們要先瞭解 Firefox 是怎麼更新的。當我們使用 Firefox 內的「更新」功能時,它並不是去取得完整的 Firefox 安裝檔來重新安裝,而是去取得一個 MAR 格式的更新檔案,這個檔案會描述所有該更動(新增、刪除、修改)的檔案,以及這些更動的實際內容,然後利用隨附在 Firefox 內的 updater.exe 更新程式來進行更新,最後並利用隨附在 Firefox 內的 helper.exe 來顯示更新完成的網頁。

好消息是,上述這些事我們也可以手動來做。幾乎所有你該知道的事都寫在 Mozilla 基金會的圍紀頁面「手動安裝 MAR 檔」內。不過這裡有幾個細節要再次提醒:

1. 務必使用完整 (complete) 的 MAR 檔來進行更新,不要使用局部更新檔 (.partial.mar),以免更新失敗。

2. 因為 U3 是 Windows 上的,所以應該一律取用 Windows (win32) 版的 MAR 檔。

3. 因為原本的 Firefox for U3 是英文版,所以手動製作新版時,應該一律取用英文 (en-US) 版的 MAR 檔。

4. 「一次到位」的更新方法可能會失敗,所以最好還是先更新到相同主要版本的最後一版,然後更新到下一個主要版本的第一個版本,再往該主要版本的最後一版……這樣的方式邁進。實際上來說,可以採取的更新路徑應該是 2.0.0.4→2.0.0.20→3.0.0→3.0.19→3.5.0→3.5.9→3.6.0→3.6.2 這樣。

5. 官方的 http://releases.mozilla.org/pub/mozilla.org/firefox/releases/ 目錄幾乎只會留每一個主要版本 (3.0.x, 3.5.x, 3.6.x) 的最後幾個版本,因此無法從這裡取得這些主要版本的「第一個版本」;所幸許多下載映像 (mirror) 站都會留著這些不同的次要版本,所以你可以觀察一下下載 Firefox 時的映像路徑,或者用搜尋引擎搜尋檔名,把所需的 MAR 檔找出來

6. 如果你在 Win7/Vista 底下,需要用系統管理員權限來執行更新動作,才會成功。

那麼,現在就讓我們來開始動手吧!首先要準備好下列的東西:

1. 從 Firefox for U3 取得的 2.0.0.4 版原始 firefox.u3p 檔案。

2. 從 http://dm-download02.mozilla.org/pub/firefox/releases/ 取得的一系列 MAR 檔,包括 firefox-2.0.0.20.complete.mar、firefox-3.0.complete.mar、firefox-3.0.19.complete.mar、firefox-3.5.complete.mar、firefox-3.5.9.complete.mar、firefox-3.6.complete.mar、firefox-3.6.2.complete.mar,這些檔案應該都會位於對應版本的 update/win32/en-US 目錄內。

3. 任何一個可以壓縮及解壓縮 zip 的軟體,請確認你使用的是「zip」格式,而不是 7z(7-zip 的格式)、zipx(WinZip 12 版以後的新的預設格式)等,否則最後的 U3 安裝檔會無法使用。

4. 任何一個純文字編輯軟體。可以協助你處理 XML 的更好,但不是必要。

檔案準備好後,就開始動手吧:

1. 建立一個目錄,例如 C:\fxu3\

2. 用可以解 zip 壓縮檔的軟體,把你的 firefox.u3p 檔案「解壓縮」到步驟 1. 的目錄內。沒錯,任何 u3p 檔案其實都是 zip 格式的壓縮檔。

3. 建立另一個目錄(這很重要!),例如 C:\fxupdater\

4. 從 C:\fxu3\Device\firefox\ 裡面把 updater.* 全部複製到 C:\fxupdater\ 裡面。Firefox 2.x、3.0.x 的話,會是 updater.exe 和 updater.ini 兩個檔案,Firefox 3.5.x 之後除了 updater.exe 和 updater.ini 兩個檔案外,還要多複製一個 update.locale 檔案過去

5. 把要使用的 MAR 更新檔複製到 C:\fxupdater\ 裡面,並且把檔名改為 update.mar(這很重要!)

6. 叫出命令列(也就是執行 cmd.exe),別忘了權限問題。

7. 切換到步驟一的目錄中,實際有 firefox.exe 的目錄。換句話說,你應該會用到像這樣的指令:
代碼:
c:
cd c:\fxu3\Device\firefox


8. 執行更新指令。如果你的 Firefox 目前(也就是更新前)還在 3.0.x 或 2.x 的版本的話,要用這樣的指令:
代碼:
c:\fxupdater\updater.exe c:\fxupdater\ 0

如果你的 Firefox 目前(也就是更新前)是 3.5 以後的版本,則要用這樣的指令:
代碼:
c:\fxupdater\updater.exe c:\fxupdater\

(兩個指令只差在最後面有沒有一個空格跟一個數字 0)

9. 更新執行完畢後,繼續下達下列指令:
代碼:
type c:\fxupdater\update.status

這個指令會顯示出 update.status 的內容,如果顯示出來為「succeeded」,就表示成功套用更新了。如果是其他內容,則表示一定哪裡有錯,需要進一步排除。如果遇到錯誤的話,可以查看 update.log 檔案的內容,協助除錯。

10. 確認成功套用更新後,繼續下達下列指令:
代碼:
copy /Y c:\fxupdater\update.log c:\fxu3\Device\firefox\uninstall\uninstall.update

這個指令會把 update.log 複製到 Firefox 主程式所在路徑的 uninstall 目錄中,並且更名為 uninstall.update;如果原本就有 uninstall.update 存在的話,則會覆蓋過去。

11. 最後用這個指令離開命令列:
代碼:
exit


12. 還沒結束,用純文字編輯軟體,開啟 c:\fxu3\Manifest\manifest.u3i 檔案,這是個 XML 格式的純文字檔。

13. 在檔案第二列有個 <application uuid="3C9F7B3F-D55C-42cd-8537-B878518B73AF" version="2.0.0.4">,最後面的 version="2.0.0.4" 就是我們的目標,把它改成更新後的版本號,例如 2.0.0.20、3.0.0.0、3.0.0.19、3.5.0.0、3.5.0.9、3.6.0.0、3.6.0.2 等,然後存檔,關閉。

14. 用 zip 格式,把 c:\fxu3\ 目錄內的四個子目錄(Data、Device、Host、Manifest)壓縮成一個 firefox.zip 壓縮檔;請注意,壓縮檔內應該就直接是上述四個目錄,而不會有「fxu3」這個目錄存在。

15. 把步驟 14. 取得的 firefox.zip 檔案更名為 firefox.u3p,也就是把副檔名從 .zip 變更為 .u3p,如此就獲得了新版的 Firefox for U3 安裝檔了。最後並把步驟 1. 和步驟 3. 建立的目錄清乾淨。(這個時候請注意,別把剛做出來的 firefox.u3p 也一併刪除啦!)

16. 用步驟 15. 獲得的 firefox.u3p 取代步驟 2. 的,重複步驟 1. 到 15.,就可以製作出各個不同版本的 Firefox for U3 安裝檔。

就這樣,很簡單吧!如果你懶得自己來,心臟又很大,也可以試試看我自己用上述步驟做好的、但是未經妥善測試的版本:
Firefox 2.0.0.20 for U3
Firefox 3.0.19 for U3
Firefox 3.5.9 for U3

註:本文亦發表於我自己的部落格,日後若有更新大概也會以部落格那邊為主/為準。


最後由 Jedi 於 2010-04-01, 19:53 編輯,總共編輯了 2 次。

回頂端
Opera/9.80 (Windows NT 5.1; U; zh-tw) Presto/2.2.15 Version/10.10
 個人資料  
引用回覆  
文章發表於 : 2010-04-01, 19:51 
離線

註冊時間: 2010-03-31, 22:41
文章: 4
來自: a long time ago, in a galaxy far far away....
補充說明一下,理論上 Thunderbird for U3 也可以適用這樣的方法。


回頂端
Opera/9.80 (Windows NT 5.1; U; zh-tw) Presto/2.2.15 Version/10.10
 個人資料  
引用回覆  
文章發表於 : 2010-04-01, 20:20 
離線

註冊時間: 2003-11-18, 10:59
文章: 3473
謝謝 Jedi 很棒的心得分享,可惜我沒有 U3 隨身碟可以試,不知道一般相機的記憶卡能不能這樣用?

因為時間點的關係,看到這篇時,遲疑了一下,不知是真的還是假的 :P

_________________
:::: 簽名檔分隔線 ::::
免費好用又自由的輸入法 gcin Windows | 勸大家以後不要再買 ATI


回頂端
Mozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.1.6) Gecko/20091216 Iceweasel/3.5.8 (like Firefox/3.5.8)
 個人資料  
引用回覆  
文章發表於 : 2010-04-01, 21:15 
離線

註冊時間: 2010-03-31, 22:41
文章: 4
來自: a long time ago, in a galaxy far far away....
相機記憶卡就沒辦法跑 U3 了,不過我想各種版本的 Firefox 都應該可以比照處理纔對。

實際上或許並不需要這麼辛苦地自己來,因為印象中 PortableApps.com 一直有在維護不同主要版本的 Firefox for PortableApps.com……當然,考慮到 Firefox 有一大堆不同的可攜版本跟社群版本,上述的資訊可能還是派得上用場。

最後,我從 2005 年起就不再開愚人節玩笑(如果有的話,也一定會明白表達那是個玩笑)了,所以請放心服用。


回頂端
Opera/9.80 (Windows NT 5.1; U; zh-tw) Presto/2.2.15 Version/10.10
 個人資料  
引用回覆  
顯示文章 :  排序  
發表新文章 回覆主題  [ 4 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 52 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
cron
Powered by phpBB® Forum Software © phpBB Group
正體中文語系由 竹貓星球 維護製作
© moztw.org, Mozilla Foundation
MozTW,Mozilla 台灣社群