主要參考這篇來進行: 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.
- 在 ~/Library/Apllication Suppor/Firefox/Profiles/ 目錄,會有類似 <xxxyxxy>.default 的目錄,其中 <xxxyxxy> 名稱每次新增都會不一樣。
- 在該目錄下的 extensions 目錄新增一個檔案,該檔名為 extension 的 ID,可在 install.rdf 內的 <em:id> 內找到,比如 helloworld@derjohng.sun
- 比如
~/Library/Apllication Suppor/Firefox/Profiles/xxxyxxy.default/extensions/helloworld@derjohng.sun
- 該檔案內填入,你在開發的 extension 的目錄位置。
- 這樣改完程式,重開 Firefox 即可。
- 原本 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 相同概念的東西。
Orignal From: Mac 下開發 Firefox Addon 筆記