如何将自己开发的WebExtension安装到Firefox Nightly?

时间:2017-06-14 06:56:06

标签: firefox installation firefox-webextensions

我已经知道临时安装附件以进行调试的方法。 但是,我想永久安装它。我不想将其上传到AMO,因为我已将它开发为仅供我自己使用。

如何在Firefox上安装它?

浏览器: Firefox每晚56a1
操作系统:macOS 10.12.5

修改

我在引用Getting started with firefox-addon时尝试了安德鲁的方式,但是发生了错误(This add-on could not be installed because it appears to be corrupt.),尽管临时安装成功了。
为什么安装仅在从Install Add-on from File...安装时失败?

源代码在这里 https://github.com/KiYugadgeter/webext

EDIT2:

以下是浏览器控制台上的错误消息。

1497764354857   addons.xpi  WARN    Invalid XPI: Error: Cannot find id for 

addon /
Users/username/jsworks/webextensions/stacknotifier/something.xpi (resource://gre/modules/addons/XPIInstall.jsm:1642:17) JS Stack trace: loadManifest@XPIInstall.jsm:1642:17 <
async*init@XPIInstall.jsm:2122:13 < async*createLocalInstall@XPIProvider.jsm:4820:12 < getInstallForFile@XPIProvider.jsm:3437:5 < callProviderAsync@AddonManager.jsm:297:12 <
promiseCallProvider/<@AddonManager.jsm:321:53 < Promise@Promise-backend.js:390:5 <
promiseCallProvider@AddonManager.jsm:320:10 < getInstallForFile/<@AddonManager.jsm:1856:29
< async*getInstallForFile@AddonManager.jsm:1854:13 < getInstallForFile@AddonManager.jsm:
3560:7 < doCommand/<@extensions.js:1472:13
[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIURI.hostPort]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: resource://gre/modules/PopupNotifications.jsm :: PopupNotifications_refreshPanel/< :: line 806"  data: no]

3 个答案:

答案 0 :(得分:3)

您的错误是:Invalid XPI: Error: Cannot find id for addon

引用WebExtension documentation

  

您何时需要附加ID?

     
      
  • 如果要从其XPI文件加载加载项,请不要使用about:debugging临时加载它,并且它没有签名。
  •   
  • ...
  •   

这是你的情况;因此,您需要在清单中填写applications.gecko.id key。这与setting key key in Chrome的作用类似(在Chrome中,打包扩展程序的ID是key字段的哈希值)。

或者(可能最好),您可以按Forivin's answer所示签署您的XPI,因为只能在Nightly中加载未签名的WebExtensions。这需要与AMO进行互动 - 但没有要求在那里举办。

答案 1 :(得分:2)

最新版本的Firefox要求您在永久安装之前对扩展程序进行签名。要签署您的扩展程序,您不必发布它。您所需要的只是一个名为web-ext的工具。然后你可以从终端运行它:

web-ext sign --api-key=$AMO_JWT_ISSUER --api-secret=$AMO_JWT_SECRET

web-ext入门:
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Getting_started_with_web-ext

web-ext sign
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/web-ext_command_reference#web-ext_sign

获取您的AMO_JWT_ISSUER和AMO_JWT_SECRET:
https://addons.mozilla.org/en-US/developers/addon/api/key/

简而言之:

  • Downlaod and Install NodeJS
  • 打开一个新终端并运行npm install --global web-ext
  • 转到api key site并获取您的AMO_JWT_ISSUER和AMO_JWT_SECRET
  • 打开一个新终端,进入包含扩展源的文件夹并运行

    web-ext sign --api-key=xxxx:xxxxxxx:xxx --api-secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    

答案 2 :(得分:2)

既然你说你正在使用Nightly,你也可以去about:config,找到偏好&#34; xpinstall.signatures.required&#34;把它翻到假。然后,您应该可以从about:addons - &gt;安装您的扩展程序。 &#34;从文件安装加载项...&#34;