Firefox附加组件的maxVersion没有强制执行?

时间:2017-02-28 14:26:26

标签: firefox-addon firefox-addon-sdk firefox-addon-restartless firefox-addon-bootstrap firefox-addon-overlay

我有一个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重新启动后(无论如何在更新期间发生过),加载项仍处于活动状态。

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

1 个答案:

答案 0 :(得分:1)

除非您同时设置strictCompatibility

,否则将忽略maxVersion属性
<em:strictCompatibility>true</em:strictCompatibility>

MDN says the following关于strictCompatibility

  

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

     

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

我更新了MDN上targetApplication section页面的Install Manifests,说明strictCompatibility不需要忽略maxVersion。虽然strictCompatibility section中说明了这种互动,但上述引用的文字并不是某人只检查maxVersion所需内容的内容。

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

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