autoUpdater
使应用程序能够自动更新。
进程:主进程
另请参阅:关于如何在应用程序中实现更新的详细指南。
autoUpdater 是一个 EventEmitter。
平台注意事项
目前,仅支持 macOS 和 Windows。Linux 没有内置的自动更新支持,因此建议使用发行版的包管理器来更新你的应用。
此外,每个平台都有一些细微的差别
macOS
在 macOS 上,autoUpdater 模块基于 Squirrel.Mac 构建,这意味着你无需任何特殊设置即可使其工作。有关服务器端要求,你可以阅读 服务器支持。请注意,应用程序传输安全 (ATS) 适用于作为更新过程一部分的所有请求。需要禁用 ATS 的应用程序可以将其 NSAllowsArbitraryLoads 键添加到其应用程序的 plist 中。
你的应用程序必须在 macOS 上签名才能进行自动更新。这是 Squirrel.Mac 的要求。
Windows
在 Windows 上,你必须在使用 autoUpdater 之前将应用程序安装到用户的机器上,因此建议你使用 electron-winstaller 或 Electron Forge 的 Squirrel.Windows maker 来生成 Windows 安装程序。
使用 Squirrel.Windows 构建的应用程序将触发自定义启动事件,你的 Electron 应用程序必须处理这些事件以确保正确的设置和拆卸。
Squirrel.Windows 应用程序将在安装后立即以 --squirrel-firstrun 参数启动。在此期间,Squirrel.Windows 将获取你的应用程序的文件锁,并且 autoUpdater 请求将失败,直到锁被释放。实际上,这意味着你将无法在首次启动后的前几秒钟检查更新。你可以通过在 process.argv 包含 --squirrel-firstrun 标志时不检查更新,或者通过设置 10 秒的更新检查超时来解决此问题(有关详细信息,请参阅 electron/electron#7155)。
使用 Squirrel.Windows 生成的安装程序将创建一个带有 应用程序用户模型 ID 的快捷方式图标,格式为 com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE,例如 com.squirrel.slack.Slack 和 com.squirrel.code.Code。你必须使用 app.setAppUserModelId API 为你的应用程序使用相同的 ID,否则 Windows 将无法在任务栏中正确固定你的应用程序。
事件
autoUpdater 对象发出以下事件
事件:‘error’
返回
error错误
更新时发生错误时发出。
事件:'checking-for-update'
开始检查可用更新时发出。
事件:'update-available'
有可用更新时发出。更新会自动下载。
事件:'update-not-available'
没有可用更新时发出。
事件:'update-downloaded'
返回
eventEventreleaseNotes字符串releaseName字符串releaseDate日期updateURL字符串
下载更新后发出。
在 Windows 上,只有 releaseName 可用。
不严格要求处理此事件。成功下载的更新仍将在应用程序下次启动时应用。
事件:'before-quit-for-update'
此事件在用户调用 quitAndInstall() 后发出。
当调用此 API 时,在所有窗口关闭之前不会发出 before-quit 事件。因此,如果你希望在进程退出时在窗口关闭之前执行操作,则应侦听此事件,并侦听 before-quit。
方法
autoUpdater 对象具有以下方法
autoUpdater.setFeedURL(options)
设置 url 并初始化自动更新程序。
autoUpdater.getFeedURL()
返回 string - 当前的更新源 URL。
autoUpdater.checkForUpdates()
询问服务器是否有更新。在使用此 API 之前,你必须调用 setFeedURL。
如果有可用更新,它将自动下载。调用 autoUpdater.checkForUpdates() 两次将下载更新两次。
autoUpdater.quitAndInstall()
重新启动应用程序并在下载更新后安装更新。它只能在发出 update-downloaded 后调用。
在底层,调用 autoUpdater.quitAndInstall() 将首先关闭所有应用程序窗口,并在所有窗口关闭后自动调用 app.quit()。
不严格要求调用此函数来应用更新,因为成功下载的更新总是在应用程序下次启动时应用。