轉http://blog.csdn.net/z6482/article/details/8843190
我們開發好的插件需要交給用戶使用的,我們自己在開發的過程中可能有各式各樣的方法來使插件可以運行,但是如果要交給用戶使用,我們總不至於讓用戶自己去寫註冊表,或者讓用戶將咱們的dll複製到plugins目錄下吧!爲了讓用戶的安裝操作簡單化,介紹兩種方法:
按照擴展的方式將插件打包
這種方式根據瀏覽器不同需要採取不同的打包方式,比如Firefox需要打包爲xpi,而chrome則需要打包爲crx。可以參考:Chrome和Firefox的xpi與crx加載第三方dll來進行。下面是簡要描述一下過程:
打包爲xpi
1、創建一個plugins文件夾以及install.rdf文件,如圖所示:
2、將插件的dll及dll依賴的其他模塊全部放到plugins目錄下(說明:對於簡單的插件,一般就只有插件的dll,如果在插件中調用了其他dll,那麼最好也將這些dll都放到這個plugins目錄下)
3、填寫install.rdf文件的內容,如下:
- <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
- <Description about="urn:mozilla:install-manifest">
- <em:id>[email protected]</em:id>
- <em:name>plugin name</em:name>
- <em:version>1.0</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>4.0</em:minVersion>
- <em:maxVersion>19.0</em:maxVersion>
- </Description>
- </em:targetApplication>
- <em:unpack>true</em:unpack>
- </Description>
- </RDF>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>[email protected]</em:id>
<em:name>plugin name</em:name>
<em:version>1.0</em:version>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>4.0</em:minVersion>
<em:maxVersion>19.0</em:maxVersion>
</Description>
</em:targetApplication>
<em:unpack>true</em:unpack>
</Description>
</RDF>
該文件中targetApplication中只需要修改minVersion和maxVersion,表示用於Firefox的版本範圍。unpack一定要是true。其他值根據需要自行設置。該文件最好保存爲UTF-8編碼,如果文件中只有英文字符保存爲ANSI也是可以的。
最後將plugins文件夾和install.rdf文件一起壓縮爲zip壓縮包,然後將這個zip壓縮包的後綴更改爲xpi即可。
打包爲crx
1、 創建一個文件夾,如:test。
2、 將需要打包的插件複製到剛纔創建的文件夾中,同時在文件夾中創建一個文件manifest.json。
3、 在manifest.json中寫入如下內容:
- {
- "manifest_version": 2,
- "name": "demoplugin",
- "version": "1.0.0",
- "description": "demo plugin package for chrome",
- "plugins": [
- { "path": "npdemo.dll", "public": true }
- ]
- }
{
"manifest_version": 2,
"name": "demoplugin",
"version": "1.0.0",
"description": "demo plugin package for chrome",
"plugins": [
{ "path": "npdemo.dll", "public": true }
]
}
manifest_version的值不需要改變,其他各項根據需要進行修改,plugins項的path表示插件dll相對於該json文件的相對路徑,public的值設置爲true或者false皆可。Test文件夾中的內容:
4、 進行打包,打開chrome瀏覽器,點擊瀏覽器導航欄右邊的按鈕。在彈出的菜單中選擇工具->擴展程序,在打開的頁面中勾選上開發者模式,如下圖
點擊載入正在開發的擴展程序,找到並選擇我們剛纔的文件夾test。加載成功之後顯示如下
重新加載是爲了在你修改了某些文件之後需要讓chrome重新加載時使用的。
點擊打包擴展程序,在彈出的界面中選擇剛纔的test文件夾,就可以將擴展程序進行打包了,打包之後就會在test文件夾相同目錄下生成一個crx文件和一個pem文件,這個crx文件就是我們需要的,可以將這個crx文件發佈給用戶進行安裝。
安裝crx文件需要打開擴展程序頁面,然後將crx文件拖放到擴展程序頁面即可繼續安裝,xpi文件則只需要在Firefox運行時,拖動到瀏覽器窗口內就可以安裝,不需要打開某個特定頁面。
製作msi安裝包
這種方式其實就是寫註冊表的方式,只不過由msi安裝程序完成了寫註冊表的過程,用VS2010製作插件安裝包的步驟如下:
1. 新建項目,選擇安裝和部署->安裝項目。填寫項目名稱,如下圖所示:
2. 項目創建之後自動顯示文件系統頁面,如下圖所示:
假設我們要將插件dll默認安裝到Program Files 文件夾下面的npapi_plugins文件夾中,首先在目標計算機上的文件系統上右鍵點擊出現的菜單中選擇添加特殊文件夾->Program Files 文件夾,然後在添加的Program Files 文件夾上右鍵點擊選擇添加->添加文件夾,將新添加的文件夾命名爲npapi_plugins,如下圖所示:
3. 選中我們新建的npapi_plugins文件夾,然後將插件拖放到這個文件夾中,或者點右鍵,選擇添加->文件選擇要添加的文件。在添加的文件上右鍵點擊,選擇屬性,注意文件的Register設置爲vsdrfDoNotRegister,我這裏默認是這個值,如果不是這個值請修改爲這個值。
4. 右鍵點擊應用程序文件夾,選擇屬性窗口,在屬性窗口中設置默認位置如下,記住應用程序文件夾的Property,後面有用:
5. 文件添加好了,接下來需要在註冊表中註冊插件,選擇視圖->編輯器->註冊表,打開如下所示頁面:
展開HKEY_LOCAL_MACHINE\Software點右鍵新建->鍵,命名爲MozillaPlugins,然後在MozillaPlugins上點右鍵新建->鍵,命名爲@demo.plugin.org(這個值可以隨意命名,但大多都以@開頭),如下所示:
6.在剛纔新建的鍵上@demo.plugin.org點右鍵新建->字符串值,命名爲Path,在Path上點右鍵選屬性窗口,設置Path的值,如下圖所示:
注意[TARGETDIR]爲前面提到的應用程序文件夾的Property,[TARGETDIR]後面緊跟插件文件名,不需\。
6. 完成這些步驟,在項目上點擊右鍵生成,即可在Debug目錄下或者Release目錄下找到我們需要的npapiSetup.msi,同時還有一個setup.exe(這個我們不需要它)。將msi文件發佈給用戶即可。
這只是製作安裝npapi插件的最基本步驟,要做一個個性化的msi安裝程序可能還需要更多的操作,就不進行深究了。