Last active
March 26, 2018 14:38
-
-
Save akashnimare/6374ab79d5c8cf235971079e6959fe88 to your computer and use it in GitHub Desktop.
Add auto-updates to your Electron app
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
const os = require('os'); | |
const {app, autoUpdater, dialog} = require('electron'); | |
const version = app.getVersion(); | |
const platform = os.platform() + '_' + os.arch(); // usually returns darwin_64 | |
const updaterFeedURL = 'http://zulipdesktop.herokuapp.com/update/' + platform + '/' + version; | |
// replace updaterFeedURL with http://yourappname.herokuapp.com | |
function appUpdater() { | |
autoUpdater.setFeedURL(updaterFeedURL); | |
/* Log whats happening | |
TODO send autoUpdater events to renderer so that we could console log it in developer tools | |
You could alsoe use nslog or other logging to see what's happening */ | |
autoUpdater.on('error', err => console.log(err)); | |
autoUpdater.on('checking-for-update', () => console.log('checking-for-update')); | |
autoUpdater.on('update-available', () => console.log('update-available')); | |
autoUpdater.on('update-not-available', () => console.log('update-not-available')); | |
// Ask the user if update is available | |
autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName) => { | |
let message = app.getName() + ' ' + releaseName + ' is now available. It will be installed the next time you restart the application.'; | |
if (releaseNotes) { | |
const splitNotes = releaseNotes.split(/[^\r]\n/); | |
message += '\n\nRelease notes:\n'; | |
splitNotes.forEach(notes => { | |
message += notes + '\n\n'; | |
}); | |
} | |
// Ask user to update the app | |
dialog.showMessageBox({ | |
type: 'question', | |
buttons: ['Install and Relaunch', 'Later'], | |
defaultId: 0, | |
message: 'A new version of ' + app.getName() + ' has been downloaded', | |
detail: message | |
}, response => { | |
if (response === 0) { | |
setTimeout(() => autoUpdater.quitAndInstall(), 1); | |
} | |
}); | |
}); | |
// init for updates | |
autoUpdater.checkForUpdates(); | |
} | |
exports = module.exports = { | |
appUpdater | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi.
About the auto updating, any idea why this :
"const updaterFeedURL = 'http://myapp.herokuapp.com/update/' + platform + '/' + version;"
send me to a 404 error when i'm launching my app ? I think it doesn't know what is the "/update" part.