{app} = require 'electron' {EventEmitter} = require 'events' url = require 'url' squirrelUpdate = require './squirrel-update-win' class AutoUpdater extends EventEmitter quitAndInstall: -> squirrelUpdate.processStart() app.quit() setFeedURL: (updateURL) -> @updateURL = updateURL checkForUpdates: -> return @emitError 'Update URL is not set' unless @updateURL return @emitError 'Can not find Squirrel' unless squirrelUpdate.supported() @emit 'checking-for-update' squirrelUpdate.download @updateURL, (error, update) => return @emitError error if error? return @emit 'update-not-available' unless update? @emit 'update-available' squirrelUpdate.update @updateURL, (error) => return @emitError error if error? {releaseNotes, version} = update ### Following information is not available on Windows, so fake them. ### date = new Date url = @updateURL @emit 'update-downloaded', {}, releaseNotes, version, date, url, => @quitAndInstall() ### Private: Emit both error object and message, this is to keep compatibility with Old APIs. ### emitError: (message) -> @emit 'error', new Error(message), message module.exports = new AutoUpdater