一、开发环境设置
下载 XULRunner和 XULRunner SDK,当前版本是1.8.1.3。可以在 http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/找到最新的版本。
解压到一个目录下,我的目录结构:
这个SDK里还需要两个dll文件,下载 wintools.zip,从buildtools/windows/bin/x86里拷贝libIDL-0.6.dll、glib-1.2.dll到xulrunner/gecko-sdk/bin下。
二、XULRunner:Hello World!
在xulrunner创建tests目录,如下:
tests
|--application.ini
|--defaults
| |--preferences
| | |--prefs.js
|--chrome
| |--chrome.manifest
| |--HelloWorld
| | |--test.xul
application.ini
chrome.manifest:
test.xul:
在命令行下,进入xulrunner目录:
三、创建XPCOM组件
参考: How to build a binary XPCOM component using Visual Studio
VC++ Express Project: xpcom-test.zip
主要有6步:
在上面建立的tests下创建components目录,把生成的.xpt、.dll文件拷贝到components。
修改test.xul文件:(注意,要保存为uft-8编码。)
修改application.ini的
BuildID,我改为20070601,运行这个程序就可以测试了。
下载 XULRunner和 XULRunner SDK,当前版本是1.8.1.3。可以在 http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/找到最新的版本。
解压到一个目录下,我的目录结构:
这个SDK里还需要两个dll文件,下载 wintools.zip,从buildtools/windows/bin/x86里拷贝libIDL-0.6.dll、glib-1.2.dll到xulrunner/gecko-sdk/bin下。
二、XULRunner:Hello World!
在xulrunner创建tests目录,如下:
tests
|--application.ini
|--defaults
| |--preferences
| | |--prefs.js
|--chrome
| |--chrome.manifest
| |--HelloWorld
| | |--test.xul
application.ini
[App]
Vendor=Duo
Name=tsetApp
Version=0.1
BuildID=20070530
[Gecko]
MinVersion=1.8
MaxVersion=1.8
prefs.js:
Vendor=Duo
Name=tsetApp
Version=0.1
BuildID=20070530
[Gecko]
MinVersion=1.8
MaxVersion=1.8
pref(
"
toolkit.
defaultChromeURI
"
,
"
chrome://tests/content/test.xul
"
);
content tests HelloWorld
/
<?
xml version="1.0"
?>
<? xml-stylesheet href="chrome://global/skin/" type="text/css" ?>
< window id ="controller-example" title ="Hello World"
xmlns ="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >
< label value ="Hello World!" />
</ window >
<? xml-stylesheet href="chrome://global/skin/" type="text/css" ?>
< window id ="controller-example" title ="Hello World"
xmlns ="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >
< label value ="Hello World!" />
</ window >
xulrunner.exe tests/application.ini
三、创建XPCOM组件
参考: How to build a binary XPCOM component using Visual Studio
VC++ Express Project: xpcom-test.zip
主要有6步:
- 把"xulrunner/gecko-sdk/include"加到Additional Include Directories里
- 把 "xulrunner/gecko-sdk/lib"加到Additional Library Directories里
- 添加"nspr4.lib xpcom.lib xpcomglue_s.lib"库
- 添加"XP_WIN;XP_WIN32″宏
- 不使用]预编译头
- 自定义XPCOM IDL编译步骤(右击*.idl文件,属性->自定义->命令行,输入$(ProjectDir)xpidl-build.bat $(InputFileName))
在上面建立的tests下创建components目录,把生成的.xpt、.dll文件拷贝到components。
修改test.xul文件:(注意,要保存为uft-8编码。)
<?
xml version="1.0"
?>
<? xml-stylesheet href="chrome://global/skin/" type="text/css" ?>
< window id ="controller-example" title ="Controller Example"
xmlns ="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >
< script >
function doXPCOM() {
try {
const cid = "@starkravingfinkle.org/specialthing;1";
var obj = Components.classes[cid].createInstance();
obj = obj.QueryInterface(Components.interfaces.ISpecialThing);
}
catch(err) {
alert(err);
return;
}
var res = obj.add(3, 4);
alert('3+4 = ' + res);
var name = obj.name;
alert('Name = ' + name);
obj.name = 'New Name';
name = obj.name;
alert('Name = ' + name);
}
</ script >
< button id ="testXPCOM" label ="测试XPCOM" oncommand ="doXPCOM();" />
</ window >
<? xml-stylesheet href="chrome://global/skin/" type="text/css" ?>
< window id ="controller-example" title ="Controller Example"
xmlns ="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >
< script >
function doXPCOM() {
try {
const cid = "@starkravingfinkle.org/specialthing;1";
var obj = Components.classes[cid].createInstance();
obj = obj.QueryInterface(Components.interfaces.ISpecialThing);
}
catch(err) {
alert(err);
return;
}
var res = obj.add(3, 4);
alert('3+4 = ' + res);
var name = obj.name;
alert('Name = ' + name);
obj.name = 'New Name';
name = obj.name;
alert('Name = ' + name);
}
</ script >
< button id ="testXPCOM" label ="测试XPCOM" oncommand ="doXPCOM();" />
</ window >