如何使用Firefox Web-Extensions运行外部可执行文件?

Ele*_*ios -2 .net javascript json firefox-addon firefox-addon-webextensions

情景


我在使用Firefox v51.0的Windows 10 x64上,我对Mozilla的扩展开发世界(以及JavaScript lang)都是新手.

为了编写我的第一个" Hello world "扩展,我遵循了Mozilla网站上的Borderify示例,该版本在我这方面运行良好.

问题


现在我正在尝试修改原始示例以编写一个简单的脚本,当用户在mozilla.org网页上时必须运行外部应用程序.要完成此任务,我正在尝试使用nsiProcess接口.问题是应用程序没有执行.

的manifest.json

{

  "manifest_version": 2,
  "name": "Test",
  "version": "1.0",

  "description": "Runs a external application.",

  "icons": {
    "48": "icons/border-48.png"
  },

  "content_scripts": [
    {
      "matches": ["*://*.mozilla.org/*"],
      "js": ["test.js"]
    }
  ]

}
Run Code Online (Sandbox Code Playgroud)

test.js

// create an nsIFile for the executable
var file = Components.classes["@mozilla.org/file/local;1"]
                     .createInstance(Components.interfaces.nsIFile);
file.initWithPath("c:\\myapp.exe");

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

// Run the process.
process.run(false);
Run Code Online (Sandbox Code Playgroud)

myapp.exe(是的,它位于C:\root中)是一个只有一个空/默认形式的应用程序,它是在.NET平台(C#)中开发的,目标是基于WinForms技术的.NET Framework 4.5.我还试图运行其他应用程序,如记事本(指定完整的文件路径)没有结果.我还尝试更改" :// .mozilla.org/*"模式以匹配其他网站.


我做错了什么?,我怎么能运行那个可执行文件?

另外,如果有人能解释我怎么能在Firefox中加载脚本之后调试我的代码中发生的事情(发现错误/异常),我会非常感激,因为我完全失明了,我只是可以说脚本"什么都不做"(因为它不运行外部执行)但我根本无法控制代码,因为我找不到在哪里找到调试工具.

小智 5

WebExtensions无权访问XPCOM(或更具体地说,Components代码引用的XPCOM ).nsIProcess的WebExtensions替换是本机消息传递:https: //developer.mozilla.org/en-US/Add-ons/WebExtensions/Native_messaging

有关如何调试WebExtensions的文档,请访问:https: //developer.mozilla.org/en-US/Add-ons/WebExtensions/Debugging