Как обновить самостоятельно размещенный Firefox WebExtension - PullRequest
0 голосов
/ 30 августа 2018

Как мне настроить самораспространяющийся firefox webExtension на автоматическое обновление, я попытался выполнить MDN update doc , но все еще не смог обновить. Мое веб-расширение размещено на имени субдомена, например

"https://files.example.com/myfile/extension.xpi"

Мой updates.json файл находится в том же месте, что и мой .xpi файл

Это прототип моего updates.json

{
  "addons": {
      "updates": [ { "version": "1.2",
          "update_link": "https://files.abc.com/myfiles/extension-1.2-an+fx.xpi" },
           { "version": "1.3",
          "update_link": "https://files.abc.com/myfiles/extension-1.3-an+fx.xpi" }
      ]
  }
}

Это бред с консоли браузера

1535658478365 addons.update-checker WARN onUpdateCheckComplete failed 
to parse update manifest: [Exception... "Update manifest is missing a 
required addons property." nsresult: "0x80004005 (NS_ERROR_FAILURE)" 
location: "JS frame :: 
resource://gre/modules/addons/AddonUpdateChecker.jsm :: 
getRequiredProperty :: line 120" data: no] Stack trace: 
getRequiredProperty()@resource://gre/modules/addons/AddonUpdateChecker.jsm:120
parseJSONManifest()@resource://gre/modules/addons/AddonUpdateChecker.jsm:130 onLoad()@resource://gre/modules/addons/AddonUpdateChecker.jsm:309 UpdateParser/<()@resource://gre/modules/addons/AddonUpdateChecker.jsm:241

1 Ответ

0 голосов
/ 31 августа 2018

Похоже, в вашем файле updates.json отсутствует имя надстройки и хэш XPI. Я также проверил бы без "+" в имени файла, я думаю, что это вызвало у меня проблемы (из-за хост-сервера).

Чтобы просмотреть UUID надстроек (например, «ADDONNAME@test.com»), войдите в центр разработчика, нажмите «Изменить информацию», а затем ознакомьтесь с технической информацией. Для создания update_hash вашего файла XPI я бы порекомендовал VSCryptoHash, но любая другая программа, которая генерирует криптографический хеш, будет работать.

{
  "addons": {
    "ADDONNAME@test.com": {
      "updates": [
       { "version": "1.0.0",
         "update_link": "https://files.abc.com/myfiles/extension-1.2-fx.xpi" ,
         "update_hash": "sha256:blahblah" }
      ]
    }
  }
}

Ошибка консоли говорит о том, что в вашем манифесте тоже что-то не хватает. Вот пример, основанный на моем, который работает.

"applications": {
    "gecko": {
        "id": "ADDONNAME@test.com",
        "strict_min_version": "50.0",
        "update_url": "https://webpage/Updatefile.json"
    }
},
...