javascript - 通过注册表安装的 Firefox 附加组件是否可以使用 updateURL?

标签 javascript firefox firefox-addon firefox-addon-sdk automatic-updates

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

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

这也可以通过使用 Firefox Add-On SDK 构建的空 hello world 扩展重现:

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 中。从加载项管理器中,选择检查更新。

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

为了完整起见,这是 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>

当我通过拖放到 Firefox 中手动安装 .xpi 文件时,当我调用 Check for Updates 时会按预期检查 updateURL。在加载项管理器中。

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

最佳答案

通过 Windows 注册表安装是 locked ,因此附加组件不被视为可升级。与配置文件中的附加组件不同,此类位置被认为是外部的,不受应用程序控制,用户很可能无法升级附加组件(只有系统管理员可以)。

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

关于javascript - 通过注册表安装的 Firefox 附加组件是否可以使用 updateURL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20193991/

相关文章:

javascript - 命名匿名函数会破坏我的代码

authentication - 我如何授权用户(登录到我的网站)使用我的 firefox 插件

firefox - 使用 firefox addon sdk API 防止关闭选项卡

javascript - Jquery 的奇怪 firefox-safari-chrome-ie8+ 扩展问题

javascript - 如何使用 AngularJS ng-repeat 中断值?

javascript - Angular ui-router 中 $state.transitionTo() 和 $state.go() 的区别

javascript - SonarQube 中的 ES 模块 (.mjs) 支持

javascript - 可拖动的 div : behaves like an image on second drag

javascript - 当 AJAX 请求到具有无效证书的服务器时如何抑制 SSL 错误

javascript - 在 Firefox 中按下 shift 键时没有粘贴事件