electron/docs/api/auto-updater.md
Plusb Preco 4f4277e25e 📝 Fix coding style issues
* Adjust line length to `80`
* Normalize whitespaces

[ci skip]
2016-04-22 22:54:43 +09:00

115 lines
3.6 KiB
Markdown

# autoUpdater
This module provides an interface for the `Squirrel` auto-updater framework.
You can quickly launch a multi-platform release server for distributing your
application by using one of these projects:
- [electron-release-server][electron-release-server]: *A fully featured,
self-hosted release server for electron applications, compatible with
auto-updater*
- [squirrel-updates-server][squirrel-updates-server]: *A simple node.js server
for Squirrel.Mac and Squirrel.Windows which uses GitHub releases*
## Platform notices
Though `autoUpdater` provides a uniform API for different platforms, there are
still some subtle differences on each platform.
### OS X
On OS X, the `autoUpdater` module is built upon [Squirrel.Mac][squirrel-mac],
meaning you don't need any special setup to make it work. For server-side
requirements, you can read [Server Support][server-support].
**Note:** Your application must be signed for automatic updates on Mac OS X.
This is a requirement of `Squirrel.Mac`.
### Windows
On Windows, you have to install your app into a user's machine before you can
use the auto-updater, so it is recommended to use
[grunt-electron-installer][installer] module to generate a Windows installer.
The installer generated with Squirrel will create a shortcut icon with an
[Application User Model ID][app-user-model-id] in the format of
`com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE`, examples are
`com.squirrel.slack.Slack` and `com.squirrel.code.Code`. You have to use the
same ID for your app with `app.setAppUserModelId` API, otherwise Windows will
not be able to pin your app properly in task bar.
The server-side setup is also different from OS X. You can read the documents of
[Squirrel.Windows][squirrel-windows] to get more details.
### Linux
There is no built-in support for auto-updater on Linux, so it is recommended to
use the distribution's package manager to update your app.
## Events
The `autoUpdater` object emits the following events:
### Event: 'error'
Returns:
* `error` Error
Emitted when there is an error while updating.
### Event: 'checking-for-update'
Emitted when checking if an update has started.
### Event: 'update-available'
Emitted when there is an available update. The update is downloaded
automatically.
### Event: 'update-not-available'
Emitted when there is no available update.
### Event: 'update-downloaded'
Returns:
* `event` Event
* `releaseNotes` String
* `releaseName` String
* `releaseDate` Date
* `updateURL` String
Emitted when an update has been downloaded.
On Windows only `releaseName` is available.
## Methods
The `autoUpdater` object has the following methods:
### `autoUpdater.setFeedURL(url)`
* `url` String
Sets the `url` and initialize the auto updater. The `url` cannot be changed
once it is set.
### `autoUpdater.checkForUpdates()`
Asks the server whether there is an update. You must call `setFeedURL` before
using this API.
### `autoUpdater.quitAndInstall()`
Restarts the app and installs the update after it has been downloaded. It
should only be called after `update-downloaded` has been emitted.
[squirrel-mac]: https://github.com/Squirrel/Squirrel.Mac
[server-support]: https://github.com/Squirrel/Squirrel.Mac#server-support
[squirrel-windows]: https://github.com/Squirrel/Squirrel.Windows
[installer]: https://github.com/atom/grunt-electron-installer
[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx
[electron-release-server]: https://github.com/ArekSredzki/electron-release-server
[squirrel-updates-server]: https://github.com/Aluxian/squirrel-updates-server