我有一个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重新启动后(无论如何在更新期间发生过),加载项仍处于活动状态。
我做的版本控制有问题吗?
答案 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
。