Firefox 从附加组件而不是本地路径打开文件
Firefox open file from add-on instead of local path
我正在创建 Firefox 附加组件,其中 运行 一个特定的 .bat
文件。
这是我使用的代码。
main.js
const {Components, Cc, Ci,Cu} = require("chrome");
var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
file.initWithPath("C:\Users\Madhawa.se\Desktop\snap\shoot.bat"); // i want to open this bat from xpi .for example from data directory
var args="this is an argument ";
var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
process.init(file);
process.run(false, args, args.length);
它工作正常,但我想从加载项内部打开 shoot.bat
文件,这样我就可以轻松地将加载项作为单个 xpi
.
分发
如何从附加组件打开这个 bat 文件,例如,我可以将 shoot.bat
文件放入我的 Firefox 附加组件的 data directory
中,但如何打开它?这不可能吗?有没有更好的方法来实现这个目标?
虽然从您的附加 XPI 中读取数据相当容易,但您不能以这种方式创建进程。 Windows 通常,尤其是 windows 可执行加载程序,不知道如何读取 .xpi
.
执行批处理文件或其内容,可以通过在执行之前将批处理文件写入磁盘上的某个位置,或者将 cmd /K
兼容的参数字符串与该批处理文件的内容组装起来来实现
首先读取批处理文件可以实现例如通过将 request
模块与 data.url()
.
一起使用
const {Request} = require("sdk/request");
const {data} = require("sdk/self");
Request({url: data.url("shoot.bat"), onComplete: function(response) {
var batch = response.text;
// ...
}});
当然,将批处理文件的内容放在 Javascript 源本身中可能会更容易,从而完全避免 Request
东西。
现在,您可以将批处理文件内容写入文件,例如使用 io/file
and/or OS.File
(目前首选后者,主要是因为 io/file
不是异步的),然后执行
或者您可以适当地格式化要用于 cmd /K
的内容。
我正在创建 Firefox 附加组件,其中 运行 一个特定的 .bat
文件。
这是我使用的代码。
main.js
const {Components, Cc, Ci,Cu} = require("chrome");
var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
file.initWithPath("C:\Users\Madhawa.se\Desktop\snap\shoot.bat"); // i want to open this bat from xpi .for example from data directory
var args="this is an argument ";
var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
process.init(file);
process.run(false, args, args.length);
它工作正常,但我想从加载项内部打开 shoot.bat
文件,这样我就可以轻松地将加载项作为单个 xpi
.
如何从附加组件打开这个 bat 文件,例如,我可以将 shoot.bat
文件放入我的 Firefox 附加组件的 data directory
中,但如何打开它?这不可能吗?有没有更好的方法来实现这个目标?
虽然从您的附加 XPI 中读取数据相当容易,但您不能以这种方式创建进程。 Windows 通常,尤其是 windows 可执行加载程序,不知道如何读取 .xpi
.
执行批处理文件或其内容,可以通过在执行之前将批处理文件写入磁盘上的某个位置,或者将 cmd /K
兼容的参数字符串与该批处理文件的内容组装起来来实现
首先读取批处理文件可以实现例如通过将 request
模块与 data.url()
.
const {Request} = require("sdk/request");
const {data} = require("sdk/self");
Request({url: data.url("shoot.bat"), onComplete: function(response) {
var batch = response.text;
// ...
}});
当然,将批处理文件的内容放在 Javascript 源本身中可能会更容易,从而完全避免 Request
东西。
现在,您可以将批处理文件内容写入文件,例如使用 io/file
and/or OS.File
(目前首选后者,主要是因为 io/file
不是异步的),然后执行
或者您可以适当地格式化要用于 cmd /K
的内容。