3

UPDATE:解決了其中的一部分,而不是其他爲什麼我的打包Chrome擴展沒有更新?

  1. 我有CRX現在更新(這不是重建)。

  2. 但是,Chrome將不接受https或URL中的XML或CRX。

我相信#2是因爲它是一個自簽名證書。有誰知道是否有解決方法? (這純粹是爲了發展,所以內部託管)

原貼:

我創建了一個打包的擴展,是在我的內部網站託管,但添加通過從桌面拖動到Chrome(因爲Chrome將不允許通過外部網站安裝打包的擴展程序 - 請參閱此處:After adding ExtensionInstallSources preference with my URL to Chrome Preferences, still won't allow installing ".crx" packaged app)。

清單將update_url設置爲位於我網站上的XML文件。該XML文件具有在updatecheck codebase='...'下設置的crx文件的url。這兩個文件都存在於網站上,並且可以找到。我還在XML文件和manifest.json中修改了2.0.0.22.0.0.2的版本號。我還對擴展的index.html文件進行了更改。

我檢查了appid,它在XML文件和Chrome中是一樣的。

儘管單擊「更新擴展名」按鈕約50次,並等待10分鐘,但它不會更新。

注:我做了別名,其中網站託管在我的hosts文件,myinternal.fake內部IP,但192.168.1.108這個工作在兩個Chrome和Firefox,所以我不認爲這是個問題

更新XML文件(位於:https://myinternal.fake/updates/helloworld.xml

<?xml version='1.0' encoding='UTF-8'?> 
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'> 
    <app appid='akchdaojnpiglpjeiamjpacbkppcgbgj'> 
     <updatecheck codebase='https://myinternal.fake/helloworld.crx' version='2.0.0.2' prodversionmin='23' /> 
    </app> 
</gupdate> 

manifest.json的

{ 
    "manifest_version": 2, 
    "name": "Hello World", 
    "version": "2.0.0.2", 
    "minimum_chrome_version": "23", 
    "update_url": "https://myinternal.fake/updates/helloworld.xml", 
    "icons": 
    { 
     "16": "icon_16.png", 
     "128": "icon_128.png" 
    }, 
    "app": 
    { 
     "background": 
     { 
      "scripts": 
      [ 
       "main.js" 
      ] 
     } 
    } 
} 

編輯:我也檢查和頭是一個可接受的鉻(根據這個:http://developer.chrome.com/dev/extensions/hosting.html)。它將CRX文件作爲「text/plain」發送,並且不發送標頭X-Content-Type-Options: nosniff,因此它應該是有效的。

此外,當我從https更改爲http時,現在當我點擊「立即更新擴展名」時,擴展消失了一秒鐘,表明它正在讀取XML,但仍然不接受更新!

回答

3

問題在於自簽名證書和Chrome。 Chrome不接受自動簽名證書的擴展更新,除非他們是「被接受」的權限。這些步驟將使其工作:

  1. 遵循以下步驟:https://stackoverflow.com/a/15076602/857025導出證書,然後導入它作爲一個權威

  2. ,關閉Chrome

  3. 重新啓動Chrome,

  4. 關閉擴展窗口如果打開

  5. 通過「chrome :// extensions「,然後單擊」立即更新擴展名「

然後它應該更新位於自簽名https連接上的擴展名。

UPDATE這不是一個完美的解決方案,因爲Chrome在接受自簽名證書方面看起來有些不可靠。它隨機停止看到更新。如果我切換回使用常規http(update_url和CRX的url),每次都會發生更新。

我查了一下,我的證書仍然是一個值得信賴的權威,但Chrome瀏覽器突然停止識別更新,所以必須有一個問題。

相關問題