1

我有一个 Firefox 附加组件(不是通过 AOD 分发),它应该是活动的(在那个版本中)只有 Firefox 50 版以上,cf。这个片段来自我的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 重新启动后(无论如何都在更新期间发生),插件仍然处于活动状态。

我做的版本控制有问题吗?

4

1 回答 1

1

maxVersion属性将被忽略,除非您还设置strictCompatibility

<em:strictCompatibility>true</em:strictCompatibility>

MDN 说了以下关于strictCompatibility

一个布尔值,指示当应用程序版本高于其最大版本时是否应启用插件。默认情况下,此属性的值为 false,表示不会针对最大版本执行兼容性检查。

通常,不需要限制兼容性:并非所有新版本都会破坏您的扩展,如果它托管在 AMO 上,如果检测到潜在风险,您会提前几周收到通知。此外,即使在短时间内禁用扩展程序也会导致用户体验不佳。如果您的附加组件执行的操作可能会被 Firefox 更新破坏,则大约是您唯一需要设置此选项的时间。如果您的附加组件具有二进制组件,则不需要设置此标志,因为具有二进制组件的附加组件始终受到严格的兼容性检查(因为无论如何都需要为每个主要应用程序版本重新构建二进制组件)。

我已经更新了MDN上的安装清单页面的targetApplication部分,以说明不被忽略所必需的。虽然在本节中说明了这种交互,但上面引用的文本并不是仅检查所需内容的人会发现的内容。strictCompatibilitymaxVersionstrictCompatibilitymaxVersion

我怀疑这种情况的出现是由于instal.rdf文件的maxVersion演变以及随着时间的推移而演变的处理方式。不幸的是,它导致了maxVersion需要属性但被忽略的情况。

WebExtension 中的等价物是"applications": {"strict_max_version": "50.*",. 该strict_max_version值对 WebExtensions 强制执行。

于 2017-02-28T16:33:42.870 回答