Help us understand the problem. What is going on with this article?

Firefoxアドオンを自分で公開(self hosted)する方法

More than 1 year has passed since last update.

<2018年一人なんでもアドベントカレンダー1日目>

はじめに

Firefoxの拡張機能を公開したい場合、ストアに申請して公開するのが通常の方法ですが、公開条件を満たす必要があります。
例えば、社内用アプリケーションを使って社員のみが使うような拡張機能の場合、用途と利用者が限定すぎるためにリジェクトされたりします。
そのときに「自分で公開(self hosted)」という方法があります。

updates.jsonを用意

まずはアップデート情報を記述するupdates.jsonを用意します。
あとで説明しますが、拡張機能のmanifest.json内にこのupdates.jsonファイルのURLを記述することで、拡張機能は更新の有無を知ることができるようになります。

updates.json
{
  "addons": {
    "<拡張機能のUUID>": {
      "updates": [
        {
          "version": "1.0.0.0",
          "update_link": "https://server.com/myextension.xpi"
        },
        {
          "version": "1.0.1.0",
          "update_link": "https://server.com/myextension.xpi"
        }
      ]
    }
  }
}

versionに拡張機能のバージョン番号を、update_linkにあとで置くことになるxpiファイルのURLを指定しておきます。
ここでは仮にhttps://server.com/myextension.xpiに置いたとします。

manifest.jsonをサーバーに置く

ブラウザからhttpsでアクセスできればどこでも良いです。
ここでは仮にhttps://server.com/updates.jsonに置いたとしましょう。

manifest.jsonにupdates.jsonのURLを追記

manifest.json
抜粋
 "applications": {
    "gecko": {
      "id": "<拡張機能のUUID>",
      "update_url":"https://server.com/updates.json",
      "strict_min_version": "42.0"
    }
  },

applicationsプロパティの中にupdate_urlプロパティを追加し、先程のupdates.jsonファイルのURLをhttps://から記述します。

開発者センターで拡張機能に署名

公開するには拡張機能に署名を施す必要があります。
開発者センターにログインし、「新しいアドオンを登録」をクリックします。
image.png

配布手段に「自分自身で。」を選択して「続ける」をクリックします。
image.png

拡張機能の.xpiファイルをアップロードして「アドオンを署名」をクリックします。

image.png

ここは「いいえ」を選択して「続ける」をクリックします。
image.png

これで署名が完了しました。
ダウンロードボタンを押してxpiファイルをダウンロードします。

lkasdfjalskdfja.png

xpiファイルをサーバーに置く

それをupdates.jsonに記述したxpiファイルのURLと同じ場所に置きます。
ここではhttps://server.com/myextension.xpiですね。

これで公開されました。

初回インストール

xpiファイルのURLにアクセスすればインストールされます。

拡張機能の更新

拡張機能を更新するときは、プログラム的な変更を行った後に以下の作業を行います。

  1. manifest.jsonのバージョンを変更
  2. updates.jsonに新しいバージョンの情報を追加する
  3. 開発者センターで拡張機能に署名
  4. xpiファイルとupdates.jsonをサーバーに置く

2のバージョン情報の追加は以下のようにします。
例えば新しいバージョン1.0.1.1を追加します。

updates.json
{
  "addons": {
    "<拡張機能のUUID>": {
      "updates": [
        {
          "version": "1.0.0.0",
          "update_link": "https://server.com/myextension.xpi"
        },
        {
          "version": "1.0.1.0",
          "update_link": "https://server.com/myextension.xpi"
        },
        {
          "version": "1.0.1.1",
          "update_link": "https://server.com/myextension.xpi"
        }
      ]
    }
  }
}
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away