Mac 下開發 Firefox Addon 筆記

2008/06/20
~ 阿亮 ~

主要參考這篇來進行: Building an Extension-MDC 

Firefox/Thunderbird Extension Wizard : 先產生一份 extension framework (helloworld.zip)。 解開之後,build.sh 要改下面這些東西

1.

mkdir --parents --verbose $TMP_DIR/chrome

改成

mkdir -p -v $TMP_DIR/chrome

2.

cp --verbose --parents $FILES $TMP_DIR

改成

cp -v -p $FILES $TMP_DIR

3.

cp --verbose $ROOT_FILE $TMP_DIR

改成

cp -v $ROOT_FILE $TMP_DIR

4. 也可能會有下述的錯誤訊息

sed: 1: "s/^(content\s+\S*\s+)(\ ...": \1 not defined in the RE

sed: 1: "s/^(skin|locale)(\s+\S* ...": \1 not defined in the RE

這是 sed 處理內,\\1 似乎 backslash 處理不好,

sed -i -r s/^\(content\\s+\\S*\\s+\)\(\\S*\\/\)$/\\1jar:chrome\\/$APP_NAME\\.jar!\\/\\2/ chrome.manifest

sed -i -r s/^\(skin\|locale\)\(\\s+\\S*\\s+\\S*\\s+\)\(.*\\/\)$/\\1\\2jar:chrome\\/$APP_NAME\\.jar!\\/\\3/ chrome.manifest

一直調不好,只好這兩行改用 perl 處理 !!充血!!

perl -i -pe 's/^(content\s+\S*\s+)(\S*\/)(\s+\S*\s*)$/\1jar:chrome\/'$APP_NAME'\.jar!\/\2\3/' chrome.manifest

perl -i -pe 's/^(skin|locale)(\s+\S*\s+\S*\s+)(.*\/)$/\1\2jar:chrome\/'$APP_NAME'\.jar!\/\3/'   chrome.manifest

   

◎ 在測試 (Test) 的情形下,不用每次都重新建立 helloworld.xpi,安裝再重開 Firefox.

  1. 在 ~/Library/Apllication Suppor/Firefox/Profiles/ 目錄,會有類似 <xxxyxxy>.default 的目錄,其中 <xxxyxxy> 名稱每次新增都會不一樣。
  2. 在該目錄下的 extensions 目錄新增一個檔案,該檔名為 extension 的 ID,可在 install.rdf 內的 <em:id> 內找到,比如 helloworld@derjohng.sun
  3. 比如
     ~/Library/Apllication Suppor/Firefox/Profiles/xxxyxxy.default/extensions/helloworld@derjohng.sun
  4. 該檔案內填入,你在開發的 extension 的目錄位置。
  5. 這樣改完程式,重開 Firefox 即可。
  6. 原本 Extension Developer Addon  有「Reload Chrome」可以不用重開 Firefox,但我每試必當掉,所以,只好改用另一個 QuickRestart Addon  來重開了。

 

◎ 在 GreaseMonkey 開發的 Script 可以藉由 User Script Compiler  轉換成 Firefox Addon。  

◎ 在 Firefox2 下寫好的 Addon,轉到 Firefox3 下執行,Error Console 可能會有下列的訊息,

Security Error: Content at ********** may not load or link to chrome://helloworld/skin/hellow.png

只要在 chrome.mainifest 原來的

content    helloworld    content/

加上 contentaccessible=yes 即可

content    helloworld    content/   contentaccessible=yes

 

◎ 這裡有關於開發 Addon 的簡體中文版 。  

XULRunner  是個蠻好玩的東西

可以用做 Firefox Addon 的相同架構,用 XUL 和 Javascript 就可以做成應用程式,比如 Chatzilla on XULRunner 。就是和 Adobe AIR 相同概念的東西。

 

◎ Addon 開發,如何有新的版本,如何發布更新機制,有二種方法:

一種是放在 https 的 secure web server 下,這又分兩種

  • 一是放到 Mozilla 下,但一開始放在實驗並不提供下載,等到有人「查核」,才會開放。
  • 一是自己要有 https 伺服器,這種在 webhosting 很貴,而自己架 self-CA 的話,在 Firefox3之後,這種是不准許的

另一種就是 http 但要加 hashKey  的方式,流程整理如下:

  • 安裝 McCoy 軟體 
  • 新增一個 Key
  • 在 Addon 包裝成 xpi 前,用McCoy 的「Install」選單將公開 Key 放到 Install.rdf.
  • 包裝成 xpi
  • 準備好 update.rdf 的描述檔,內容要指定到上述包裝好的 xpi,並放在一起
  • 其中用 openssl 產生該 xpi 檔案的 hash 值,將該值填到 update.rdf 內
  • openssl sha1 &lt;your xpi file&gt;
    
  • 用 McCoy 的「Sign」選單指定 update.rdf
  • 將 xpi 和 update.rdf 一起放到 install.rdf 指定的公開網址。

蠻有趣的機制



站內搜尋



本站其他服務

本站其他軟體



  • 下一班公車(nextBus)

    這個 app 只要開啟後,就根據定位幫你過濾出附近站牌的時刻表,以及提供相關公車預計到站的時間,方便您在很快時間內確定要坐的哪一班公車


  • 照片去背(PhotoEraser)

    一款方便移除背景的工具,產生透明背景圖可以存回原本相簿,也可分享到其他 App 使用.


  • 油價快訊App (OilPrices)

    依據油價及匯率,估算台灣下週油價,另外提供三週、一年以及三年的歷史變化,以及週末下午推播通知最新油價預估或公告。


  • 股海快訊 (iNews123)

    提供特定個股新聞更新推播、股價警示推播、新聞社群分享以及每日個股收盤價等功能的股票App/股市App.


  • 下一班高鐵 (nextTHSR)

    這個 app 只要開啟後,就根據定位幫你過濾出最近高鐵站的時刻表,不用再按任何按鈕了,方便您在很快時間內確定要坐的哪一班高鐵


  • 批踢踢快訊 (pttNews)

    身為鄉民的您,是不是常常覺得現在的批踢踢 (PTT) 閱讀器,明明您就只要看幾個板,都幫您分類好,但不是您要的?甚至您只想關注某個人(或某件事)的消息,卻散布在不同東西,找出來很辛苦? 這個 App 可以解決您這些問題,快來用吧!