我的玻璃盒子

【原创】我的Firefox插件开发之旅(4)——XULRunner的一个例子

上一节写了一个Extension,添加了一个按钮在FF3的工具栏上。接下来我准备在这个基础上添加一个功能,点击按钮,读取本地磁盘上一个文件的内容,并显示出来。怎么做呢?用Javascript吗?因为我最终的目标是从服务器上下载文件,也可能会传输本地文件到服务器上,用Javascript访问本地文件有诸多限制,而且也无法完成复杂的功能。所以最好是能够调用我编写的 DLL那就最好不过了。怎么做呢?还是在Mozilla网站上找找看吧。

在Mozilla网站上看到,可以自己编写Component来完成一些自定义操作。需要首先安装Gecko SDK(现在叫XULRunner SDK),Windows上有两个版本,1.8是for FF1.5/2.0的,1.9是for FF3.0的,由于我机器上安装的是FF3.0,那么就先下载1.9吧,与FF1.5/2.0兼容的问题以后再说。

下载了XULRunner SDK 1.9,解压到本地后,在环境变量里配置了PATH到xulrunner-sdk的bin目录,以便可以在command prompt下直接运行xulrunner.exe。OK,环境配置完毕,下面来个写个小例子吧。Mozilla提供了一个短小精悍的例子程序,在这里:https://developer.mozilla.org/en/Getting_started_with_XULRunner

这篇文章一步一步教我们编写一个HelloWorld程序,写的很清楚。不过做完这个例子,我有几个疑问:
1、在上一节我们写的Extension中,chrome.manifest这个文件是放在根目录的(与chrome目录同级),为什么这里把它放在了chrome目录里面呢?能否保持和Extension相同?我简单尝试了一下,并修改了chrome.manifest里面content所指向的目录,然后运行了一下,什么都没发生,没有看到正常运行时所弹出的对话框,看来还是解析不正确,是不是xulrunner必须要求chrome.manifest在chrome目录下面呢?
2、application.ini中App节的ID,和Extension的ID(通常是一个GUID)有无关联呢?
3、调用xulrunner.exe以后,会产生两个目录:extensions和updates,这两个目录是干什么用的呢?

另外这里需要特别说明一点:在运行xulrunner去执行application.ini时,千万不能丢掉.exe,即不能写/>xulrunner application.ini,必须是/>xulrunner.exe application.ini,否则会弹出couldn't parse的错误提示,具体是什么原因我也不清楚。

另外,这里还有一篇关于xulrunner的教程,解释了一些概念性的东西:http://blogs.acceleration.net/ryan/archive/2005/05/06/1073.aspx

写完这个例子,感觉方向好像不太对,xulrunner好像主要还是做界面,怎么做组件呢?怎么访问本地磁盘文件、甚至系统注册表?在Mozilla的开发者页面上又看到一个东东:XPCOM,开头的一段介绍文字是这样的:

XPCOM is a cross platform component object model, similar to Microsoft COM. It has multiple language bindings, letting the XPCOM components be used and implemented in JavaScript, Java, and Python in addition to C++. Interfaces in XPCOM are defined in a dialect of IDL called XPIDL.

XPCOM itself provides a set of core components and classes, e.g. file and memory management, threads, basic data structures (strings, arrays, variants), etc. The majority of XPCOM components is not part of this core set and is provided by other parts of the platform (e.g. Gecko or Necko) or by an application or even by an extension.

大概的意思是说XPCOM类似于微软的COM组件概念,它可以定义一些接口,可以在JS、Java、Python以及C++中使用。哈哈,看来这个才是我想要的东西。OK,那接下来我就来研究一下这个东东吧。下一节争取能完成我一开始提到的功能。

posted on 2008-11-10 11:54 深蓝色系统 阅读(15369) 评论(1)  编辑 收藏 引用 所属分类: Firefox开发

评论

# re: 我的Firefox插件开发之旅(4)——XULRunner的一个例子 2009-07-09 13:57 tmy13

根据博主写的也试着建立了个hello world的项目,不过有点疑问的是虽然能成功编译了,也在firefox下运行了。不过到底如何才能使它成为一个firefox的插件呢?这个xulrunner到底是何用处的,想请博主指点下,谢谢了  回复  更多评论   

# re: 【原创】我的Firefox插件开发之旅(4)——XULRunner的一个例子 2016-06-12 23:08 伟迪

您好 我这边调用的是xulrunner-41.0b9.en-US.win64.sdk,请问这个需要怎么调用;1.8版本没有问题  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

统计

常用链接

留言簿(75)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜