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值。

相關問題