我想恢复为Firefox 11创建的废弃附加组件。此附加组件通过本机dll控制设备。使用Firefox 32 addon-api和ctx,我看不到如何:
1)将冗长的自定义init代码插入bootstrap.js或harness-options.json。
2)在xpi存档中包含其他二进制文件
3)发现或确定在我的附加组件中使用外部代码的可执行路径
我有原始旧xpi的副本。我可以看到他们如何将所需的dll放在“。\ plugins \ 5.9.6.0000 \ foobar.dll”中。我可以看到他们在。\ bootstrap.js中使用了“安装”功能。我在这里包含了一些bootstrap.js的原始代码。
function registerPlugin()
{
var profPath = Components.classes["@mozilla.org/file/directory_service;1"].getService( Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path;
var wrk = Components.classes["@mozilla.org/windows-registry-key;1"]
.createInstance(Components.interfaces.nsIWindowsRegKey);
wrk.open(wrk.ROOT_KEY_CURRENT_USER, "SOFTWARE", wrk.ACCESS_ALL);
if(!wrk.hasChild("MozillaPlugins"))
wrk = wrk.createChild("MozillaPlugins", wrk.ACCESS_ALL);
else
wrk = wrk.openChild("MozillaPlugins", wrk.ACCESS_ALL);
var t1 = wrk.createChild("blueglow@hardcorps.com", wrk.ACCESS_ALL);
t1.writeStringValue("Description", "CanCan extension for BagMan");
t1.writeStringValue("ProductName", "CanCan extension for BagMan");
t1.writeStringValue("Vendor", "Hardcorps Inc.");
t1.writeStringValue("Version", "5.9.6.0000");
t1.writeStringValue("Path", profPath + "\\extensions\\blueglow@hardcorps.com\\plugins\\5.9.6.0000\\foobar.dll" );
var t2 = t1.createChild("MimeTypes", wrk.ACCESS_ALL);
t2.createChild("application/blueglow-ff-plugin", wrk.ACCESS_ALL);
t2.close();
t1.close();
wrk.close();
Components.classes['@mozilla.org/appshell/window-mediator;1']
.getService(Ci.nsIWindowMediator)
.getMostRecentWindow('navigator:browser')
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow).navigator.plugins.refresh(false);
}
function install(data, reason)
{
registerPlugin();
}
答案 0 :(得分:0)
将dll放入你的插件,然后通过js-ctypes使用它。
这是Mac上的一个示例,他们使用.dylib而不是.dll:
来源:https://github.com/vasi/firefox-dock-progress/tree/master
汇编来源:https://addons.mozilla.org/en-US/firefox/files/browse/185970/file/chrome/content/DockProgress.jsm