跳到主要内容

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 使用 npm install electron@latest 安装它,或者从我们的 发布网站 下载它。继续阅读以了解有关此版本的详细信息,并分享您收到的任何反馈!

值得注意的更改

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 (2021 年 9 月)E16 (2021 年 11 月)E17 (2022 年 2 月)E18 (2022 年 3 月)E19 (2022 年 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 使用 npm install electron@latest 安装它,或者从我们的 发布网站 下载它。继续阅读以了解有关此版本的详细信息,并分享您收到的任何反馈!

值得注意的更改

Electron 发布节奏变化

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

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

堆栈更改

突出显示的特性

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

有关新特性和更改的完整列表,请参阅 16.0.0 发行说明

重大更改

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

构建本机模块

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

行为已更改:crashReporter 实现已在 Linux 上切换到 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 (2021 年 9 月)E16 (2021 年 11 月)E17 (2022 年 2 月)E18 (2022 年 3 月)E19 (2022 年 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。我们已将 API 更新添加到 window.open、错误修复和常规改进。阅读下文了解更多详细信息!


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

值得注意的更改

Electron 发布节奏变化

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

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

堆栈更改

突出显示特性

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

有关新特性和更改的完整列表,请参阅 15.0.0 发行说明

重大更改

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

默认值已更改:nativeWindowOpen 默认为 true

在 Electron 15 之前,window.open 默认情况下被填充为使用 BrowserWindowProxy。这意味着 window.open('about:blank') 无法打开同步脚本化的子窗口,以及其他不兼容性。nativeWindowOpen: true 不再是实验性的,现在是默认值。

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

API 更改

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

已删除/已弃用的更改

没有删除或弃用任何 API。

支持的版本

从 Electron 15 开始,我们将支持的版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月的 Electron 19。在 Electron 19 之后,我们将恢复为支持最新的三个版本。此版本支持更改是我们新的节奏变化的一部分。请参阅我们的博客文章,了解更多详细信息

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

E15 (2021 年 9 月)E16 (2021 年 11 月)E17 (2022 年 2 月)E18 (2022 年 3 月)E19 (2022 年 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 更新、错误修复和常规改进。阅读下文了解更多详情!


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

值得注意的更改

Electron 发布节奏变化

从 2021 年 9 月开始,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
  • 添加了实验性 Cookie 加密支持,通过 Electron Fuse 实现。#29492

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

重大更改

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

已删除:app.allowRendererProcessReuse

app.allowRendererProcessReuse 属性已删除,作为我们计划的一部分,以便更紧密地与 Chromium 的进程模型保持一致,从而提高安全性、性能和可维护性。

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

已删除:浏览器窗口关联

构造新的 BrowserWindow 时的 affinity 选项已删除,作为我们计划的一部分,以便更紧密地与 Chromium 的进程模型保持一致,从而提高安全性、性能和可维护性。

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

API 更改:window.open()

可选参数 frameName 不再设置窗口的标题。此行为现在遵循 原生文档windowName 参数的描述。

如果您使用此参数来设置窗口的标题,则可以改用 win.setTitle(title) 方法。

已删除:worldSafeExecuteJavaScript

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

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

默认更改: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 模块

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

API 更改

  • 添加了 BrowserWindow.isFocusable() 方法以确定窗口是否可聚焦。#28642
  • 添加了 WebFrameMain.visibilityState 实例属性。#28706
  • dispositionreferrerpostBody 添加到传递给使用 setWindowOpenHandler 注册的窗口打开处理程序的 details 对象中。#28518
  • 添加了 process.contextId,由 @electron/remote 使用。#28007
  • 添加了实验性 Cookie 加密支持,通过 Electron Fuse 实现。#29492
  • webRequest 侦听器详细信息添加了缺少的 resourceType 转换:fontpingcspReportmediawebSocket#30050
  • 添加了新的 session.storagePath API 以获取会话特定数据在磁盘上的路径。#28665
  • 添加了对 macOS 上 Windows Control Overlay 的支持。#29986
  • 添加了通过 --log-file=.../path/to/file.log 将 Chromium 日志记录定向到文件的支持。 此外,现在可以通过在第一个 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 计划4 周发布一个新的里程碑,从 2021 年 9 月 21 日的 Chrome 94 开始。 此发布节奏还每 8 周添加一个新的扩展稳定选项,其中将包含所有更新的安全修补程序。

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

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

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

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

Electron 15:临时 Alpha

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

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

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

alpha 频道构建将于 2021 年 7 月 20 日发布 Electron 15。 它将于 2021 年 9 月 1 日过渡到 beta 版,稳定版本的目标为 2021 年 9 月 21 日。 后续的 Electron 版本将没有 alpha 版本。

2021 年发布计划

以下是我们当前的 2021 年发布时间表

ElectronChromeAlpha 发布Beta 发布稳定发布稳定周期(周)
E13M91-2021-Mar-052021-May-2512
E14M93-2021-May-262021-Aug-3114
E15M942021-Jul-202021-Sep-012021-Sep-219(包括 alpha)
E16M96-2021-Sep-222021-Nov-168
E17M98-2021-Nov-172022-Feb-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 (May'21)E14 (Aug'21)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--

有问题?

📨 如果您有任何疑问或疑虑,请通过 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 使用 npm install electron@latest 安装它,或者从我们的发布网站下载它。继续阅读以了解有关此版本的详细信息,并请分享您的任何反馈!

值得注意的更改

堆栈更改

突出显示特性

  • 添加了 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
  • 增加了对注册 Manifest 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

·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 更改
    • 将非本地化的 serviceName 添加到 'child-process-gone' / app.getAppMetrics()#25975
    • 添加了新的 app.runningUnderRosettaTranslation 属性,用于检测何时在 Apple 芯片上的 rosetta 下运行。#26444
    • exitCode 添加到 render-process-gone 详细信息(app 和 webContents)。#27677
  • BrowserWindow API 更改
    • 添加了 BrowserWindow.isTabletMode() API。#25209
    • resized(Windows/macOS)和 moved(Windows)事件添加到 BrowserWindow#26216
    • 添加了新的 system-context-menu 事件,以允许阻止和覆盖系统上下文菜单。#25795
    • 添加了 win.setTopBrowserView(),以便可以提升 BrowserView#27713
    • 添加了 webPreferences.preferredSizeMode,以允许根据文档的最小大小调整视图的大小。#25874
  • contextBridge API 更改
    • 允许 ContextBridge exposeInMainWorld 方法公开非对象 API。#26834
  • display API 更改
    • displayFrequency 属性添加到 Display 对象,以允许获取有关 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 更改
    • allowFileAccess 选项添加到 ses.loadExtension() API。#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() API。#25114
  • webContents API 更改
    • 在控制台中添加了一个小的控制台提示,以帮助调试渲染器崩溃。#25317
    • framewebContents 属性添加到 webRequest 处理程序中的详细信息对象。#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 版本中计划的重大变更的信息,请参阅我们的计划的重大变更文档

继续进行远程模块的弃用工作

我们从 Electron 9 开始了移除 remote 模块的工作。 我们计划在 Electron 14 中移除 remote 模块本身。

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

要求原生 Node 模块为 Context Aware 或 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 使用 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 issue 1113227)。 #24998

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

重大更改

  • enableRemoteModule 的默认值更改为 false#22091
    • 这是我们计划弃用 remote 模块并将其移动到用户领域的一部分。 您可以阅读并关注 此问题,其中详细说明了我们这样做的原因,并包含弃用的拟议时间表。
  • app.allowRendererProcessReuse 的默认值更改为 true#22336 (也在 Electron 9 中)
    • 这将防止在渲染器进程中加载非上下文感知的原生模块。
    • 您可以阅读并关注 此问题,其中详细说明了我们这样做的原因,并包含弃用的拟议时间表。
  • 修复了在 macOS 上将 OS 语言环境设置为 RTL 语言(如阿拉伯语或希伯来语)时窗口按钮的定位。 无边框窗口应用程序可能需要在设置其窗口样式时考虑此更改。 #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 中)

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

要求原生 Node 模块为 Context Aware 或 N-API 的最后一步(在 Electron 12 中)

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

从 Electron 6 开始,我们一直在为要求加载到渲染器进程中的 原生 Node 模块 必须是 N-API上下文感知 奠定基础。 强制执行此更改可以实现更强的安全性、更快的性能和减少的维护工作量。 此计划的最后一步是在 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 使用 npm install electron@latest 安装它,或者从我们的 发布网站 下载它。 该版本包含大量升级、修复和新功能。 我们迫不及待地想看看您用它们构建什么! 继续阅读有关此版本的详细信息,并请分享您收到的任何反馈!

值得注意的更改

堆栈更改

突出显示特性

  • 对拼写检查器功能的多项改进。 有关更多详细信息,请参见 #22128#22368
  • 改进了 Linux 上的窗口事件处理程序效率。 #23260
  • 启用 PDF 查看器。 #22131

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

重大更改

  • 使用 remote 时,如果没有 enableRemoteModule: true,则会显示弃用警告。 #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 替换。 提案
  • sessionAPI 更改
    • 添加了 session.listWordsFromSpellCheckerDictionary API 以列出字典中的自定义单词。 #22128
    • 添加了 session.removeWordFromSpellCheckerDictionary API 以删除字典中的自定义单词。 #22368
    • 添加了 session.serviceWorkerContext API 以访问基本服务 worker 信息并接收来自服务 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 的新主要版本。 暂定的 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、如何轻松启用它及其安全优势的更多信息,请参阅我们的专用 上下文隔离文档