跳转到主要内容

45 篇标记为“Release”的帖子

关于 Electron 新发布的博客文章

查看所有标签

Electron 17.0.0

·阅读时长 4 分钟

Electron 17.0.0 已发布!它包含了 Chromium 98、V8 9.8 和 Node.js 16.13.0 的升级。请阅读下文以了解更多详情!


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

重要变更

Electron 发布节奏变更

从 Electron 15 开始,Electron 将每 8 周发布一个新的主要稳定版本。您可以在此处阅读完整详情

此外,Electron 已将支持版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月。有关 Electron 版本控制的更多详细信息,请参阅我们的 版本控制文档。2022 年 5 月之后,我们将恢复支持最新的三个版本。

技术栈变更

亮点功能

  • 添加了 webContents.getMediaSourceId(),可与 getUserMedia 一起使用,为 WebContents 获取流。 #31204
  • 弃用 webContents.getPrinters() 并引入 webContents.getPrintersAsync()#31023
  • desktopCapturer.getSources 现在仅在主进程中可用。 #30720

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

破坏性变更

以下是 Electron 17 中引入的重大更改。有关这些更改以及未来更改的更多信息,请参阅 计划中的重大更改 页面。

渲染器中的 desktopCapturer.getSources

desktopCapturer.getSources API 现在仅在主进程中可用。此更改是为了提高 Electron 应用程序的默认安全性。

API 更改

Electron 17 中没有 API 更改。

移除/弃用的变更

  • 渲染器中 desktopCapturer.getSources API 的使用已被移除。有关如何在您的应用程序中替换此 API 的详细信息,请参阅 此处

13.x.y 版本支持结束

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

自 Electron 15 起,我们将支持版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月(与 Electron 19 一起)。Electron 19 之后,我们将恢复支持最新的三个版本。此版本支持更改是我们新的发布节奏更改的一部分。有关我们 博客文章的完整详细信息,请在此处

E15 (21年9月)E16 (21年11月)E17 (22年2月)E18 (22年3月)E19 (22年5月)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

下一步计划

短期内,您可以期望团队继续专注于跟上 Electron 主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们不承诺发布日期,但我们的计划是大约每 2 个月发布一次 Electron 的新主要版本,并附带这些组件的新版本。

您可以在此处找到 Electron 的公开时间线

有关未来变更的更多信息,请参阅计划中的破坏性变更页面。

Electron 16.0.0

·阅读时长 4 分钟

Electron 16.0.0 已发布!它包含了 Chromium 96、V8 9.6 和 Node.js 16.9.1 的升级。请继续阅读以了解更多详情!


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

重要变更

Electron 发布节奏变更

从 Electron 15 开始,Electron 将每 8 周发布一个新的主要稳定版本。您可以在此处阅读完整详情

此外,Electron 已将支持版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月。有关 Electron 版本控制的更多详细信息,请参阅我们的 版本控制文档。2022 年 5 月之后,我们将恢复支持最新的三个版本。

技术栈变更

亮点功能

  • 现在支持 WebHID API。#30213
  • app.requestSingleInstanceLock 添加 data 参数,以便在实例之间共享数据。#30891
  • 将 securityOrigin 传递给媒体权限请求处理程序。#31357
  • 添加 commandLine.removeSwitch#30933

请参阅 16.0.0 版本说明,了解新功能和更改的完整列表。

破坏性变更

以下是 Electron 16 中引入的重大更改。有关这些更改以及未来更改的更多信息,请参阅 计划中的重大更改 页面。

构建原生模块

如果您的项目使用 node-gyp 来构建原生模块,您可能需要使用 --force-process-config 调用它,具体取决于您的项目设置和 Electron 版本。有关此更改的更多信息,请参阅 #2497

行为更改:Linux 上的 crashReporter 实现已切换到 Crashpad

Linux 上 crashReporter API 的底层实现已从 Breakpad 更改为 Crashpad,使其与 Windows 和 Mac 保持一致。因此,子进程现在会自动被监控,并且不再需要(也不建议)在 Node 子进程中调用 process.crashReporter.start(因为它将启动 Crashpad 报告程序的第二个实例)。

Linux 上注解报告方式也发生了一些细微的变化,包括长值将不再被分割成以 __1__2 等结尾的注解,而是会被截断到(新的、更长的)注解值限制。

API 更改

Electron 16 中没有 API 更改。

移除/弃用的变更

  • 渲染器中 desktopCapturer.getSources API 的使用已被弃用,并将被移除。此更改提高了 Electron 应用程序的默认安全性。有关如何在您的应用程序中替换此 API 的详细信息,请参阅 此处

停止支持 12.x.y

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

自 Electron 15 起,我们将支持版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月(与 Electron 19 一起)。Electron 19 之后,我们将恢复支持最新的三个版本。此版本支持更改是我们新的发布节奏更改的一部分。有关我们 博客文章的完整详细信息,请在此处

E15 (21年9月)E16 (21年11月)E17 (22年2月)E18 (22年3月)E19 (22年5月)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

下一步计划

短期内,您可以期望团队继续专注于跟上 Electron 主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们不承诺发布日期,但我们的计划是大约每 2 个月发布一次 Electron 的新主要版本,并附带这些组件的新版本。

您可以在此处找到 Electron 的公开时间线

有关未来变更的更多信息,请参阅计划中的破坏性变更页面。

Electron 15.0.0

·阅读时长 5 分钟

Electron 15.0.0 已发布!它包含了 Chromium 94、V8 9.4 和 Node.js 16.5.0 的升级。我们还添加了对 window.open 的 API 更新、错误修复和一般性改进。请继续阅读以了解更多详情!


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

重要变更

Electron 发布节奏变更

从 Electron 15 开始,Electron 将每 8 周发布一个新的主要稳定版本。您可以在 此处 阅读完整的详细信息。

此外,Electron 将支持版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月。有关 Electron 版本控制的更多详细信息,请参阅我们的 版本控制文档

技术栈变更

重点特性

  • nativeWindowOpen: true 不再是实验性的,现在是默认值。
  • 添加了 safeStorage 字符串加密 API。 #30430
  • WebContents 添加了 'frame-created' 事件,该事件在页面中创建 frame 时触发。 #30801
  • BrowserWindowwill-resize 事件添加了 resize edge 信息。 #29199

有关新功能和更改的完整列表,请参阅 15.0.0 版本说明

破坏性变更

以下是 Electron 15 中引入的重大更改。有关这些更改以及未来更改的更多信息,请参阅 计划中的重大更改 页面。

默认更改:nativeWindowOpen 默认为 true

在 Electron 15 之前,window.open 默认会通过 shim 使用 BrowserWindowProxy。这意味着 window.open('about:blank') 无法用于打开同步脚本子窗口,以及其他不兼容的情况。nativeWindowOpen: true 不再是实验性的,现在是默认设置。

有关更多详细信息,请参阅 Electron 中 window.open 的文档。

API 更改

  • WebContents 添加了 'frame-created' 事件,该事件在页面中创建 frame 时触发。 #30801
  • 添加了 safeStorage 字符串加密 API。 #30430
  • dialog.showMessageBox 添加了 signal 选项。 #26102
  • 添加了 Electron Fuse,用于强制执行对您应用程序加载的 app.asar 文件的代码签名。需要最新的 asar 模块(v3.1.0 或更高版本)。#30900
  • 添加了禁用已打包应用程序中 NODE_OPTIONS--inspect 调试参数的 fuses。 #30420
  • 添加了新的 MenuItem.userAccelerator 属性,用于读取用户分配的 macOS 加速器覆盖。 #26682
  • 添加了新的 app.runningUnderARM64Translation 属性,用于检测在 Apple Silicon 上的 Rosetta 或 ARM 上的 Windows 上的 WOW 下运行的情况。#29168
  • 添加了新的 imageAnimationPolicy Web首选项,用于控制图像的动画方式。 #29095
  • 添加了对通过 context bridge 发送 Blobs 的支持。 #29247

移除/弃用的变更

没有 API 被移除或弃用。

支持的版本

从 Electron 15 开始,我们将支持版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月(与 Electron 19 一起)。Electron 19 之后,我们将恢复支持最新的三个版本。此版本支持更改是我们新的发布节奏更改的一部分。有关我们 博客文章的完整详细信息,请在此处

鼓励开发者和应用程序升级到更新版本的 Electron。

E15 (21年9月)E16 (21年11月)E17 (22年2月)E18 (22年3月)E19 (22年5月)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

下一步计划

短期内,您可以期望团队继续专注于跟上 Electron 主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们不承诺发布日期,但我们的计划是大约每季度发布一次 Electron 的新主要版本,并附带这些组件的新版本。

您可以在此处找到 Electron 的公开时间线

有关未来变更的更多信息,请参阅计划中的破坏性变更页面。

Electron 14.0.0

·7分钟阅读

Electron 14.0.0 已发布!它包含了 Chromium 93 和 V8 9.3 的升级。我们添加了几项 API 更新、bug 修复和通用改进。请继续阅读以获取更多详情!


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

重要变更

Electron 发布节奏变更

从 2021 年 9 月(Electron 15)开始,Electron 将每 8 周发布一个主要稳定版本。您可以 在此处阅读完整详细信息。Electron 15 将于 2021 年 9 月 1 日开始 Beta 测试,稳定发布日期为 2021 年 9 月 21 日。您可以在 此处找到 Electron 的公开时间表。此外,Electron 将支持版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月。有关 Electron 版本控制的更多详细信息,请参阅 我们的版本控制文档

技术栈变更

重点特性

  • 默认更改:nativeWindowOpen 现在默认为 true(查看文档)
  • 子窗口不再继承其父窗口的 BrowserWindow 构造选项。 #28550
  • 添加了新的 session.storagePath API,用于获取会话特定数据在磁盘上的路径。 #28665
  • 添加了 process.contextId,用于 @electron/remote#28007
  • Electron Fuse 后面添加了实验性的 cookie 加密支持。#29492

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

破坏性变更

以下是 Electron 14 中引入的重大更改。有关这些更改以及未来更改的更多信息,请参阅 计划中的重大更改 页面。

已移除:app.allowRendererProcessReuse

app.allowRendererProcessReuse 属性已被移除,这是我们为了更紧密地与 Chromium 的进程模型保持一致,以提高安全性、性能和可维护性而采取的计划的一部分。

有关更多详细信息,请参阅 #18397

已移除:BrowserWindow 亲和性

在创建新的 BrowserWindow 时使用的 affinity 选项已被移除,这是我们为了更紧密地与 Chromium 的进程模型保持一致,以提高安全性、性能和可维护性而采取的计划的一部分。

有关更多详细信息,请参阅 #18397

API 已更改:window.open()

可选参数 frameName 不再设置窗口的标题。此行为现在遵循 原生文档 中关于 windowName 参数的规范。

如果您曾使用此参数设置窗口标题,现在可以使用 win.setTitle(title) 方法。

已移除:worldSafeExecuteJavaScript

worldSafeExecuteJavaScript 已移除,没有替代方案。请确保您的代码在启用此属性的情况下可以正常工作。自 Electron 12 起,此属性已默认启用。

如果您使用 webFrame.executeJavaScriptwebFrame.executeJavaScriptInIsolatedWorld,您将受到此更改的影响。您需要确保这些方法返回的值受 Context Bridge API 支持,因为这些方法使用相同的传值语义。

默认更改:nativeWindowOpen 默认为 true

在 Electron 14 之前,window.open 默认会通过 shim 使用 BrowserWindowProxy。这意味着 window.open('about:blank') 无法用于打开同步脚本子窗口,以及其他不兼容的情况。nativeWindowOpen 不再是实验性的,现在是默认设置。

有关更多详细信息,请参阅 Electron 中 window.open 的文档。

移除:BrowserWindowConstructorOptions 继承自父窗口

在 Electron 14 之前,使用 window.open 打开的窗口会从其父窗口继承 BrowserWindow 构造函数选项,如 transparentresizable。从 Electron 14 开始,此行为已被移除,窗口将不会从其父窗口继承任何 BrowserWindow 构造函数选项。

取而代之的是,使用 setWindowOpenHandler 为新窗口显式设置选项。

webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
// ...
},
};
});

已移除:additionalFeatures

WebContentsnew-windowdid-create-window 事件中已弃用的 additionalFeatures 属性已被移除。由于 new-window 使用位置参数,该参数仍然存在,但将始终是空数组 []。(注意:new-window 事件本身已弃用,并已被 setWindowOpenHandler 替换。)窗口特征中的裸键现在将作为具有 true 值的键出现在选项对象中。

// Removed in Electron 14
// Triggered by window.open('...', '', 'my-key')
webContents.on('did-create-window', (window, details) => {
if (details.additionalFeatures.includes('my-key')) {
// ...
}
});

// Replace with
webContents.on('did-create-window', (window, details) => {
if (details.options['my-key']) {
// ...
}
});

已移除:remote 模块

在 Electron 12 中已弃用的 remote 模块现在已从 Electron 本身移除,并提取到一个单独的包 @electron/remote 中。@electron/remote 模块可在主进程和渲染进程之间桥接 JavaScript 对象。这允许您像访问渲染进程中的对象一样访问仅限主进程的对象。这是 remote 模块的直接替代品。有关迁移说明和参考,请参阅 模块的自述文件

API 更改

  • 添加了 BrowserWindow.isFocusable() 方法,用于确定窗口是否可聚焦。 #28642
  • 添加了 WebFrameMain.visibilityState 实例属性。 #28706
  • 已将 dispositionreferrerpostBody 添加到通过 setWindowOpenHandler 注册的窗口打开处理程序传入的详细信息对象中。#28518
  • 添加了 process.contextId,用于 @electron/remote#28007
  • Electron Fuse 后面添加了实验性的 cookie 加密支持。#29492
  • webRequest 监听器详细信息添加了缺失的 resourceType 转换:fontpingcspReportmediawebSocket#30050
  • 添加了新的 session.storagePath API,用于获取会话特定数据在磁盘上的路径。 #28665
  • 在 macOS 上添加了对 Windows Control Overlay 的支持。 #29986
  • 添加了将 Chromium 日志记录定向到文件的支持,使用 --log-file=.../path/to/file.log。此外,现在可以通过在第一个 JS tick 中添加命令行开关来从 JavaScript 启用日志记录。#29963
  • 在 node crypto 中添加了对 des-ede3 密码的支持。 #27897
  • 添加了一个 ContextBridgeMutability 功能,允许上下文桥对象进行变异。 #27348

移除/弃用的变更

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

  • remote 模块在 Electron 12 中被弃用后已被移除。 #25734
  • 子窗口不再继承其父窗口的 BrowserWindow 构造选项。 #28550
  • new-windowdid-create-window WebContents 事件中移除了已弃用的 additionalFeatures 属性。 #28548
  • 移除了已弃用的 app.allowRendererProcessReuse 和 BrowserWindow affinity 选项。 #26874
  • uploadToServer 为 false 时,crashReporter.startsubmitURL 选项不再是必需参数。#28105

11.x.y 版本支持结束

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

下一步计划

短期内,您可以期望团队继续专注于跟上 Electron 主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们不承诺发布日期,但我们的计划是大约每季度发布一次 Electron 的新主要版本,并附带这些组件的新版本。

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

新的 Electron 发布节奏

·6 分钟阅读

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


2019 年,Electron 切换到 12 周的发布周期,以匹配 Chromium 的 6 周发布周期。最近,Chrome 和 Microsoft 都宣布了改变,促使我们重新考虑 Electron 当前的发布节奏。

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

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

从2021年9月开始,Electron将每8周发布一个新的主要稳定版本,以匹配Chromium的8周长期支持(Extended Stable)版本。

我们第一个使用Chromium长期支持版本(Extended Stable)的发布将是2021年9月21日的Electron 15

我们知道发布周期调整将影响其他下游应用程序,因此我们希望尽快告知我们的开发者社区。请继续阅读以了解有关我们2021年发布计划的更多详细信息。

Electron 15:临时 Alpha 版本

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

有了这两项要求,我们的团队面临一个时间上的困境。将 Electron 15 移至包含 Chromium M94 将允许应用程序开发者使用 Chromium 的第一个 Extended Stable 版本;然而,它也会将 Beta 到 Stable 的周期缩短到仅 3 周。

为了帮助过渡,Electron 将提供一个临时的 alpha 版本,仅用于 Electron 15 发布。这个 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商店的提交要求。

为了进一步帮助应用程序开发者,在 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 (21年9月)E16 (21年11月)E17 (22年2月)E18 (22年3月)E19 (22年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--

有疑问?

📨 如果您有任何疑问或疑虑,请发送邮件至 info@electronjs.org加入我们的 Discord。我们知道这将影响许多应用程序和开发者,您的反馈对我们非常重要。我们期待您的声音!

Electron 13.0.0

·阅读时长 4 分钟

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() 替代。
  • 添加了供 @electron/remote 使用的 process.contextId#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
  • 增加了对注册 Manifest V3 扩展 Service Worker 的支持。
  • 为 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 的新主要版本,并附带这些组件的新版本。 Electron 14.0.0 的暂定时间表 概述了 Electron 14.0 开发生命周期中的关键日期。此外,有关 Electron 版本控制的更多详细信息,请参阅 我们的版本控制文档

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

Electron 12.0.0

·7分钟阅读

Electron 12.0.0 已发布!它包括升级到 Chromium 89、V8 8.9 和 Node.js 14.16。我们对 remote 模块进行了更改,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 silicon 上通过 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
    • 添加了 Serial 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 的新主要版本,并附带这些组件的新版本。 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 的新主要版本,并附带这些组件的新版本。 Electron 12.0.0 的暂定时间表 概述了 Electron 12.0 开发生命周期中的关键日期。此外,有关 Electron 版本控制的更多详细信息,请参阅 我们的版本控制文档

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

继续进行 remote 模块的弃用工作

我们在 Electron 9 中开始致力于移除 remote 模块。我们计划在 Electron 14 中移除 remote 模块本身。

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

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

从 Electron 6 开始,我们一直在为要求在渲染进程中加载的 原生 Node 模块 必须是 N-APIContext Aware 打下基础。强制执行此更改可以提高安全性,加快性能,并减少维护工作量。此计划的最后一步是在 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 中)
    • 这将阻止在渲染器进程中加载非上下文感知的原生模块。
    • 您可以阅读并关注此问题,其中详细说明了我们这样做的原因,并包含了弃用的建议时间表。
  • 修复了 macOS 上当操作系统区域设置为 RTL 语言(如阿拉伯语或希伯来语)时窗口按钮的定位。无边框窗口应用程序在 styling 其窗口时可能需要考虑此更改。#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 的新主要版本,并附带这些组件的新版本。 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-APIContext Aware 打下基础。强制执行此更改可以提高安全性,加快性能,并减少维护工作量。此计划的最后一步是在 Electron 12 中移除禁用渲染进程重用的能力。请阅读 此问题 以获取包括建议时间表在内的完整详细信息。

Electron 9.0.0

·阅读时长 5 分钟

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-APIContext Aware 的持续工作。完整信息和建议时间表在 此问题 中详细介绍。
  • 通过 IPC 发送非 JavaScript 对象现在会抛出异常。 #21560
    • 此行为在 Electron 8.0 中已被弃用。 在 Electron 9.0 中,旧的序列化算法已被移除,发送这类不可序列化的对象现在将抛出“object could not be cloned”错误。

有关这些及未来更改的更多信息,请参阅计划中的重大更改页面。

API 更改

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

已弃用的 API

以下 API 现已弃用或被移除

  • shell.openItem API 现已弃用,并由异步的 `shell.openPath API` 替代。
  • 在 Electron 8.0 中被弃用的 `<webview>.getWebContents` 现已被移除。
  • 在 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、如何轻松启用它及其安全优势的更多信息,请参阅我们专门的 Context Isolation 文档