fae2c7bc7a
Apparently that PR was never tested.
42 lines
1.2 KiB
CoffeeScript
42 lines
1.2 KiB
CoffeeScript
app = require 'app'
|
|
url = require 'url'
|
|
{EventEmitter} = require 'events'
|
|
|
|
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
|