利用NPAPI开发浏览器插件过程中,发现自己开发的插件调用了多个第三方dll动态库文件。起初按照火狐社区中的方法只在注册表中添加了自己开发的dll文件,未将第三方的dll文件进行注册,浏览器每次加载测试页面的时候,FireFox会出现死机,而且在任务管理器中可以发现有多个plugins-container.exe进程出现。于是在网络中搜索了有关dll打包整合以及NPAPI插件打包的相关资料。现整理如下(由于未找到原帖的出处,下文中的连接是本人转载的网址):
DLL的打包工具:ILMerge,参考:http://blog.163.com/ydm_helloworld/blog/static/1091924162009912155914/
NPAPI开发插件的打包,参考:http://www.xue5.com/WebDev/Site/694148.html
现将第二篇博文的内容转载下来,以备以后仔细学习:
我们开发好的插件需要交给用户使用的,我们自己在开发的过程中可能有各式各样的方法来使插件可以运行,但是如果要交给用户使用,我们总不至于让用户自己去写注册表,或者让用户将咱们的dll复制到plugins目录下吧!为了让用户的安装操作简单化,介绍两种方法:
按照扩展的方式将插件打包
这种方式根据浏览器不同需要采取不同的打包方式,比如Firefox需要打包为xpi,而chrome则需要打包为crx。可以参考: Chrome和Firefox的xpi与crx加载第三方dll 来进行。下面是简要描述一下过程: 1、创建一个plugins文件夹以及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>该文件中targetApplication中只需要修改minVersion和maxVersion,表示用于Firefox的版本范围。unpack一定要是true。其他值根据需要自行设置。该文件最好保存为UTF-8编码,如果文件中只有英文字符保存为ANSI也是可以的。
{ "manifest_version": 2, "name": "demoplugin", "version": "1.0.0", "description": "demo plugin package for chrome", "plugins": [ { "path": "npdemo.dll", "public": true } ] }
安装crx文件需要打开扩展程序页面,然后将crx文件拖放到扩展程序页面即可继续安装,xpi文件则只需要在Firefox运行时,拖动到浏览器窗口内就可以安装,不需要打开某个特定页面。
制作msi安装包
这种方式其实就是写注册表的方式,只不过由msi安装程序完成了写注册表的过程,用VS2010制作插件安装包的步骤如下:这只是制作安装npapi插件的最基本步骤,要做一个个性化的msi安装程序可能还需要更多的操作,就不进行深究了。
Author:zssure
Date: 2013-07-21
E-mail:[email protected]