Como instalar extensões de atualização automática do Firefox em um aplicativo

A extensão FF da empresa de nossa empresa é fornecida com o pacote de instalação do nosso aplicativo (ou seja, é fornecido com o aplicativo, não com a compilação do Firefox). Durante a instalação, a extensão é atualmente adicionada ao Firefox por meio do registro do Windows (uma nova chave no diretórioHKCU/Software/Mozilla/Firefox/Extensions)

Minha tarefa é ativar a atualização automática para essas extensões. Para fazer isso eu coloqueiupdateUrl para dentropackage.json, criadoupdate.rdf junto com a versão mais recente da extensão. Como resultado, o Firefox encontra uma extensão atualizada, mas não consegue atualizá-la. Logs do Firefox:

1464888839764   addons.update-checker   DEBUG   Requesting https://path/update.rdf
1464888840017   addons.update-checker   DEBUG   Found an update entry for <My Addon Name> version 1.2.3
1464888840022   addons.xpi      DEBUG   Found an existing AddonInstall for <My Addon Name>
1464888840024   addons.manager  DEBUG   Found update for add-on <My Addon Name>
1464888840026   addons.manager  DEBUG   onUpdateFinished for <My Addon Name>

Por outro lado, se o MyAddonName.xpi for instalado manualmente (ou seja, sem o uso do registro do Windows), a atualização automática funcionará bem.

As perguntas são:
Se o Firefox deliberadamente ignorar a atualização automática de extensões instaladas pelo registro, como nossa extensão agrupada pode ser instalada com a atualização automática normal do complemento do Firefox ativada?

Até agora eu encontrei o seguinte: emfirefox-44.0 \ kit de ferramentas \ mozapps \ extensions \ internal \ XPIProvider.jsm

if (!this._installLocation.locked && !this.pendingUninstall) {
  // Add-ons that are installed by a file link cannot be upgraded
  if (!this._installLocation.isLinkedAddon(this.id)) {
    permissions |= AddonManager.PERM_CAN_UPGRADE;
  }
  permissions |= AddonManager.PERM_CAN_UNINSTALL;
}

Esse é um comportamento deliberado de desativar a atualização para complementos que foram instalados a partir de pastas locais.

Estamos trabalhando sob algumas restrições:

A instalação deve funcionar para uma conta do Windows com permissões de usuário. Em outras palavras,% program files% não é gravável, nem nada que exija permissões não concedidas a usuários normais (ou seja, a instalação não pode assumir que a conta possui os recursos expandidos de um usuário avançado ou administrador).A extensão do pacote deve ser instalada em todos os perfis existentes do Firefox para o usuário que está instalando o aplicativo.Outros usuários do sistema não devem ser afetados.A extensão do pacote deve ser atualizada automaticamente pelo Firefox através do processo normal que o Firefox usa para atualizar automaticamente os complementos.A atualização automática da extensão Firefox não pode pegar carona em nenhum recurso de atualização automática existente em nosso aplicativo. Esse recurso pode ou não existir, mas o recurso normal de atualização automática do complemento do Firefox deve ser usado para a extensão.Precisamos de uma maneira de poder desativar a extensão do Firefox em todos os perfis do nosso aplicativo.

questionAnswers(1)

yourAnswerToTheQuestion