我正在测试一个包含 Firefox 扩展作为一个组件的应用程序。它最初是在 FF3.5.5 是最新版本时部署的,并且在 3.5.6 和 3.5.7 中幸存下来。但是在 FF3.6 上,我在错误控制台中得到以下信息:
Warning: reference to undefined property Components.interfaces.nsIProcess2
Source file: chrome://overthewall/content/otwhelper.js
Line: 55
Error: Component returned failure code: 0x80570018 (NS_ERROR_XPC_BAD_IID)
[nsIJSCID.createInstance]
Source file: chrome://overthewall/content/otwhelper.js
Line: 55
抛出错误的函数是:
48 function otwRunHelper(cmd, aCallback) {
49 var file =
50 Components.classes["@mozilla.org/file/local;1"].
51 createInstance(Components.interfaces.nsILocalFile);
52 file.initWithPath(otwRegInstallDir+'otwhelper.exe');
53
54 otwProcess = Components.classes["@mozilla.org/process/util;1"]
55 .createInstance(Components.interfaces.nsIProcess2);
56
57 otwProcess.init(file);
58 var params = new Array();
59 params = cmd.split(' ');
60
61 otwNextCallback = aCallback;
62 otwObserver = new otwHelperProcess();
63 otwProcess.runAsync(params, params.length, otwObserver, false);
64 }
正如你所看到的,这个函数所做的只是运行一个带有一些命令行参数的外部 EXE 帮助文件(由注册表项定位),并设置一个观察者来异步等待响应并处理退出代码。
违规行暗示FF3.6 中不再定义 Components.interfaces.nsIProcess2 。它去哪儿了?我在 Mozilla 文档中找不到任何表明它在最新版本中已更改的内容。