跳至主要内容

带有“Release”标签的 41 篇文章

关于新 Electron 版本的博文

查看所有标签

新的 Electron 发布节奏

·阅读时长 6 分钟

从 2021 年 9 月开始,Electron 将每 8 周发布一个新的主要稳定版本。


2019 年,Electron 改为 12 周的发布周期,以匹配 Chromium 的 6 周发布周期。最近,Chrome 和 Microsoft 都宣布了一些变化,让我们重新考虑了 Electron 当前的发布节奏

  1. Chromium 计划 从 2021 年 9 月 21 日开始的 Chrome 94 版本开始,每 **4 周** 发布一个新的里程碑版本。 此发布节奏还增加了每 8 周一个新的扩展稳定版本选项,其中将包含所有更新的安全修复程序。

  2. Microsoft Store 将 要求基于 Chromium 的应用程序不早于 2 个主要版本。 例如,如果 Chromium 的最新发布的主要版本为 85,则任何基于 Chromium 的浏览器必须至少为 Chromium 版本 83 或更高版本。**此规则包括 Electron 应用程序。**

**从 2021 年 9 月开始,Electron 将每 8 周发布一个新的主要稳定版本**,以匹配 Chromium 的 8 周扩展稳定版本发布。

我们第一个使用 Chromium 扩展稳定版本的版本将是 **2021 年 9 月 21 日** 发布的 **Electron 15**。

知道发布节奏的更改会影响其他下游应用程序,我们希望尽快让我们的开发人员社区知道。继续阅读以了解有关我们 2021 年发布计划的更多详细信息。

Electron 15:临时 Alpha

鉴于我们最初的 Electron 15 版本针对的是非扩展稳定版本(Chromium 的扩展稳定版本基于它们的偶数版本),我们需要更改我们最初的目标发布日期。但是,Electron 应用程序必须使用 Chromium 的最新 2 个主要版本才能被 Microsoft Store 接受,这使得等待两个 Chromium 版本变得不可持续。

有了这两个要求,我们的团队面临着时间上的困境。将 Electron 15 移动到包含 Chromium M94 将允许应用程序开发人员获得 Chromium 的第一个扩展稳定版本;但是,它也将 beta 版到稳定版的周期缩短至仅 3 周。

为了帮助进行此切换,Electron 将仅为 Electron 15 版本提供一个临时的 **alpha 版本**。此 alpha 版本将为开发人员提供更多时间来测试和计划 Electron 15 版本,并提供比我们当前的 nightly 版本更稳定的版本。

alpha 渠道版本将于 **2021 年 7 月 20 日** 发布 **Electron 15**。它将在 **2021 年 9 月 1 日** 转换为 beta 版本,稳定版本的目标发布日期为 **2021 年 9 月 21 日**。后续的 Electron 版本将没有 alpha 版本。

2021 年发布计划

以下是我们当前的 2021 年发布计划

ElectronChromeAlpha 版本Beta 版本稳定版本稳定周期(周)
E13M91-2021-03-052021-05-2512
E14M93-2021-05-262021-08-3114
E15M942021-07-202021-09-012021-09-219(包括 alpha)
E16M96-2021-09-222021-11-168
E17M98-2021-11-172022-02-0111

添加 alpha 渠道将 Electron 15 发布前的开发时间从 3 周延长到 9 周 - 更接近我们新的 8 周周期,同时仍满足 Windows Store 提交的要求。

为了进一步帮助应用程序开发人员,**在 2021 年剩余时间到 2022 年 5 月,我们还将把支持版本策略从最新的 3 个版本扩展到最新的 4 个 Electron 版本。** 这意味着即使您无法立即更改升级计划,旧版本的 Electron 仍将获得安全更新和修复。

解决疑虑

我们在计划此发布周期更改之前很久就发布了这篇文章是有原因的。我们知道更快的发布周期会对 Electron 应用程序产生实际影响 - 其中一些应用程序可能已经发现我们的主要版本发布节奏过于激进。

我们已尝试在下面解决常见疑虑

❓ 为什么还要进行此更改?为什么不保留 12 周的发布节奏?

为了在 Electron 中提供 Chromium 的最新版本,我们的时间表需要跟踪它们。有关 Chromium 发布周期的更多信息,请参见 此处

此外,目前的 12 周发布节奏在 Microsoft Store 的新提交要求下将变得不可持续。即使是在 Electron 最新稳定版本上的应用程序,也将在大约两周的时间内可能因新的安全要求而被拒绝。

每个新的 Chromium 版本都包含新功能、错误修复/安全修复和 V8 改进。我们希望您作为应用程序开发人员能够及时获得这些更改,因此我们的稳定版本发布日期将继续与每个其他 Chromium 稳定版本相匹配。作为应用程序开发人员,您将比以往更快地访问新的 Chromium 和 V8 功能和修复程序。

❓ 现有的 12 周发布周期已经很快了。团队正在采取哪些措施来简化升级过程?

更频繁的发布的一个优势是拥有更小的发布版本。我们理解升级 Electron 的主要版本可能很困难。我们希望较小的发布版本每次发布时引入的 Chromium 和 Node 主要更改以及重大更改更少。

❓ 未来版本的 Electron 是否会有 alpha 版本发布?

目前没有计划支持永久的 alpha 版本发布。此 alpha 版本仅用于 Electron 15,作为帮助开发人员在缩短的发布周期中更轻松地进行升级的一种方式。

❓ Electron 是否会延长支持的版本数量?

我们将把我们的支持版本策略从最新的三个版本扩展到最新的四个 Electron 版本,直到 2022 年 5 月发布 Electron 19。Electron 19 发布后,我们将恢复到支持最新的三个主要版本,以及 beta 版和 nightly 版。

E13 (2021 年 5 月)E14 (2021 年 8 月)E15 (2021 年 9 月)E16 (2021 年 11 月)E17 (2022 年 2 月)E18 (2022 年 3 月)E19 (2022 年 5 月)
13.x.y14.x.y15.x.y16.x.y17.x.y18.x.y19.x.y
12.x.y13.x.y14.x.y15.x.y16.x.y17.x.y18.x.y
11.x.y12.x.y13.x.y14.x.y15.x.y16.x.y17.x.y
----12.x.y13.x.y14.x.y15.x.y--

问题?

📨如果您有任何疑问或疑虑,请发送邮件至[email protected]加入我们的 Discord。我们知道这是一个会影响许多应用程序和开发人员的更改,您的反馈对我们非常重要。我们希望听到您的声音!

Electron 13.0.0

·阅读时间:3 分钟

Electron 13.0.0 现已发布!它包括对 Chromium 91 和 V8 9.1 的升级。我们添加了一些 API 更新、错误修复和常规改进。阅读以下内容以了解更多详细信息!


Electron 团队很高兴地宣布发布 Electron 13.0.0!您可以通过 npm install electron@latest 使用 npm 安装它,也可以从我们的发布网站下载它。继续阅读以了解有关此版本的详细信息,并请分享您可能有的任何反馈!

重要更改

堆栈更改

亮点功能

  • 添加了 process.contextIsolated 属性,用于指示当前渲染器上下文是否启用了 contextIsolation#28252
  • 添加了新的 session.storagePath API 以获取特定于会话的数据在磁盘上的路径。 #28866
  • 已弃用 WebContentsnew-window 事件。它被 webContents.setWindowOpenHandler() 替换。
  • 添加了 process.contextId,由 @electron/remote 使用。 #28251

请参阅13.0.0 发行说明,以获取新功能和更改的完整列表。

重大更改

  • window.open() 参数 frameName 不再设置为窗口标题。 #27481
  • session.setPermissionCheckHandler(handler) 更改为允许 handler 的第一个参数 webContentsnull#19903

有关这些以及未来更改的更多信息,可以在计划中的重大更改页面上找到。

API 更改

  • BrowserWindow 添加了 roundedCorners 选项。 #27572
  • 添加了新的 session.storagePath API 以获取特定于会话的数据在磁盘上的路径。28866
  • 添加了跨上下文桥传递 DOM 元素的支持。 #26776
  • process.uptime() 添加到沙盒渲染器中。 #26684
  • 将缺失的字段添加到作为 context-menu 事件的一部分发出的参数中。#26788
  • 添加了对注册清单 V3 扩展服务工作者的支持。
  • 向 ServiceWorkers 添加了“registration-completed”事件。 #27562

已移除/弃用的更改

以下 API 已被移除或现已弃用

  • 已弃用 WebContentsnew-window 事件。它被 webContents.setWindowOpenHandler() 替换。

  • 已移除已弃用的 shell.moveItemToTrash()#26723

  • 已移除以下已弃用的 BrowserWindow 扩展 API

    • BrowserWindow.addExtension(path)
    • BrowserWindow.addDevToolsExtension(path)
    • BrowserWindow.removeExtension(name)
    • BrowserWindow.removeDevToolsExtension(name)
    • BrowserWindow.getExtensions()
    • BrowserWindow.getDevToolsExtensions()

    改用 session API

    • ses.loadExtension(path)
    • ses.removeExtension(extension_id)
    • ses.getAllExtensions()
  • 以下 systemPreferences 方法已弃用

    • systemPreferences.isDarkMode()
    • systemPreferences.isInvertedColorScheme()
    • systemPreferences.isHighContrastColorScheme()

    改用以下 nativeTheme 属性

    • nativeTheme.shouldUseDarkColors
    • nativeTheme.shouldUseInvertedColorScheme
    • nativeTheme.shouldUseHighContrastColors

10.x.y 版本支持结束

根据项目的支持策略,Electron 10.x.y 已达到支持结束日期。鼓励开发人员和应用程序升级到更新版本的 Electron。

后续计划

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

有关 Electron 未来版本中计划的重大更改的信息,请参阅我们的计划重大更改文档

Electron 12.0.0

·阅读时间:5 分钟

Electron 12.0.0 现已发布!它包括对 Chromium 89、V8 8.9 和 Node.js 14.16 的升级。我们对远程模块进行了更改,为 contextIsolation 设置了新的默认值,添加了一个新的 webFrameMain API,并进行了常规改进。阅读以下内容以了解更多详细信息!


Electron 团队很高兴地宣布发布 Electron 12.0.0!您可以通过 npm install electron@latest 使用 npm 安装它,也可以从我们的发布网站下载它。继续阅读以了解有关此版本的详细信息,并请分享您可能有的任何反馈!

重要更改

堆栈更改

亮点功能

  • ContextBridge 的 exposeInMainWorld 方法现在可以公开非对象 API。 #26834
  • 从 Node 12 升级到 Node 14。 #23249
  • 添加了一个新的 webFrameMain API,用于从主进程访问 WebContents 实例的子框架。 #25464
  • contextIsolationworldSafeExecuteJavaScript 的默认值现在为 true#27949 #27502

请参阅12.0.0 发行说明,以获取新功能和更改的完整列表。

重大更改

有关这些以及未来更改的更多信息,可以在计划中的重大更改页面上找到。

API 更改

  • 添加了 webFrameMain API:webFrameMain 模块可用于查找跨现有WebContents实例的框架。这是现有 webFrame API 的主进程等效项。有关此新 API 的更多信息,请参见此处,以及我们的文档
  • app API 更改
    • 'child-process-gone' / app.getAppMetrics() 添加了非本地化的 serviceName#25975
    • 添加了新的 app.runningUnderRosettaTranslation 属性,用于检测在 Apple 硅芯片上运行 Rosetta 时的状态。#26444
    • render-process-gone 详细信息(app 和 webContents)添加了 exitCode#27677
  • BrowserWindow API 更改
    • 添加了 BrowserWindow.isTabletMode() API。#25209
    • BrowserWindow 添加了 resized(Windows/macOS)和 moved(Windows)事件。#26216
    • 添加了新的 system-context-menu 事件,以允许阻止和覆盖系统上下文菜单。#25795
    • 添加了 win.setTopBrowserView(),以便可以提升 BrowserView#27713
    • 添加了 webPreferences.preferredSizeMode,以允许根据文档的最小尺寸调整视图大小。#25874
  • contextBridge API 更改
    • 允许 ContextBridge 的 exposeInMainWorld 方法公开非对象 API。#26834
  • display API 更改
    • Display 对象添加了 displayFrequency 属性,以允许获取 Windows 上刷新率的信息。#26472
  • extensions API 更改
    • 添加了对一些 chrome.management API 的支持。#25098
  • MenuItem API 更改
    • 添加了对显示 macOS 共享菜单的支持。#25629
  • net API 更改
    • net.request() 添加了一个新的 credentials 选项。#25284
    • 添加了 net.online,用于检测当前是否存在互联网连接。#21004
  • powerMonitor API 更改
    • 添加了 powerMonitor.onBatteryPower#26494
    • 在 macOS 上的 powerMonitor 中添加了快速用户切换事件。#25321
  • session API 更改
    • ses.loadExtension() API 添加了 allowFileAccess 选项。#27702
    • session.setPermissionRequestHandler 添加了 display-capture API。#27696
    • session.setSSLConfig 添加了一个 disabledCipherSuites 选项。#25818
    • session 添加了 extension-loadedextension-unloadedextension-ready 事件。#25385
    • 添加了 session.setSSLConfig() 以允许配置 SSL。#25461
    • 添加了在 session.setProxy() 中显式指定 directauto_detectsystem 模式以的支持。#24937
    • 添加了串行 API支持。#25237
    • 添加了启用/禁用拼写检查器的 API。#26276
  • shell API 更改
    • 添加了一个新的异步 shell.trashItem() API,替换了同步的 shell.moveItemToTrash()#25114
  • webContents API 更改
    • 向控制台添加了一条简短的提示,以帮助调试渲染器崩溃。#25317
    • 向 webRequest 处理程序中的详细信息对象添加了 framewebContents 属性。#27334
    • 添加了 webContents.forcefullyCrashRenderer(),以强制终止渲染器进程,以帮助恢复挂起的渲染器。#25580
    • 为渲染器创建的子窗口添加了 setWindowOpenHandler API,并弃用了 new-window 事件。#24517
  • webFrame API 更改
    • 向渲染器添加了拼写检查 API。#25060

已移除/弃用的更改

以下 API 已被移除或现已弃用

  • 已弃用 remote 模块。它被@electron/remote替换。 #25293
  • 删除了已弃用的 crashReporter API。#26709
  • 从打包应用程序的默认“帮助”菜单中删除了指向 Electron 网站的链接。#25831

9.x.y 版本结束支持

根据项目的支持策略,Electron 9.x.y 已达到结束支持状态。鼓励开发者和应用程序升级到更新版本的 Electron。

后续计划

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

有关 Electron 未来版本中计划的重大更改的信息,请参阅我们的计划重大更改文档

Electron 11.0.0

·阅读时间:4 分钟

Electron 11.0.0 已发布!它包含对 Chromium 87、V8 8.7 和 Node.js 12.18.3 的升级。我们增加了对 Apple 硅芯片的支持,并进行了常规改进。请阅读以下内容以获取更多详细信息!


Electron 团队很高兴地宣布 Electron 11.0.0 发布!您可以通过 npm install electron@latest 使用 npm 安装它,或从我们的发行版网站下载。该版本包含升级、修复以及对 Apple M1 硬件的新支持。

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

重要更改

堆栈更改

亮点功能

请参阅11.0.0 发行说明,以获取新功能和更改的完整列表。

重大更改

  • 删除了实验性 API:BrowserView.{fromId, fromWebContents, getAllViews}BrowserViewid 属性。#23578

有关这些以及未来更改的更多信息,可以在计划中的重大更改页面上找到。

API 更改

  • 添加了 app.getApplicationInfoForProtocol() API,该 API 返回有关处理特定协议的应用程序的详细信息。#24112
  • 添加了 app.createThumbnailFromPath() API,该 API 返回给定文件路径和最大缩略图尺寸的文件的预览图像。#24802
  • 添加了 webContents.forcefullyCrashRenderer(),以强制终止渲染器进程,以帮助恢复挂起的渲染器。#25756

8.x.y 版本结束支持

根据项目的支持策略,Electron 8.x.y 已达到结束支持状态。鼓励开发者和应用程序升级到更新版本的 Electron。

后续计划

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

有关 Electron 未来版本中计划的重大更改的信息,请参阅我们的计划重大更改文档

继续开展 remote 模块弃用工作

我们在Electron 9中开始着手移除 remote 模块。我们计划在 Electron 14 中移除 remote 模块本身。

阅读并关注此问题以获取完整的计划和弃用详细信息。

Electron 12 中需要原生 Node 模块上下文感知或 N-API 的最终步骤

从 Electron 6 开始,我们一直在为要求在渲染器进程中加载的原生 Node 模块必须是N-API上下文感知奠定基础。实施此更改可增强安全性、提高性能并减少维护工作量。此计划的最后一步是在 Electron 12 中移除禁用渲染器进程重用的功能。

阅读并遵循此问题以获取完整详细信息,包括建议的时间线。

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 install electron@latest 使用 npm 安装它,或从我们的发行网站下载。此版本包含升级、修复和新功能。

在 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 更改

  • 会话:现在可以通过调用 ses.isPersistent() API 检查给定的 session 是否是持久性的。 #22622
  • 内容:添加了 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 中所做的那样。请阅读并关注此问题以获取完整的计划和弃用的详细信息。

Electron 12 中需要原生 Node 模块上下文感知或 N-API 的最终步骤

编辑:最初,这篇博文指出我们将在 Electron 11 中禁用渲染器进程重用。禁用渲染器进程重用现已推迟到 Electron 12。

从 Electron 6 开始,我们一直在为要求在渲染器进程中加载的原生 Node 模块必须是N-API上下文感知奠定基础。实施此更改可增强安全性、提高性能并减少维护工作量。此计划的最后一步是在 Electron 12 中移除禁用渲染器进程重用的功能。阅读此问题以获取完整详细信息,包括建议的时间线。

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 install electron@latest 使用 npm 安装它,或从我们的发行网站下载。此版本包含升级、修复和新功能。我们迫不及待地想看看您用它们构建了什么!继续阅读以了解有关此版本的详细信息,并请分享您的任何反馈!

重要更改

堆栈更改

亮点功能

  • 对拼写检查功能进行了多项改进。在#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 中已弃用)现已删除。

  • Electron 8.0 中已弃用的 webFrame.setLayoutZoomLevelLimits 现已移除。

6.x.y 版本结束支持

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

后续计划

在短期内,您可以预期团队将继续专注于跟进构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。尽管我们谨慎地不承诺发布日期,但我们的计划是大约每季度发布 Electron 的新主要版本,其中包含这些组件的新版本。 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、如何轻松启用它及其安全优势的更多信息,请参阅我们专门的上下文隔离文档

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(),它会移除已显示的气泡通知。#19547
    • 添加了 tray.focus(),它会将焦点返回到任务栏通知区域。feat: add 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) 检查特定共享工作线程的功能。#20389
    • 添加了对 WebContents.printToPDF()fitToPageEnabledscaleFactor 选项的支持。#20436
  • 更新了 webview.printToPDF 文档,以指示返回类型现在为 Uint8Array。#20505

已弃用的 API

以下 API 现已弃用

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

5.x.y 版本结束支持

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

应用程序反馈计划

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

后续计划

短期内,您可以预期团队将继续专注于跟进构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。尽管我们谨慎地避免对发布日期做出承诺,但我们的计划是大约每季度发布一次包含这些组件新版本的新 Electron 主要版本。 Electron 9 的初步时间表 概述了 Electron 9 开发生命周期中的关键日期。此外,请参阅我们的版本控制文档,以获取有关 Electron 版本控制的更多详细信息。

有关 Electron 未来版本中计划的重大更改的信息,请参阅我们的计划重大更改文档

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

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

Electron 7.0.0

·阅读时间:3 分钟

Electron 7.0.0 已发布!它包含对 Chromium 78、V8 7.8 和 Node.js 12.8.1 的升级。我们添加了 Arm 64 架构的 Windows 版本、更快的 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 测试版;作为回报,他们发现的新错误将被优先考虑在稳定版中修复。如果您想参与或了解更多信息,请 查看我们关于该计划的博文

后续计划

短期内,您可以预期团队将继续专注于跟进构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。尽管我们谨慎地避免对发布日期做出承诺,但我们的计划是大约每季度发布一次包含这些组件新版本的新 Electron 主要版本。 Electron 8 的初步时间表 概述了 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 正确打包您的应用,您需要使用 [email protected] 或更高版本。如果您使用的是 electron-builder,则应按照此问题跟踪对这些新 Helper 的支持。

重大更改

  • 此版本开始为未来一项要求奠定基础,即在渲染器进程中加载的原生 Node 模块必须为N-API上下文感知。进行此更改的原因是提高性能、增强安全性以及减少维护工作量。在此问题中阅读包含提议时间线的完整详细信息。预计此更改将在 Electron v11 中完成。

  • net.IncomingMessage 标头已略有更改,使其更接近Node.js 行为,特别是 set-cookie 的值以及如何处理重复标头。#17517

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

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

3.x.y 版本结束支持

根据我们的支持策略,3.x.y 已达到生命周期结束。鼓励开发人员和应用升级到更新版本的 Electron。

应用程序反馈计划

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

后续计划

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

有关 Electron 未来版本中计划的重大更改的信息,请 参阅我们的计划中的重大更改文档

新的 Electron 发布节奏

·阅读时间:3 分钟
⚡️ 更新 (2021-07-14):我们的速度更快了!

在 2021 年第三季度,Chrome 团队将发布节奏从每 6 周提高到每 4 周。Electron 的发布也随之而来。请阅读更新后的8 周节奏博文以获取最新信息!

🎉 Electron 即将每 12 周发布一个新的主要稳定版本!🎉


⚡️ 哇,好快!但为什么?

简单地说,Chromium 不会停止发布,因此 Electron 也不会放慢速度。

Chromium 按照一致的 6 周计划发布。为了在 Electron 中提供最新版本的 Chromium,我们的计划需要跟踪它们的计划。有关 Chromium 发布周期的更多信息,请参阅此处

🚀 为什么每 12 周?

每 6 周,都会发布一个新的 Chromium 版本,其中包含新功能、错误修复/安全修复和 V8 改进。Electron 的用户一直明确表示希望及时获得这些更改,因此我们已调整了稳定版发布日期,以匹配每隔一个 Chromium 稳定版发布。首先,Electron v6.0.0 将包含 M76,并计划于2019 年 7 月 30 日稳定发布,与Chromium M76的发布日期相同。

🚧 这对我和我的 Electron 应用意味着什么?

您将比以前更早地访问新的 Chromium 和 V8 功能和修复。重要的是,您还将知道这些新更改何时到来,因此您能够比以前更有依据地进行计划。

Electron 团队将继续支持最新的三个主要版本。例如,当v6.0.0 于 2019 年 7 月 30 日稳定发布时,我们将支持 v6.x、v5.x 和 v4.x,而 v3.x 将达到生命周期结束。

💬 应用反馈计划

请考虑加入我们的应用反馈计划,帮助我们测试 Beta 版并进行稳定化。参与此计划的项目会在其应用上测试 Electron Beta 版;作为回报,他们发现的新错误将被优先考虑用于稳定版发布。

📝 Electron 版本发布简史

v3.0.0 之前的稳定版发布决策没有遵循任何计划。我们在 v3.0.0 和 v4.0.0 中为项目添加了内部计划。今年早些时候,我们决定首次公布Electron v5.0.0的稳定版发布日期。总体而言,宣布我们的稳定版发布日期获得了积极的反响,我们很高兴能够继续为未来的版本这样做。

为了更好地简化这些与升级相关的努力,我们在我们的治理系统中创建了升级发布工作组。它们使我们能够更好地优先考虑和委托这项工作,我们希望这将在每个后续版本中变得更加明显。

以下是我们的新节奏与 Chromium 的节奏相比的情况

line graph comparing Electron versus Chromium versions

📨 如有任何疑问,请发送邮件至[email protected]