0

每当我按IE 中的打开图标时,我都会在控制台中收到错误消息:错误:NS_ERROR_FILE_NOT_FOUND:组件返回失败代码:0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIProcess.init] 源文件:chrome://openinie/content/openinie.js行:126(这发生在升级到 16.0 之后,我认为它可能与安全相关)

我发现该 js 文件位于某个“openinie@wittersworld.com.xpi”文件中(我巧妙地将其重命名为 zip),并看到了违规行:

    var iePath = openinie.getIEPath();

    // create an nsILocalFile for the executable
    var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
    file.initWithPath(iePath);

    // create an nsIProcess
    var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
    process.init(file);  // <-line 126

  1. 是否可以修复它并“重新编译”它压缩和重命名?(我认为这可能是安全的东西)。
  2. 我可以使用例如警报框来调试它以显示变量的值吗?
4

1 回答 1

1

是否可以修复它并“重新编译”它压缩和重命名

是的,您可以简单地替换 ZIP 存档中的一个文件,大多数扩展都没有签名(如果是,您可以META-INF从 XPI 文件中删除该目录)。事实上,为了您的调试,最好解压缩openinie@wittersworld.com.xpi到同一个文件夹中命名openinie@wittersworld.com的目录并删除原始文件 - 这样您就不需要在每次更改时打包/解压缩。您还应该使用-purgecaches命令行参数启动 Firefox,否则您正在更改的文件可能会被缓存。

我可以使用例如警报框来调试它以显示变量的值吗?

是的。但是,我宁愿推荐在不打开模式对话框的情况下登录到错误控制台(按 Ctrl-Shift-J 打开它)的Components.utils.reportError()方法。在这种特殊情况下,我会写:

Components.utils.reportError(iePath);

这似乎指向一个不存在的文件,这意味着该getIEPath()功能有问题。

祝你好运!

于 2012-11-02T22:47:54.127 回答