通过注册表安装的Firefox插件是否可以使用updateURL

Is it possible for Firefox Add-on installed via registry to use updateURL?

本文关键字:是否 可以使 updateURL 插件 Firefox 注册表 安装      更新时间:2023-10-08

我使用Add-On-SDK构建了一个Firefox扩展,并强制它通过注册表项安装。(通过HKLM'Software'Mozzilla'Firefox'Extensions'extensionid

当我转到附加组件管理器并选择"检查更新"时,它不会向<updateUrl>中指定的url发出请求。有人要求https://versioncheck.addons.mozilla.org/...但不适用于我在<updateUrl>中指定的自定义url。

这也可以通过使用Firefox插件SDK构建的空helloworld扩展来复制:

cfx init
cfx xpi --update-url https://fooo.com/update.rdf

然后使用WinRAR将XPI解压缩到C:'test-extension中,并在以下注册表项下添加一个字符串值:

HKEY_LOCAL_MACHINE'SOFTWARE'Wow6432Node'Mozilla'Firefox'Extensions' 

其中名为jid1-W2S1bxv6O1LoAA@jetpack(生成的扩展ID)的字符串值指向具有解压缩XPI:的文件夹

注册表值名称:jid1-W2S1bxv6O1LoAA@jetpack值:C:'test-extension

然后启动Firefox,扩展就会安装到Firefox中。从附加组件管理器中,选择检查更新。

C:'test-extension'install.rdf中指定为<updateURL>的URL永远不会被访问。

为了完整起见,这是install.rdf文件(直接来自cfx生成的输出的未受影响的默认值):

<?xml version="1.0" encoding="utf-8"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
  <Description about="urn:mozilla:install-manifest">
    <em:id>jid1-W2S1bxv6O1LoAA@jetpack</em:id>
    <em:version>0.1</em:version>
    <em:type>2</em:type>
    <em:bootstrap>true</em:bootstrap>
    <em:unpack>false</em:unpack>
    <!-- Firefox -->
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>19.0</em:minVersion>
<!-- I tried also with maxVersion 25.* -->
        <em:maxVersion>20.*</em:maxVersion>
      </Description>
    </em:targetApplication>
    <!-- Front End MetaData -->
    <em:name>TEST</em:name>
    <em:description>a basic add-on</em:description>
    <em:creator></em:creator>
    <em:updateURL>https://mydomain.com/updates.rdf</em:updateURL>
  </Description>
</RDF>

当我通过拖放将.xpi文件手动安装到Firefox中时,当我在Add-ons Manager中调用Check for Updates时,会按预期检查updateURL。

我是不是错过了什么?通过注册表安装的扩展是否支持通过<updateURL>进行更新

通过Windows注册表的安装被锁定,因此加载项不可升级。这些位置被认为是外部的,而不是应用程序控制的。与配置文件中的加载项不同,用户很可能无论如何都无法升级加载项(只有系统管理员才能升级)。

通过系统位置的注册表安装的加载项必须提供自己的升级机制。