跳转到主要内容

47 条带有“Release”标签的帖子

关于 Electron 新发布的博客文章

查看所有标签

Electron 19.0.0

·3 分钟阅读

Electron 19.0.0 现已发布! 它包含了对 Chromium 102、V8 10.2 和 Node.js 16.14.2 的升级。 请继续阅读以获取更多细节!


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

重要变更

Electron 发布节奏变更

项目正在恢复其早期支持最新三个主要版本的策略。请参阅我们的版本控制文档,了解有关 Electron 版本控制和支持的更详细信息。 这曾暂时是四个主要版本,以帮助用户适应从 Electron 15 开始的新发布节奏。 您可以在此处阅读完整详细信息

技术栈变更

破坏性与 API 变更

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

在 Linux 上不再支持:.skipTaskbar

BrowserWindow 构造函数选项 skipTaskbar 在 Linux 上已不再支持。 变更于 #33226

移除了 WebPreferences.preloadURL

半文档化的 preloadURL 属性已从 WebPreferences 中移除。#33228。 应改用 WebPreferences.preload

停止对 15.x.y 和 16.x.y 的支持

Electron 14.x.y 和 15.x.y 都已达到支持结束。这使 Electron 恢复其现有策略,即支持最新的三个主要版本。 鼓励开发人员和应用程序升级到更新的 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)的开发。 尽管我们谨慎地不承诺发布日期,但我们的计划是大约每 2 个月发布包含这些组件新版本的新 Electron 主要版本。

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

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

Electron 18.0.0

·阅读时长 4 分钟

Electron 18.0.0 已发布!它包含了对 Chromium 100、V8 10.0 和 Node.js 16.13.2 的升级。请阅读下文了解更多详情!


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

重要变更

Electron 发布节奏变更

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

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

技术栈变更

亮点功能

  • 添加了 ses.setCodeCachePath() API 用于设置代码缓存目录。#33286
  • 移除了 window.open 基于旧 BrowserWindowProxy 的实现。这也移除了 webPreferences 中的 nativeWindowOpen 选项。 #29405
  • WebContents 添加了 'focus' 和 'blur' 事件。#25873
  • 在 macOS 上增加了替换菜单角色:showSubstitutionstoggleSmartQuotestoggleSmartDashestoggleTextReplacement#32024
  • app.requestSingleInstanceLock() 流程中增加了 first-instance-ack 事件,允许用户将数据从第一个实例无缝传输到第二个实例。 #31460
  • setBackgroundColor 中增加了对更多颜色格式的支持。#33364

有关新功能和更改的完整列表,请参阅 18.0.0 发行说明

破坏性与 API 变更

以下是 Electron 18 中引入的重大更改。有关这些更改和未来更改的更多信息,请访问 计划中的重大更改 页面。

已移除:nativeWindowOpen

在 Electron 15 之前,window.open 默认使用 BrowserWindowProxy 进行模拟。这意味着 window.open('about:blank') 无法打开可同步脚本编写的子窗口,以及其他不兼容之处。自 Electron 15 起,nativeWindowOpen 已默认启用。

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

终止对 14.x.y 的支持

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

自 Electron 15 起,在 Electron 19 之前,我们已将支持版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月。在 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 17.0.0

·阅读时长 4 分钟

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


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

重要变更

Electron 发布节奏变更

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

此外,在 2022 年 5 月之前,Electron 的支持版本已从最新的三个版本更改为最新的四个版本。请参阅我们的版本控制文档,了解有关 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 起,在 Electron 19 之前,我们已将支持版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月。在 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 周发布一个新的主要稳定版本。您可以在此处阅读完整详情

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

技术栈变更

亮点功能

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

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

破坏性变更

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

构建原生模块

如果您的项目使用 node-gyp 来构建原生模块,您可能需要根据您的项目设置和 Electron 版本,使用 --force-process-config 来调用它。有关此更改的更多信息,请参阅 #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 起,在 Electron 19 之前,我们已将支持版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月。在 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 通过 npm install electron@latest 进行安装,或者从我们的 发布网站 下载。请继续阅读以了解此版本的详细信息,并分享您的任何反馈!

重要变更

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 默认被包装以使用 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 使用 npm install electron@latest 进行安装,或从我们的发布网站下载。 请继续阅读此版本的详细信息,并分享您的任何反馈!

重要变更

Electron 发布节奏变更

从2021年9月的 Electron 15 开始,Electron 将每 8 周发布一个新的主要稳定版本。 您可以在此处阅读完整详情。 Electron 15 将于2021年9月1日开始测试版,稳定版将于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,您将受到此更改的影响。 您需要确保这些方法返回的值受上下文桥接 API 支持,因为这些方法使用相同的值传递语义。

默认更改:nativeWindowOpen 默认为 true

在 Electron 14 之前,window.open 默认被垫片以使用 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

WebContents 的 new-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 注册的窗口打开处理程序的 details 对象中。#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 计时周期内附加命令行开关来从 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 将为 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商店的提交要求。

为了进一步帮助应用开发者,在 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。 暂定的 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 通过 npm install electron@latest 进行安装,或从我们的 发布网站 下载。请继续阅读以了解此版本的详细信息,并请分享您的任何反馈!

重要变更

技术栈变更

重点特性

  • 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,其中包含这些组件的新版本。 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 安装:npm install electron@latest,或者从我们的发布网站下载。此版本包含大量升级、修复以及对 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 模块本身。

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

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

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

阅读并关注 此问题 以获取完整详细信息,包括拟议的时间表。