autoUpdater.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. 'use strict';
  2. const updater = require("electron-updater");
  3. const autoUpdater = updater.autoUpdater;
  4. const config = require('../config');
  5. const {app} = require('electron');
  6. const eLogger = require('./eLogger').get();
  7. const helper = require('./helper');
  8. exports.setup = function () {
  9. const version = app.getVersion();
  10. eLogger.info('[autoUpdater] [setup] current version: ', version);
  11. const platformObj = helper.getPlatform();
  12. const updateConfig = config.get('autoUpdate');
  13. let server = updateConfig.options.url;
  14. server = `${server}${platformObj.platform}/`;
  15. eLogger.info('[autoUpdater] [setup] server: ', server);
  16. updateConfig.options.url = server;
  17. try {
  18. autoUpdater.setFeedURL(updateConfig.options);
  19. } catch (error) {
  20. eLogger.error('[autoUpdater] [setup] setFeedURL error : ', error);
  21. }
  22. autoUpdater.on('checking-for-update', () => {
  23. sendStatusToWindow('Checking for update...');
  24. })
  25. autoUpdater.on('update-available', (info) => {
  26. sendStatusToWindow('Update available.');
  27. })
  28. autoUpdater.on('update-not-available', (info) => {
  29. sendStatusToWindow('Update not available.');
  30. })
  31. autoUpdater.on('error', (err) => {
  32. sendStatusToWindow('Error in auto-updater. ' + err);
  33. })
  34. autoUpdater.on('download-progress', (progressObj) => {
  35. let log_message = "Download speed: " + progressObj.bytesPerSecond;
  36. log_message = log_message + ' - Downloaded ' + progressObj.percent + '%';
  37. log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')';
  38. sendStatusToWindow(log_message);
  39. })
  40. autoUpdater.on('update-downloaded', (info) => {
  41. sendStatusToWindow('Update downloaded');
  42. // quit and update
  43. helper.appQuit();
  44. autoUpdater.quitAndInstall();
  45. });
  46. };
  47. exports.checkUpdate = function () {
  48. autoUpdater.checkForUpdatesAndNotify();
  49. }
  50. function sendStatusToWindow(text) {
  51. eLogger.info(text);
  52. MAIN_WINDOW.webContents.send('message', text);
  53. }
  54. exports = module.exports;