问题标签 [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.
android - 如何在 firefox android 上安装我的 .xpi
我使用 JPM 开发一个 firefox 插件。
我想将它安装在我的安卓手机上,我已经运行“jpm xpi”并将 xpi 复制到我的 sdcard 上。当我在 android firefox 中浏览到 file://path/to/my/xpi 时,什么也没有发生。如果我在我的服务器上上传 xpi 并浏览到 url,也会出现同样的问题。
我已经用 google play firefox 最新版本和 nighty 进行了测试。
我的错误在哪里?
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
。
firefox - 如何从暂存器创建 xpi 文件
我已经在暂存器环境中开发了我的插件,现在开发已经完成,我想创建最终的 xpi 文件。
我只替换这个:
这样:
然后使用 nodejs(jpm init 和 jpm xpi 命令)我创建了 xpi 文件,但这不能正常工作。
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)
谢谢!
firefox - bsdtar 无法解压 firefox xpi
Firefox 或 Thunderbird 等 Mozilla 应用程序的扩展以XPI 格式分发,这基本上是一个 ZIP 存档。因此,该unzip
实用程序可以提取它。bsdtar
也可以这样做。
但是,如果存档包含一个META-INF
通常存储签名文件的目录,则文件内容无法正确解压缩。只有使用 解压后unzip
,扩展才能正确显示为已在 Firefox 中签名。
如果您想重新创建我的测试用例,请使用这两种工具下载并解压缩任何签名的扩展,例如Hide Tab Bar With One Tab。如果您在 Firefox 中单击此链接,它会建议安装扩展程序,因此您可能想要使用curl
或wget
代替。
和 有什么bsdtar
不同unzip
?这是一个错误吗?
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 页面。
我错过了什么?我还应该在请求中添加什么以获得良好的响应?
谢谢
firefox - 每次构建的 Firefox 插件开发中 xpi 文件大小呈指数增长
我正在学习为 Firefox 开发插件。我观察到的是,即使插件文件更改非常小jpm sign
,验证的大小也会.xpi
比以前的文件大小增加两倍。.xpi
以下说明了该场景:
谁能告诉我这背后的原因是什么?最好知道保留相对文件大小与代码更改量的可能选项。
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 中
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。
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 行中找到
我将不胜感激任何帮助,谢谢!