1

我有一个Firefox附加组件(不是通过AOD分发),本应该是活动的(在该版本中)只能使用Firefox版本50以上的组件。这个片段是从我的install.rdfFirefox插件的maxVersion没有执行?

<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

maxVersion属性被忽略,除非你也设置strictCompatibility

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

MDN says the followingstrictCompatibility

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

通常情况下,没有必要去限制兼容性:不是所有的新版本将打破你的扩展,如果它是在AMO托管,你会得到,如果已经检测到潜在风险提前通知几个星期。而且,即使在短时间内被禁用的扩展也会导致用户不愉快的体验。如果您的插件执行的操作可能会被Firefox更新所破坏,那么您应该只需要设置此项即可。如果附加组件具有二进制组件,则不需要设置此标志,因为使用二进制组件的附加组件始终需要严格的兼容性检查(因为无论如何都需要为每个主要应用程序版本重新构建二进制组件)。

我已经更新了Install Manifests页面上MDN的targetApplication sectionstrictCompatibility需要maxVersion不可忽视的陈述。尽管在strictCompatibility section中陈述了这种交互作用,但上述引用的文字不是仅由检查maxVersion需要什么的人才能找到的。

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

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