(原創(chuàng)作品,轉(zhuǎn)載請(qǐng)注明出處。)
插件寫(xiě)好了,下面就該做一個(gè)安裝包了。最好再提供更新功能,以便在插件有更新的時(shí)候,及時(shí)通知用戶進(jìn)行插件更新。
我們開(kāi)發(fā)的時(shí)候,直接將生成的dll丟到Firefox安裝目錄下的plugins目錄就可以工作了,但是你如何說(shuō)服讓用戶來(lái)手動(dòng)完成這件事情?估計(jì)很難。因此,提供一個(gè)安裝包,可能是最好的選擇。用戶只需要點(diǎn)幾下鼠標(biāo)就可以完成插件的安裝了。
不過(guò)到寫(xiě)這篇文章的時(shí)候,我還不清楚怎么讓安裝包經(jīng)過(guò)Mozilla的驗(yàn)證,因?yàn)闆](méi)有經(jīng)過(guò)驗(yàn)證的插件,在安裝的時(shí)候會(huì)出現(xiàn)“僅安裝信任作者的附加組件”提示對(duì)話框,提示用戶僅安裝受信任作者的插件。如果有人知道怎么去掉這個(gè)警告對(duì)話框,還望不吝賜教。
最最簡(jiǎn)單的插件安裝包在這篇文章中開(kāi)頭處寫(xiě)的很清楚了:https://developer.mozilla.org/en/Shipping_a_plugin_as_an_extension
安裝包的目錄結(jié)構(gòu):
install.rdf
plugins/
pluginlib.dll
plugintypes.xpt
其中xpt文件可選。install.rdf的內(nèi)容為:
<RDF xmlns=" xmlns:em=">
<Description about="urn:mozilla:install-manifest">
<em:id>mypluginid@myplugin.com</em:id>
<em:name>My Plugin</em:name>
<em:version>1.0</em:version>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.5</em:minVersion>
<em:maxVersion>3.0.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
將上面內(nèi)容安裝目錄結(jié)構(gòu)用zip格式壓縮,將后綴名改為xpi就OK了。
但是我們要做得事情遠(yuǎn)不止這些:
- 如何提供插件的更新自動(dòng)通知?
- 如何將擴(kuò)展和插件捆綁在一起讓用戶安裝?(因?yàn)榭赡苣悴粌H僅要安裝插件,還希望在用戶的FF工具欄或菜單上添加一些擴(kuò)展功能)
- 如何對(duì)插件進(jìn)行簽名?
- 如何發(fā)布你的插件和擴(kuò)展,以便讓更多人知曉?
要做的事情還很多。那么我們就一個(gè)個(gè)來(lái)研究吧。
一、如何提供插件的更新自動(dòng)通知?
關(guān)于Install manifest(即install.rdf)文件內(nèi)容,Mozilla有篇很詳細(xì)的文章:https://developer.mozilla.org/en/Install.rdf,可以進(jìn)行參考。
其中有個(gè)節(jié)點(diǎn)名稱(chēng)是:updateURL。用這個(gè)標(biāo)簽包含一個(gè)可查詢更新信息的URL連接,今后當(dāng)FF在查詢插件是否有更新時(shí),會(huì)到你指定的這個(gè)URL上去查詢。
這個(gè)URL可以是一個(gè)cgi程序、servlet、asp(x),也可以是一個(gè)固定的rdf文件鏈接。另外文章中也提到了另外一種辦法:如果你沒(méi)有提供updateURL,F(xiàn)F的附加組件管理器會(huì)向addons.mozilla.org發(fā)送請(qǐng)求,當(dāng)你上傳了一個(gè)新版本的插件或者通過(guò)作者接口(author interface)更改了兼容性參數(shù),一個(gè)更新的manifest文件將會(huì)被自動(dòng)產(chǎn)生。另外,Mozilla建議updateURL使用https而非http,否則你應(yīng)該提供updateKey(可以用McCoy生成)。
那么,負(fù)責(zé)更新的rdf怎么編寫(xiě)呢?你可以參考這篇文章:https://developer.mozilla.org/en/Extension_Versioning%2c_Update_and_Compatibility#Update_RDF_Format。由于文章中寫(xiě)的很清晰,并且提供了詳細(xì)的例子代碼,這里我就不廢話了。
二、如何將擴(kuò)展和插件捆綁在一起讓用戶安裝?
這個(gè)很簡(jiǎn)單。之前的章節(jié)我們已經(jīng)做過(guò)一個(gè)簡(jiǎn)單的Extension安裝包,如果想附加一個(gè)插件的話,只需要和chrome的同級(jí)目錄下新建一個(gè)plugins目錄,然后將dll及相關(guān)文件放在里面,最后一起打包即可。
當(dāng)在FF中安裝此xpi時(shí),F(xiàn)F會(huì)將Extension和Plugin解壓到FF的Profiles目錄下。插件和擴(kuò)展即可生效。
注意這里與我們之前將插件dll放在FF安裝目錄下的plugins目錄下有些不同(至少位置不同),F(xiàn)F同樣能夠正確地識(shí)別我們的插件。另外Mozilla也推薦做成安裝包,這樣,在用戶卸載組件的時(shí)候,可以同時(shí)將Extension和Plugin都卸載掉。
三、如何對(duì)插件進(jìn)行簽名?
很抱歉,還沒(méi)找到答案……
四、 如何發(fā)布你的插件和擴(kuò)展,以便讓更多人知曉?
首先需要在Mozilla網(wǎng)站上注冊(cè)一個(gè)賬號(hào)(需要提供合法E-mail,因?yàn)橐せ睿?/p>
登錄后,在Mozilla 附加組件首頁(yè)上你會(huì)看到一個(gè)“開(kāi)發(fā)者工具”的鏈接。進(jìn)入后,會(huì)有明顯的導(dǎo)航鏈接,如“提交附加組件”。通過(guò)這個(gè)頁(yè)面,按照向?qū)В憔涂梢詫⒛愕牟寮l(fā)布出來(lái)了。剩下的事,就是宣傳咯,呵呵。
OK,《我的Firefox插件開(kāi)發(fā)之旅》系列文章就先到這里。將來(lái)我也許還會(huì)寫(xiě)一些關(guān)于編寫(xiě)FF的Extension和Plugin方面的技術(shù)細(xì)節(jié)文章。看心情吧,呵呵。