在与安装的firefox附加组件相同的文件夹中运行打包的exe

时间:2011-06-22 23:49:43

标签: firefox-addon executable launching-application

我已经读过这个帖子,还有其他一些 How to run a local exe in my firefox extension

问题是,在部署和使用firefox 4.0.1时,如果我安装.xpi扩展名,xpi将被放在\ Profiles ... \ extensions中作为****。xpi,这是一种压缩格式

所有解决方案都假设扩展名放在一个文件夹中,因此他们按原样访问该文件夹,这是我无法做到的

例如,这家伙说

//**** get profile folder path ****
  var dsprops = Components.classes['@mozilla.org/file/directory_service;1']
      .getService(Components.interfaces.nsIProperties);
  var ProfilePath = dsprops.get("ProfD", Components.interfaces.nsIFile).path;

//**** initialize file ****
  var file = Components.classes["@mozilla.org/file/local;1"]
      .createInstance(Components.interfaces.nsILocalFile);
  file.initWithPath(ProfilePath);

//**** append each step in the path ****
  file.append("extensions");
  file.append("guid");
  file.append("sample.exe");
在我的情况下,guid安装为{f13b157f-b174-47e7-a34d-4815ddfdfeb8} .xpi,无法通过这种方式访问​​

2 个答案:

答案 0 :(得分:1)

首先,请不要找到这样的文件 - 你对Firefox配置文件的目录结构做了很多假设,在未来的Firefox版本中(或者甚至在不常见的扩展设置方案中,任何一个都可能会变错) )。请参阅Reference a binary-component to js-ctypes代码以查找扩展程序安装目录中的文件,只需将components/linux/myLib.so替换为sample.exe并执行uri.file

第二:除非你想在运行它之前将可执行文件解压缩到一个临时文件中(这将很复杂),否则打包XPI安装将无法运行。 Windows不支持从ZIP存档运行可执行文件。因此,您需要将<em:unpack>true</em:unpack>添加到扩展程序的install.rdf中,以确保它作为解压缩目录安装。

答案 1 :(得分:0)

最好的答案是获得flashgot Firefox插件,其中contanins已经可以执行,并且是开源的,并研究它,这是观察它实际工作原理的好方法。基于此,你可以制作尽可能多的内置可执行文件的插件,或者将整个程序添加为FF插件。我希望这有帮助,即使这个答案不是过时的。