我有一个Firefox附加组件(不是通过AOD分发的),它应该只在Firefox上处于活动状态(在该版本中),直到版本50,参见。 这个片段来自我的install.rdf:
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>35.0</em:minVersion>
<em:maxVersion>50.0</em:maxVersion>
</Description>
</em:targetApplication>
我打算,当用户更新到 Firefox 51 时,这个附加组件将被自动禁用(至少在插件更新之前)。但是,我注意到情况并非如此:即使在Firefox重新启动之后,该附加组件仍然处于活动状态(无论如何在更新期间都发生了)。
我所做的版本控制有问题吗?
除非还设置strictCompatibility
,否则将忽略maxVersion
属性:
<em:strictCompatibility>true</em:strictCompatibility>
MDN对strictCompatibility
说了以下几点:
一个布尔值,指示当应用程序版本大于其最大版本时是否应启用加载项。默认情况下,此属性的值为 false,这意味着不会针对最大版本执行兼容性检查。
通常,无需限制兼容性:并非所有新版本都会破坏扩展,如果它托管在 AMO 上,如果检测到潜在风险,你将提前几周收到通知。此外,即使短时间禁用扩展程序,也会导致用户体验不佳。大约是你唯一需要设置它的时间,如果你的附加组件做了一些可能被 Firefox 更新破坏的事情。如果您的附加组件具有二进制组件,则无需设置此标志,因为具有二进制组件的附加组件始终受到严格的兼容性检查(因为无论如何都需要为每个主要应用程序版本重新构建二进制组件)。
我已经更新了 MDN 上安装清单页面的targetApplication
部分,以声明需要strictCompatibility
才能maxVersion
不被忽视。虽然这种互动在strictCompatibility
部分中有所说明,但上面引用的文本不是只检查maxVersion
需要什么的人会发现的。
我怀疑这种情况是由于instal.rdf文件的演变以及maxVersion
的处理如何随着时间的推移而演变而发生的。不幸的是,它导致了需要属性maxVersion
但被忽略的情况。
在WebExtension中与此等效的是"applications": {"strict_max_version": "50.*",
。strict_max_version
值对 WebExtensions 强制执行。