我已经使用 Add-On SDK 构建了一个 Firefox 扩展,并强制它通过注册表项安装。(通过HKLM\Software\Mozzilla\Firefox\Extensions\extensionid)
当我转到附加组件管理器并选择“检查更新”时,它不会向<updateUrl>. 有针对https://versioncheck.addons.mozilla.org/的请求……但不是针对我在<updateUrl>.
这也可以通过使用 Firefox Add-On SDK 构建的空 hello world 扩展来重现:
cfx init
cfx xpi --update-url https://fooo.com/update.rdf
然后使用 WinRAR 解压 XPIC:\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>
当我通过拖放手动安装 .xpi 文件到 Firefox 中时,当我Check for Updates在附加组件管理器中调用时,会按预期检查 updateURL。
我错过了什么吗?<updateURL>通过注册表安装的扩展是否支持更新?