2

XUL 应用程序中的扩展是否可以在应用程序启动时自动更新到较新版本?我试图弄清楚这一点。如果这是可能的,如果有人能指出关于这方面的好的文档,我将非常感激,因为我在 Internet 上找不到任何关于这个主题的好文章。

4

1 回答 1

1

XULRunner 内置了与 Firefox 相同的扩展更新机制——它会在应用程序运行时每天查找一次扩展更新。如果找到更新,它将立即更新无需重启的扩展,其他扩展将在下次应用程序启动时下载和更新。您必须确保为您的应用程序定义了以下首选项(从 Firefox 首选项复制):

pref("extensions.update.autoUpdateDefault", true);
pref("extensions.update.enabled", true);
pref("extensions.update.interval", 86400);
pref("extensions.update.url", "...");
pref("extensions.update.background.url", "...");

棘手的部分是更新 URL。当然,您可以使用与 Firefox 相同的 URL:

https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%

https://versioncheck-bg.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%

这适用于addons.mozilla.org上可用的扩展。但是,我怀疑您的应用程序的扩展将在那里不可用。那么你有两个选择。您可以在此处输入一些虚拟 URL,data:text/xml,<nada/>以使插件管理器保持安静,并确保所有扩展都具有自定义updateURL. 或者你可以运行你自己的更新服务器,它会为所有已知的扩展生成更新清单(基本上是 addons.mozilla.org 正在做的事情)。

于 2012-08-21T16:14:28.873 回答