跳到主要内容

Electron 10.0.0

·5 分钟阅读

Electron 10.0.0 已发布!它包括对 Chromium 85、V8 8.5 和 Node.js 12.16 的升级。我们添加了几个新的 API 集成和改进。阅读下文了解更多详情!


Electron 团队很高兴地宣布 Electron 10.0.0 的发布!您可以通过 npm 使用 npm install electron@latest 安装它,或者从我们的 发布网站 下载它。此版本包含大量升级、修复和新功能。

在 Electron 10 版本中,我们还对发布说明进行了更改。为了更容易区分 Electron 10 中的全新内容以及 Electron 10 与过去版本之间可能发生的更改,我们现在还包括 Electron 10 中引入但向后移植到以前版本的更改。我们希望这能使应用在升级 Electron 时更容易找到新功能和错误修复。

我们迫不及待想看看您用它们构建什么!继续阅读以了解有关此版本的详细信息,请分享您的任何反馈!

显著变化

堆栈变化

亮点功能

  • 添加了 contents.getBackgroundThrottling() 方法和 contents.backgroundThrottling 属性。 [#21036]
  • 在主进程中公开了 desktopCapturer 模块。 #23548
  • 现在可以通过调用 ses.isPersistent() API 检查给定的 session 是否是持久的。 #22622
  • 解决了由于网络 IP 地址更改和 ICE 导致 RTC 调用无法连接的网络问题。(Chromium 问题 1113227)。 #24998

请参阅 10.0.0 版本说明,以获取新功能和更改的完整列表。

破坏性更改

  • enableRemoteModule 的默认值更改为 false#22091
    • 这是我们弃用 remote 模块并将其移至用户空间计划的一部分。您可以阅读并关注 此问题,其中详细说明了我们这样做的原因,并包括了建议的弃用时间表。
  • app.allowRendererProcessReuse 的默认值更改为 true#22336(也在 Electron 9 中)
    • 这将阻止在渲染器进程中加载非上下文感知的原生模块。
    • 您可以阅读并关注 此问题,其中详细说明了我们这样做的原因,并包括了建议的弃用时间表。
  • 修复了当操作系统区域设置设置为 RTL 语言(如阿拉伯语或希伯来语)时,macOS 上窗口按钮的定位问题。无边框窗口应用在设置窗口样式时可能需要考虑此更改。 #22016

有关这些和未来更改的更多信息,请访问 计划的破坏性更改 页面。

API 变更

  • Session:现在可以通过调用 ses.isPersistent() API 检查给定的 session 是否是持久的。 #22622
  • Contents:添加了 contents.getBackgroundThrottling() 方法和 contents.backgroundThrottling 属性。 #21036

已弃用的 API

以下 API 现已弃用或删除

  • 删除了 netLog 中已弃用的 currentlyLoggingPath 属性。此外,netLog.stopLogging 不再返回记录日志的路径。 #22732
  • 弃用了 crashReporter 中的未压缩崩溃上传。 #23598

7.x.y 版本停止支持

根据项目的 支持策略,Electron 7.x.y 已停止支持。鼓励开发者和应用程序升级到更新版本的 Electron。

下一步是什么

在短期内,您可以期望团队继续专注于跟上构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发进度。尽管我们谨慎不对发布日期做出承诺,但我们的计划是大约每季度发布 Electron 的新主要版本,其中包含这些组件的新版本。暂定的 11.0.0 时间表 标出了 Electron 11.0 开发生命周期中的关键日期。此外,请参阅我们的版本控制文档,以获取有关 Electron 版本控制的更详细信息。

有关即将发布的 Electron 版本中计划的破坏性更改的信息,请参阅我们的计划的破坏性更改文档

继续进行弃用 remote 模块的工作(在 Electron 11 中)

我们已开始在 Electron 9 中移除 remote 模块的工作,并且我们正在继续移除 remote 模块的计划。在 Electron 11 中,我们计划继续进行重构工作,以实现 WeakRef,就像我们在 Electron 10 中所做的那样。请阅读并关注 此问题,以了解有关弃用的完整计划和详细信息。

要求原生 Node 模块为上下文感知或 N-API 的最后一步(在 Electron 12 中)

编辑:最初,此博客文章声明我们将在 Electron 11 中禁用渲染器进程重用。禁用渲染器进程重用现已推迟到 Electron 12。

从 Electron 6 开始,我们一直在为要求在渲染器进程中加载的 原生 Node 模块N-API上下文感知 奠定基础。强制执行此更改可以实现更强的安全性、更快的性能和减少的维护工作量。此计划的最后一步是在 Electron 12 中删除禁用渲染进程重用的能力。阅读 此问题 以了解完整详细信息,包括建议的时间表。

Electron 成为 OpenJS 基金会影响力项目

·一分钟阅读

今天早上在 OpenJS World 上,我们宣布 Electron 已正式从 OpenJS 基金会 的孵化计划中毕业,现在是 OpenJS 基金会的影响力项目。

Electron 在 2019 年 12 月进入孵化期,在蒙特利尔举行的上届 OpenJS 基金会全球会议上。我们很高兴作为影响力项目在 JavaScript 社区中发挥更大的作用,并继续与 OpenJS 基金会合作。


了解更多

您可以在 OpenJSF 网站 上阅读有关该基金会、其使命及其成员的信息。OpenJS 基金会托管了许多开源 JavaScript 项目,包括 jQuery、Node.js 和 webpack。它得到了 30 家企业和最终用户成员的支持,包括 GoDaddy、Google、IBM、Intel、Joyent 和 Microsoft。

Electron 是一个开源框架,用于使用 Web 技术构建跨平台桌面应用程序。要了解更多关于 Electron 背后的开发者以及他们如何协同工作的信息,请查看我们的 治理页面

要开始使用 Electron 本身,请查看 我们的文档

Google Season of Docs

·2 分钟阅读

Electron 很荣幸能参与第二届 Google Season of Docs 计划,该计划将开源组织的导师与技术作家配对,以改进项目文档。


什么是 Season of Docs?

Season of Docs logo

Season of Docs 是一项旨在促进技术作家和开源社区之间合作的计划,这对双方都有利。开源维护者利用作家的技术写作专业知识来改进其文档的结构和内容,而技术作家则在其导师的指导下被引入开源社区。在 Google 的 Season of Docs 网站 上了解更多信息。

在我们首次参与该计划时,我们将指导一位技术作家,他将与 Electron 的 生态系统工作组 合作,重塑我们文档的很大一部分。您可以在 此处 了解有关整个项目时间表的更多信息。

如何注册?

您是否有兴趣作为技术作家与我们合作?首先,熟悉 Google 今年计划的 技术作家指南,并查看我们准备的两个 项目构想草案

为了被选为 Electron 在 Season of Docs 中的技术作家,候选人需要在 6 月 8 日至 7 月 9 日期间在 Google Season of Docs 网站上申请技术作家职位。

您的申请应包括一份提案,这是一份书面文件,详细描述了您计划在 3 个月内在 Electron 文档上实现的目标。此提案可以基于我们的项目构想文档中提到的起点之一进行开发,也可以是全新的内容。不知道从哪里开始?您可以查看去年的 已接受提案列表 以获取灵感。

除了提案之外,我们还将关注您作为技术作家的背景。请附上一份简历副本,重点介绍相关的写作经验,以及技术写作样本(这些样本可以是现有文档、教程、博客文章等)。

如果您想讨论项目提案,请发送电子邮件至 season-of-docs@electronjs.org,我们可以在那里开始交流!

参考

Electron 9.0.0

·4 分钟阅读

Electron 9.0.0 已发布!它包括对 Chromium 83、V8 8.3 和 Node.js 12.14 的升级。我们为拼写检查器功能添加了几个新的 API 集成,启用了 PDF 查看器等等!


Electron 团队很高兴地宣布 Electron 9.0.0 的发布!您可以通过 npm 使用 npm install electron@latest 安装它,或者从我们的 发布网站 下载它。此版本包含大量升级、修复和新功能。我们迫不及待想看看您用它们构建什么!继续阅读以了解有关此版本的详细信息,请分享您的任何反馈!

显著变化

堆栈变化

亮点功能

  • 拼写检查器功能的多次改进。请参阅 #22128#22368 了解更多详情。
  • 提高了 Linux 上窗口事件处理程序效率。 #23260
  • 启用 PDF 查看器。 #22131

请参阅 9.0.0 版本说明,以获取新功能和更改的完整列表。

破坏性更改

  • 当在没有 enableRemoteModule: true 的情况下使用 remote 时,会发出弃用警告。 #21546
    • 这是我们弃用 remote 模块并将其移至用户空间计划的第一步。您可以阅读并关注 此问题,其中详细说明了我们这样做的原因,并包括了建议的弃用时间表。
  • 默认情况下将 app.enableRendererProcessReuse 设置为 true。 #22336
    • 这是为将来要求在渲染器进程中加载的原生 Node 模块为 N-API上下文感知 而进行的持续工作。完整信息和建议的时间表在 此问题 中详细说明。
  • 现在通过 IPC 发送非 JavaScript 对象会抛出异常。 #21560
    • 此行为在 Electron 8.0 中已弃用。在 Electron 9.0 中,旧的序列化算法已被删除,发送此类不可序列化对象现在将抛出“无法克隆对象”错误。

有关这些和未来更改的更多信息,请访问 计划的破坏性更改 页面。

API 变更

  • shell API 变更
    • shell.openItem API 已被异步 shell.openPath API 取代。 提案
  • session API 变更
    • 添加了 session.listWordsFromSpellCheckerDictionary API,用于列出字典中的自定义单词。 #22128
    • 添加了 session.removeWordFromSpellCheckerDictionary API,用于删除字典中的自定义单词。 #22368
    • 添加了 session.serviceWorkerContext API,用于访问基本服务工作线程信息并接收来自服务工作线程的控制台日志。 #22313
  • app API 变更
    • 在 macOS 上的 app.focus() 中添加了一个新的 force 参数,以允许应用程序强制获取焦点。 #23447
  • BrowserWindow API 变更
    • BrowserWindow 上为某些 getter/setter 对添加了属性访问支持。 #23208

已弃用的 API

以下 API 现已弃用或删除

  • shell.openItem API 现在已弃用,并被异步 shell.openPath API 取代。
  • <webview>.getWebContents 在 Electron 8.0 中已弃用,现已删除。
  • webFrame.setLayoutZoomLevelLimits 在 Electron 8.0 中已弃用,现已删除。

6.x.y 版本停止支持

根据项目的 支持策略,Electron 6.x.y 已停止支持。鼓励开发者和应用程序升级到更新版本的 Electron。

下一步是什么

在短期内,您可以期望团队继续专注于跟上构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发进度。尽管我们谨慎不对发布日期做出承诺,但我们的计划是大约每季度发布 Electron 的新主要版本,其中包含这些组件的新版本。暂定的 10.0.0 时间表 标出了 Electron 10.0 开发生命周期中的关键日期。此外,请参阅我们的版本控制文档,以获取有关 Electron 版本控制的更详细信息。

有关即将发布的 Electron 版本中计划的破坏性更改的信息,请参阅我们的计划的破坏性更改文档

contextIsolation 的默认值从 false 更改为 true(从 Electron 10 开始)

如果没有 contextIsolation,则在渲染器进程中运行的任何代码都可以很容易地访问 Electron 内部结构或应用程序的预加载脚本。然后,该代码可以执行 Electron 想要保持限制的特权操作。

更改此默认值可以提高 Electron 应用程序的默认安全性,以便应用程序需要有意识地选择不安全的行为。Electron 将在 Electron 10.0 中弃用当前的 contextIsolation 默认值,并在 Electron 12.0 中更改为新默认值 (true)。

有关 contextIsolation 的更多信息、如何轻松启用它及其安全优势,请参阅我们专门的 Context Isolation 文档

即将发布的 Electron 版本

·一分钟阅读

Electron 暂时暂停主要版本发布


发生了什么?

我们的 主要版本发布节奏计划 与 Chromium 的节奏同步,并且 Chromium 项目最近决定由于工作计划的调整而 暂停其发布。这意味着在 Chromium 更改节奏的持续时间内,Electron 也将暂时暂停新的主要版本发布。

我们认为最好的选择是跟随 Chromium 的脚步,因此在此期间,Electron 团队将转向专注于错误修复、安全性、性能和稳定性。

我们希望确保在此期间优先考虑我们的维护者和消费者的福祉,因此我们欢迎您的反馈,并期待恢复我们的常规发布计划。

有关更多更新,请关注我们的 Twitter 帐户

编辑(2020-03-30):Electron 9 稳定版将以 Chromium M83 为目标,并于 2020 年 5 月 19 日发布,以响应 Chromium 关于 跳过 M82 稳定日期并调整 M83 稳定日期的公告。

Electron 8.0.0

·6 分钟阅读

Electron 8.0.0 已发布!它包括对 Chromium 80、V8 8.0 和 Node.js 12.13.0 的升级。我们添加了 Chrome 的内置拼写检查器,以及更多功能!


Electron 团队很高兴地宣布 Electron 8.0.0 的发布!您可以通过 npm 使用 npm install electron@latest 安装它,或者从我们的 发布网站 下载它。此版本包含大量升级、修复和新功能。我们迫不及待想看看您用它们构建什么!继续阅读以了解有关此版本的详细信息,请分享您的任何反馈!

显著变化

堆栈变化

亮点功能

  • 实现了 Chrome 内置拼写检查器功能的使用。请参阅 #20692#21266 了解更多详情。
  • IPC 通信现在使用 v8 的结构化克隆算法。这比现有逻辑更快、功能更强大且更不易出错,并且为大型缓冲区和复杂对象带来了 2 倍的性能提升。小消息的延迟没有受到显着影响。请参阅 #20214 了解更多详情。

请参阅 8.0.0 版本说明,以获取新功能和更改的完整列表。

破坏性更改

  • 在上下文感知模块的弃用警告中显示模块名称。 #21952
    • 这是为将来要求在渲染器进程中加载的原生 Node 模块为 N-API上下文感知 而进行的持续工作。完整信息和建议的时间表在 此问题 中详细说明。
  • 通过 IPC 发送的值现在使用结构化克隆算法进行序列化。 #20214
  • 由于缺乏维护人员来处理此功能,因此目前已禁用离屏渲染。它在 Chromium 升级期间中断,随后被禁用。 #20772

有关这些和未来更改的更多信息,请访问 计划的破坏性更改 页面。

API 变更

  • app API 变更
    • 添加了 app.getApplicationNameForProtocol(url)#20399
    • 在 Windows 上添加了 app.showAboutPanel()app.setAboutPanelOptions(options) 支持。 #19420
  • BrowserWindow API 变更
    • 更新了文档,以说明 BrowserWindow 选项 hasShadow 在所有平台上均可用 #20038
    • 在 BrowserWindow 选项中添加了 trafficLightPosition 选项,以允许自定义交通信号灯按钮的位置。 #21781
    • 在 BrowserWindow 中添加了 accessibleTitle 选项,用于设置可访问的窗口标题 #19698
    • BrowserWindow.fromWebContents() 现在可以返回 null #19983
    • 添加了 BrowserWindow.getMediaSourceId()BrowserWindow.moveAbove(mediaSourceId)#18926
    • 在 macOS 上添加了对 will-move 事件的支持。 #19641
  • 记录了先前未记录的 crashReporter.getCrashesDirectory()#20417
  • dialog API 变更
    • dialog.showOpenDialogdialog.showOpenDialogSync 中添加了 dontAddToRecent 属性,以防止在 Windows 上的打开对话框中将文档添加到最近使用的文档中。 #19669
    • dialog.showSaveDialogdialog.showSaveDialogSync 中添加了属性自定义。 #19672
  • Notification API 变更
    • 添加了 timeoutType 选项,以允许 Linux/Windows 用户设置通知超时的类型。 #20153
    • 添加了 urgency 选项,以在 Linux 通知上设置紧急程度。 #20152
  • session API 变更
    • 更新了有关 session.setProxy(config)session.setCertificateVerifyProc(proc) 的文档,以注明可选选项。 #19604
    • 添加了 session.downloadURL(url),以允许在没有 BrowserWindow 的情况下触发下载。 #19889
    • 通过 session.preconnect(options)preconnect 事件添加了对 HTTP 预连接资源提示的支持。 #18671
    • 添加了 session.addWordToSpellCheckerDictionary,以允许在字典中使用自定义单词 #21297
  • 在 macOS 上,为 shell.moveItemToTrash(fullPath[, deleteOnFail]) 添加了选项,以指定 moveItemToTrash 失败时会发生什么。 #19700
  • systemPreferences API 变更
    • 更新了 macOS 平台的 systemPreferences.getColor(color) 文档。#20611
    • systemPreferences.getMediaAccessStatus() 添加了 screen 媒体类型。#20764
  • 添加了 nativeTheme.themeSource,允许应用覆盖 Chromium 和操作系统的主题选择。#19960
  • TouchBar API 变更
    • TouchBarButtonTouchBarLabel 添加了 accessibilityLabel 属性,以改进 TouchBarButton/TouchBarLabel 的可访问性。#20454
    • 更新了 TouchBar 相关文档 #19444
  • tray API 变更
    • tray.displayBalloon() 添加了新选项:iconTypelargeIconnoSoundrespectQuietTime#19544
    • 添加了 tray.removeBalloon(),用于移除已显示的 balloon 通知。#19547
    • 添加了 tray.focus(),用于将焦点返回到任务栏通知区域。特性:添加 tray.focus() #19548
  • webContents API 变更
    • 添加了 contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture]),以在 webContents API 上公开 executeJavaScriptInIsolatedWorld。#21190
    • 添加了捕获隐藏 webContents 的方法。#21679
    • webContents.print([options], [callback]) 添加了选项,以启用打印页面页眉和页脚的自定义。#19688
    • 添加了通过 webContents.getAllSharedWorkers()webContents.inspectSharedWorkerById(workerId) 检查特定共享 worker 的能力。#20389
    • 在 WebContents.printToPDF() 中添加了对 fitToPageEnabledscaleFactor 选项的支持。#20436
  • 更新了 webview.printToPDF 文档,以表明返回类型现在是 Uint8Array。#20505

已弃用的 API

以下 API 现在已弃用

  • 在下一个主要版本中移除之前,弃用了 BrowserWindow.setVisibleOnAllWorkspaces 中无功能的 visibleOnFullScreen 选项。#21732
  • 在 macOS 平台的 systemPreferences.getColor(color) 上弃用了 alternate-selected-control-text#20611
  • 由于 Chromium 删除了此功能,因此在 webContentswebFrame<webview> Tag 上弃用了 setLayoutZoomLevelLimits#21296
  • app.allowRendererProcessReuse 的默认值 false 现在已弃用。#21287
  • 弃用了 <webview>.getWebContents(),因为它依赖于 remote 模块。#20726

5.x.y 版本停止支持

根据项目的支持策略,Electron 5.x.y 版本已达到停止支持日期。 建议开发者和应用程序升级到较新版本的 Electron。

应用反馈计划

我们继续使用我们的应用反馈计划进行测试。参与此计划的项目在其应用上测试 Electron beta 版本;作为回报,他们发现的新 bug 将在稳定版本中优先修复。如果您想参与或了解更多信息,请查看我们关于该计划的博客文章

下一步是什么

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们谨慎地不对发布日期做出承诺,但我们的计划是大约每季度发布 Electron 的新主要版本以及这些组件的新版本。暂定的 9.0.0 时间表 规划了 Electron 9 开发生命周期中的关键日期。此外,请参阅我们的版本控制文档,以获取有关 Electron 版本控制的更多详细信息。

有关即将发布的 Electron 版本中计划的破坏性更改的信息,请参阅我们的计划的破坏性更改文档

弃用 remote 模块(从 Electron 9 开始)

由于严重的安全隐患,我们开始计划从 Electron 9 开始弃用 remote 模块。您可以阅读并关注此 issue,其中详细说明了我们这样做的原因,并包含了一个拟议的弃用时间表。

Electron 加入 OpenJS 基金会

·2 分钟阅读

在蒙特利尔举行的 Node+JS Interactive 上,OpenJS 基金会 宣布接受 Electron 加入该基金会的孵化计划。该基金会致力于通过提供一个中立的组织来托管和维护项目,以及协同资助有益于整个社区的活动,来支持 JavaScript 生态系统和 Web 技术的健康发展。

OpenJS 基金会是许多开源 JavaScript 项目的托管方,包括 jQuery、Node.js 和 webpack。它得到了 30 家企业和最终用户成员的支持,包括 GoDaddy、Google、IBM、Intel、Joyent 和 Microsoft。Electron 是一个开源框架,用于使用 Web 技术构建跨平台桌面应用程序。

这对 Electron 来说是一个令人兴奋的举动,我们将其视为我们作为开源项目发展过程中的下一步。


这对开发者意味着什么

Electron 加入 OpenJS 基金会并不会改变 Electron 的制作、发布或使用方式,也不会直接影响使用 Electron 构建应用程序的开发者。尽管 Electron 最初于 2013 年在 GitHub 上创建,但目前由多个组织和个人维护。2019 年,Electron 编纂了其治理结构,并大力投入于规范化影响整个项目的决策的制定方式。我们相信,多个组织和开发者对 Electron 进行投资和协作,将使项目更加强大。

将 Electron 从单一企业实体所有转变为专注于支持 Web 和 JavaScript 生态系统的中立基金会,是我们作为一个开源项目走向成熟的自然下一步。

了解更多

您可以在 OpenJSF 网站上阅读有关该基金会、其使命及其成员的信息。有关 Electron 加入 OpenJSF 孵化计划的更多信息和引述,请查看官方新闻稿。要了解有关 Electron 背后的开发者以及他们如何协同工作的更多信息,请查看我们的治理页面

要开始使用 Electron 本身,请查看 我们的文档

Chromium WebAudio 漏洞修复 (CVE-2019-13720)

·一分钟阅读

Chrome 中发现了一个高危漏洞,该漏洞会影响所有基于 Chromium 的软件,包括 Electron。

此漏洞已被分配为 CVE-2019-13720。您可以在Chrome 博客文章中阅读有关此漏洞的更多信息。

请注意,Chrome 有报告称此漏洞已被用于实际环境中,因此强烈建议您尽快升级 Electron。


影响范围

这会影响任何可能运行第三方或不受信任的 JavaScript 的 Electron 应用程序。

缓解措施

受影响的应用应升级到已修补漏洞的 Electron 版本。

我们发布了新版本的 Electron,其中包含此漏洞的修复程序

Electron 7.0.1 在公告发布之前自动包含了来自上游的修复程序。Electron 8 也同样不受影响。该漏洞在 Electron 5 中不存在,因此该版本也不受影响。

更多信息

此漏洞由 Kaspersky Labs 的 Anton Ivanov 和 Alexey Kulaev 发现并报告给 Chrome 团队。Chrome 博客文章可以在此处找到。

要了解有关保持 Electron 应用程序安全的最佳实践的更多信息,请参阅我们的安全教程

如果您希望报告 Electron 中的漏洞,请发送电子邮件至 security@electronjs.org

Electron 7.0.0

·3 分钟阅读

Electron 7.0.0 已发布!它包括 Chromium 78、V8 7.8 和 Node.js 12.8.1 的升级。我们添加了 Windows on Arm 64 版本、更快的 IPC 方法、新的 nativeTheme API 以及更多内容!


Electron 团队很高兴地宣布 Electron 7.0.0 的发布!您可以通过 npm 使用 npm install electron@latest 安装它,或从我们的发布网站下载它。此版本包含大量升级、修复和新功能。我们迫不及待地想看看您使用它们构建什么!继续阅读以了解有关此版本的详细信息,并请分享您的任何反馈!

显著变化

  • 堆栈升级

    堆栈Electron 6 中的版本Electron 7 中的版本新增功能
    Chromium76.0.3809.14678.0.3905.177, 78
    V87.67.87.7, 7.8
    Node.js12.4.012.8.112.5, 12.6, 12.7, 12.8, 12.8.1
  • 添加了 Windows on Arm (64 位) 版本。#18591, #20112

  • 添加了 ipcRenderer.invoke()ipcMain.handle() 用于异步请求/响应式 IPC。强烈建议使用它们代替 remote 模块。有关更多信息,请参阅此篇“Electron 的 ‘remote’ 模块被认为有害” 博客文章。#18449

  • 添加了 nativeTheme API,用于读取和响应操作系统的主题和配色方案的变化。#19758, #20486

  • 切换到新的 TypeScript 定义 生成器。生成的定义更加精确;因此,如果您的 TypeScript 构建失败,这很可能是原因。#18103

有关更长的更改列表,请参阅 7.0.0 发行说明

破坏性更改

有关这些和未来更改的更多信息,请访问 计划的重大更改 页面。

  • 移除了已弃用的 API
    • 现在使用 Promise 的函数的基于回调的版本。#17907
    • Tray.setHighlightMode() (macOS)。#18981
    • app.enableMixedSandbox() #17894
    • app.getApplicationMenu(),
    • app.setApplicationMenu(),
    • powerMonitor.querySystemIdleState(),
    • powerMonitor.querySystemIdleTime(),
    • webFrame.setIsolatedWorldContentSecurityPolicy(),
    • webFrame.setIsolatedWorldHumanReadableName(),
    • webFrame.setIsolatedWorldSecurityOrigin() #18159
  • Session.clearAuthCache() 不再允许过滤清除的缓存条目。#17970
  • macOS 上的原生界面(菜单、对话框等)现在会自动匹配用户机器上的暗黑模式设置。#19226
  • 更新了 electron 模块以使用 @electron/get。现在支持的最低 Node 版本是 Node 8。#18413
  • 文件 electron.asar 不再存在。任何依赖其存在的打包脚本都应更新。#18577

4.x.y 版本停止支持

根据项目的支持策略,Electron 4.x.y 版本已达到停止支持日期。 建议开发者和应用程序升级到较新版本的 Electron。

应用反馈计划

我们继续使用我们的应用反馈计划进行测试。参与此计划的项目在其应用上测试 Electron beta 版本;作为回报,他们发现的新 bug 将在稳定版本中优先修复。如果您想参与或了解更多信息,请查看我们关于该计划的博客文章

下一步是什么

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们谨慎地不对发布日期做出承诺,但我们的计划是大约每季度发布 Electron 的新主要版本以及这些组件的新版本。暂定的 8.0.0 时间表 规划了 Electron 8 开发生命周期中的关键日期。此外,请参阅我们的版本控制文档,以获取有关 Electron 版本控制的更多详细信息。

有关即将发布的 Electron 版本中计划的重大更改的信息,请参阅我们的计划的重大更改文档

Electron 6.0.0

·4 分钟阅读

Electron 团队很高兴地宣布 Electron 6.0.0 的发布!您可以通过 npm 使用 npm install electron@latest 安装它,或从我们的发布网站下载它。此版本包含大量升级、修复和新功能。我们迫不及待地想看看您使用它们构建什么!继续阅读以了解有关此版本的详细信息,并请分享您的任何反馈!


新增功能

今天标志着 Electron 项目的一个首次:这是我们首次在与对应的 Chrome 稳定版本 同一天发布稳定的 Electron 版本!🎉

Electron 的许多功能由 Chromium、Node.js 和 V8 的核心组件提供。Electron 与这些项目保持同步更新,以为我们的用户提供新的 JavaScript 功能、性能改进和安全修复。这些软件包在 Electron 6 中都有主要版本升级

此版本还包括对 Electron API 的改进。发行说明包含更完整的列表,但以下是重点

Promise 化

Electron 6.0 继续了 5.0 版本中启动的 现代化 Promise 支持的倡议。

这些函数现在返回 Promise,并且仍然支持较旧的基于回调的调用

  • contentTracing.getCategories() #16583
  • contentTracing.getCategories() #16583
  • contentTracing.getTraceBufferUsage() #16600
  • contents.executeJavaScript() #17312
  • cookies.flushStore() #16464
  • cookies.get() #16464
  • cookies.remove() #16464
  • cookies.set() #16464
  • dialog.showCertificateTrustDialog() #17181
  • inAppPurchase.getProducts() #17355
  • inAppPurchase.purchaseProduct()#17355
  • netLog.stopLogging() #16862
  • session.clearAuthCache() #17259
  • session.clearCache() #17185
  • session.clearHostResolverCache() #17229
  • session.clearStorageData() #17249
  • session.getBlobData() #17303
  • session.getCacheSize() #17185
  • session.resolveProxy() #17222
  • session.setProxy() #17222
  • webContents.hasServiceWorker() #16535
  • webContents.printToPDF() #16795
  • webContents.savePage() #16742
  • webFrame.executeJavaScript() #17312
  • webFrame.executeJavaScriptInIsolatedWorld() #17312
  • webviewTag.executeJavaScript() #17312

这些函数现在有两种形式,同步和基于 Promise 的异步

  • dialog.showMessageBox()/dialog.showMessageBoxSync() #17298
  • dialog.showOpenDialog()/dialog.showOpenDialogSync() #16973
  • dialog.showSaveDialog()/dialog.showSaveDialogSync() #17054

这些函数现在返回 Promise

Electron Helper (Renderer).appElectron Helper (GPU).appElectron Helper (Plugin).app

为了启用 硬化运行时,它限制了诸如可写可执行内存和加载由不同团队 ID 签名的代码等功能,需要向 Helper 授予特殊的代码签名权利。

为了使这些权利限定于需要它们的进程类型,Chromium 添加了 Helper 应用程序的三个新变体:一个用于渲染器 (Electron Helper (Renderer).app),一个用于 GPU 进程 (Electron Helper (GPU).app),一个用于插件 (Electron Helper (Plugin).app)。

使用 electron-osx-sign 对其 Electron 应用程序进行代码签名的人员不应对其构建逻辑进行任何更改。如果您使用自定义脚本对应用程序进行代码签名,则应确保正确地对三个新的 Helper 应用程序进行代码签名。

为了使用这些新的 helper 正确打包您的应用程序,您需要使用 electron-packager@14.0.4 或更高版本。如果您使用 electron-builder,则应关注 此 issue 以跟踪对这些新 helper 的支持。

破坏性更改

  • 此版本开始为未来的要求奠定基础,即在渲染器进程中加载的 native Node 模块必须是 N-APIContext Aware。此更改的原因是更快的性能、更强的安全性和减少的维护工作量。阅读 此 issue 中的完整详细信息,包括拟议的时间表。预计此更改将在 Electron v11 中完成。

  • net.IncomingMessage 标头已进行了轻微更改,以更紧密地匹配 Node.js 行为,特别是 set-cookie 的值以及如何处理重复标头。#17517

  • shell.showItemInFolder() 现在返回 void 并且是异步调用。#17121

  • 应用程序现在必须通过调用新函数 app.setAppLogPath() 在使用 app.getPath('log') 之前显式设置日志路径。#17841

3.x.y 版本停止支持

根据我们的支持策略,3.x.y 版本已达到生命周期终止。 建议开发者和应用程序升级到较新版本的 Electron。

应用反馈计划

我们继续使用我们的应用反馈计划进行测试。参与此计划的项目在其应用上测试 Electron beta 版本;作为回报,他们发现的新 bug 将在稳定版本中优先修复。如果您想参与或了解更多信息,请查看我们关于该计划的博客文章

下一步是什么

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们谨慎地不对发布日期做出承诺,但我们的计划是大约每季度发布 Electron 的新主要版本以及这些组件的新版本。暂定的 7.0.0 时间表 规划了 Electron 7 开发生命周期中的关键日期。此外,请参阅我们的版本控制文档,以获取有关 Electron 版本控制的更多详细信息。

有关即将发布的 Electron 版本中计划的重大更改的信息,请参阅我们的计划的重大更改文档