2

我已經使用附加SDK構建了Firefox擴展,並強制它通過註冊表項進行安裝。 (通過HKLM\Software\Mozzilla\Firefox\Extensions\extensionid可以通過註冊表安裝Firefox插件來使用updateURL嗎?

當我轉到附加組件管理器並選擇「檢查更新」時,它不會向<updateUrl>中指定的URL發出請求。有要求出去https://versioncheck.addons.mozilla.org/ ...但不是我在<updateUrl>指定的自定義網址。

這是一個空的hello world擴展也可重複使用火狐瀏覽器插件SDK內置:

cfx init 
cfx xpi --update-url https://fooo.com/update.rdf 

然後用WinRAR的XPI解壓到C:\test-extension和下面的註冊表項下添加一個字符串值:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Firefox\Extensions\ 

與名爲[email protected](生成的擴展ID)的字符串值指向與解壓後的XPI的文件夾:

註冊表值名稱:[email protected]值:C:\test-extension

然後啓動Firefox,擴展將被安裝到Firefox瀏覽器。從附加組件管理器中選擇檢查更新。

指定爲<updateURL> in C:\test-extension\install.rdf的URL永遠不會被訪問。

爲了完整起見,這是install.rdf文件(未觸摸直接從輸出從CFX產生默認值):

<?xml version="1.0" encoding="utf-8"?> 
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> 
    <Description about="urn:mozilla:install-manifest"> 
    <em:id>[email protected]</em:id> 
    <em:version>0.1</em:version> 
    <em:type>2</em:type> 
    <em:bootstrap>true</em:bootstrap> 
    <em:unpack>false</em:unpack> 

    <!-- Firefox --> 
    <em:targetApplication> 
     <Description> 
     <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> 
     <em:minVersion>19.0</em:minVersion> 
<!-- I tried also with maxVersion 25.* --> 
     <em:maxVersion>20.*</em:maxVersion> 
     </Description> 
    </em:targetApplication> 

    <!-- Front End MetaData --> 
    <em:name>TEST</em:name> 
    <em:description>a basic add-on</em:description> 
    <em:creator></em:creator> 
    <em:updateURL>https://mydomain.com/updates.rdf</em:updateURL> 
    </Description> 
</RDF> 

當我手動安裝將.xpi文件與拖放到Firefox,則當我在加載項管理器中調用Check for Updates時,會按預期檢查updateURL。

我錯過了什麼嗎?是否支持通過註冊表安裝的擴展支持<updateURL>

回答

1

通過Windows註冊表安裝的是locked,因此附加組件不被視爲可升級。與配置文件中的附加組件不同,此類位置被認爲是外部的,而不是應用程序控制的,因此很可能用戶無法升級附加組件(只有系統管理員可以)。

通過系統位置的註冊表安裝的附件必須提供自己的升級機制。

相關問題