问题标签 [xpi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
28965 浏览

android - 如何在 firefox android 上安装我的 .xpi

我使用 JPM 开发一个 firefox 插件。

我想将它安装在我的安卓手机上,我已经运行“jpm xpi”并将 xpi 复制到我的 sdcard 上。当我在 android firefox 中浏览到 file://path/to/my/xpi 时,什么也没有发生。如果我在我的服务器上上传 xpi 并浏览到 url,也会出现同样的问题。

我已经用 google play firefox 最新版本和 nighty 进行了测试。

我的错误在哪里?

0 投票
2 回答
2396 浏览

firefox - 在 shell 上安装 firefox 扩展的最佳方法

我想创建一个预装插件的新配置文件。

什么有效:

  • 第一次运行firefox。
  • 将 addon.xpi 添加到profile/extensions/addon.xpi.
  • 编辑配置文件profile/extensions.ini并添加Extension0=/full/path/to/extension.xpi.
  • 再次启动Firefox。

我需要的:

  • 将插件添加到profile/extensions/addon.xpi.
  • 编辑extensions.ini或类似的东西。
  • 如果可能,仅使用相对路径(似乎没有为 extensions.ini 实现)

最后,我想创建一个带有一些 Firefox 首选项/插件的 zip 文件,可以将其解压缩到配置文件文件夹中,以创建一个包含一些预安装内容的新配置文件。为此,重要的是,一切都适用于相对路径。如果绝对不可能,我可以添加一些脚本。但我更喜欢一些“只是解压缩”的解决方案。

我认为这可能有点困难,因为 mozilla 想通过使外部插件安装更难来阻止其他软件添加工具栏和类似于 firefox。我已经找到的是关键extensions.autoDisableScopes=0

0 投票
1 回答
166 浏览

firefox - 如何从暂存器创建 xpi 文件

我已经在暂存器环境中开发了我的插件,现在开发已经完成,我想创建最终的 xpi 文件。

我只替换这个:

这样:

然后使用 nodejs(jpm init 和 jpm xpi 命令)我创建了 xpi 文件,但这不能正常工作。

0 投票
1 回答
317 浏览

firefox - 配置 NSS Signtool 以使用 Thales HSM?

我有个问题。我的组织需要为 XPI 文件类型执行代码签名。证书及其私钥必须由硬件安全模块保护。这是出于安全原因。

Mozilla 提供的现有 NSS Signtool 我们无法找到一种方法来获取该工具,以识别 Java 密钥库、Windows 中的 CSP 或 Mac 中的钥匙串。研究的所有解决方案都指向要求将密钥复制到 NSS Signtool 配置为默认使用的软件数据库中。

我需要对 XPI 文件类型进行签名,而我试图找到适用于 Java、Windows CSP 或 Mac 钥匙串的解决方案的原因是我现有的 Thales HSM 技术具有这 3 个选项作为与模块通信的接口.

我看到有一个名为 XPISigner 的基于 Java 的文件,但该解决方案不再受支持,我们发现的唯一版本仅与 Luna HSM 一起工作,但与今天的 Java 版本不兼容。

有没有人设法获得一个受 HSM 保护的密钥来使用 NSS Signtool?或者是否有任何机制可以将 NSS Signtool 与 java 密钥库集成?(使用 java 选项的想法是我可以操纵所述解决方案来使用我的 HSM)

谢谢!

0 投票
0 回答
97 浏览

firefox - bsdtar 无法解压 firefox xpi

Firefox 或 Thunderbird 等 Mozilla 应用程序的扩展以XPI 格式分发,这基本上是一个 ZIP 存档。因此,该unzip实用程序可以提取它。bsdtar也可以这样做。

但是,如果存档包含一个META-INF通常存储签名文件的目录,则文件内容无法正确解压缩。只有使用 解压后unzip,扩展才能正确显示为已在 Firefox 中签名。

如果您想重新创建我的测试用例,请使用这两种工具下载并解压缩任何签名的扩展,例如Hide Tab Bar With One Tab。如果您在 Firefox 中单击此链接,它会建议安装扩展程序,因此您可能想要使用curlwget代替。

和 有什么bsdtar不同unzip?这是一个错误吗?

0 投票
1 回答
220 浏览

firefox - curl命令将文件上传到表单

我正在尝试构建一个 curl 命令,它将我的 xpi 上传到Mozilla Add-on Validator 进行验证

我已经用 fiddler 捕获了流量,以查看站点在做什么,并尝试从 curl 中模仿它的行为。

我已经看到了什么是帖子网址,并尝试过curl https://addons.mozilla.org/en-US/developers/standalone-upload --form 'upload=@path-to-xpi.xpi',也使用csrfmiddlewaretoken=@path-to-xpi.xpi. 并且还尝试添加Content-Type.

这是来自第一个请求的原始数据:

POST https://addons.mozilla.org/en-US/developers/standalone-upload HTTP/1.1 Host: addons.mozilla.org Connection: keep-alive Content-Length: 41021 Origin: https://addons.mozilla.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryI0LeCjkeJnsfGipU Accept: */* Referer: https://addons.mozilla.org/en-US/developers/addon/validate Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.8,he;q=0.6 Cookie: _ga=GA1.2.710702590.1450107779; sessionid=".eJyrVkouLkqLL8nPTs1TslLKznAOTYzI8czOTEzxCTe0SCzKichONjMO8PUO9Q5wcVfSUYpPLC3JiC8tTi2Kz0xRsjI0MrCwNDE3QZFISkwGmgeUVQJxi_Wg_GI9x9z8UKCIE1QeqKk4tbg4Mz8vPrWiILOoEmyepZmBQS0Aqsk0IA:1aLYVj:cbZQtNCkFRasDdFtJKI9b_WB6GA" ------WebKitFormBoundaryI0LeCjkeJnsfGipU Content-Disposition: form-data; name="csrfmiddlewaretoken" khCUaXlIkiadLW18arlXkc63PMKUKPDG ------WebKitFormBoundaryI0LeCjkeJnsfGipU Content-Disposition: form-data; name="upload"; filename="extension.xpi" Content-Type: application/octet-stream

目前我收到一个不允许的 html 页面。

我错过了什么?我还应该在请求中添加什么以获得良好的响应?

谢谢

0 投票
1 回答
62 浏览

firefox - 每次构建的 Firefox 插件开发中 xpi 文件大小呈指数增长

我正在学习为 Firefox 开发插件。我观察到的是,即使插件文件更改非常小jpm sign,验证的大小也会.xpi比以前的文件大小增加两倍。.xpi

以下说明了该场景:

谁能告诉我这背后的原因是什么?最好知道保留相对文件大小与代码更改量的可能选项。

0 投票
1 回答
396 浏览

javascript - 插件可以很好地使用 jpm run 附加脚本,但不能使用实际的 xpi

我对 addon-sdk 还很陌生,并且遇到了一个对我来说无法解释的问题。到目前为止,我一直在使用 jpm run 来测试一切——一切都很好。现在,我即将完成我想要完成的工作,所以我想在“普通”浏览器中对其进行测试 - 主要是在几天内使用它,看看一切是否按预期工作。

但是,安装过程已经抛出了两条错误消息:

[异常...“组件返回失败代码:0x80004005 (NS_ERROR_FAILURE) [nsIURI.hostPort]”nsresult:“0x80004005 (NS_ERROR_FAILURE)”位置:“JS 框架 :: resource://gre/modules/PopupNotifications.jsm :: PopupNotifications_refreshPanel /< :: line 667" data: no] (未知)

被抛出两次。

好吧,到目前为止,一切都很好(或很糟糕)。我的插件添加的切换按钮仍然显示。单击该按钮会打开一个面板,其中包含一个 html 页面 - 仍在工作。panel.html 包含一个按钮,这是我麻烦的根源。

如果单击,该按钮会向我的主插件文件发送一条消息:

index.js 监听的:

现在 options.html 选项卡被打开(面板消失),但看起来好像没有附加 contentScriptFile。我试图弄清楚代码停止工作的确切位置,但一直没能。'console.log()' 之后

工作正常,但是'console.log()'在

(在 internalOptions.js 中)不会出现在控制台中。

无论如何,浏览器控制台报告:

不推荐在内容过程中使用 nsIFile。NetUtil.jsm:335:12

<不可用> timers.js:43

这些是我不知道该怎么处理的错误,因为所有这些都与“jpm run”一起工作得很好。因此,我将不胜感激任何帮助,因为我完全不知道这里发生了什么。

如果需要,我还可以发布更多代码,但我认为这篇文章已经足够长了。

谢谢!

编辑:我将代码上传到 github。也许这让帮助我更容易。

https://github.com/Azlond/TrackingProtector

上述代码在 data/privacyProtector/js/panel.js、index.js 第 66-91 行和 data/privacyProtector/js/internalOptions.js 中

0 投票
1 回答
1272 浏览

firefox - 如何为 Firefox +45.0.1 正确重建 .xpi 文件?

我想强制FastDial兼容新的 Firefox 4.5.0.1 和其他扩展。

我过去做了很多插件,我知道程序... xpi 只是一个 zip 文件,当提取它们的内容时,你会发现一个名为Install.rdf的文件,其中包含以下行:

然后设置所需的版本,重新压缩 Zip,并将 .zip 扩展名更改为 .xpi。

但是,该方法不适用于 Firefox 45.0.1 (x86)。

这是尝试使用已知方法安装重建的 xpi 时总是发生的情况:

在此处输入图像描述

上图的西班牙语错误消息说:

此插件无法安装,因为似乎已损坏。

那么......这个该死的 Firefox 4.5.0.1 不接受我们重建的插件有什么变化?

更新

我注意到问题出在 Install.rdf 文件上,如果我不更改<em:maxVersion>...</em:maxVersion>,那么我可以正确地重新压缩包,并且这个新的 Firefox 可以识别它。

那么我需要如何编辑 Install.rdf 文件以避免“破坏”这个新 Firefox 的 xpi 包?

我尝试使用 Wordpard 编辑 rdf 文件,我还尝试了 Sublime Text,使用和不使用 BOM(UTF-8)保存文件,并重新压缩我使用 WinRar 的包(我一直使用 WinRar 来做),保存当然,它是 Zip,而不是 RAR。

0 投票
1 回答
94 浏览

javascript - Object.defineProperty() 在测试期间工作(jpm run),但在使用实际 xpi 时不做任何事情

好吧,我又回来了,关于我的插件部分的另一个问题。

我正在使用观察者来修改通过 javascript 调用的值。

我通过观察'document-element-inserted'来做到这一点,这是

在创建文档的根元素之后立即发送,但在对其执行任何脚本之前发送。(来源

调用时,我的插件会修改几个文档/导航器/屏幕值,以通过覆盖 navigator.X 值来减少指纹:

在这种情况下,例如插件列表,使它看起来好像我根本没有安装任何插件。

到目前为止,这在我的开发环境/jpm 运行中运行良好。但是,现在我已经创建了一个实际的 xpi,没有任何反应。代码仍然被调用,我在 jSTracking 函数中使用了几个控制台输出,它们都出现在浏览器控制台中。但是,所谓的更改值仍然是原始值。

使用 jpm run 时只有两个错误没有出现:

[异常...“组件返回失败代码:0x80004005 (NS_ERROR_FAILURE) [nsIURI.hostPort]”nsresult:“0x80004005 (NS_ERROR_FAILURE)”位置:“JS 框架 :: resource://gre/modules/PopupNotifications.jsm :: PopupNotifications_refreshPanel /< :: line 667" data: no] (未知)

在安装过程中被抛出两次。

不推荐在内容过程中使用 nsIFile。内容.js:25:17

不推荐在内容过程中使用 nsIFile。NetUtil.jsm:335:12

是不时出现的另一个,尽管与我的脚本无关。

最让我困惑的事情是:为什么 Object.defineProperty 可以与 jpm run 一起使用,但不能与 xpi 一起使用?我必须进行哪些更改才能使其始终有效?

整个项目可以在我的 Github 存储库中找到。

观察者的注册在 pp.js 的第 452 行,

观察功能在第 436-446 行

jsTracking 函数从第 193 行开始,到第 433 行结束

引用的插件示例可以在第 399-403 行中找到

我将不胜感激任何帮助,谢谢!