跳到主内容

44 篇标记为“发布”的文章

关于新的 Electron 版本发布的博客文章

查看所有标签

Electron 26.0.0

·2 分钟阅读

Electron 26.0.0 已发布!它包括升级到 Chromium 116.0.5845.62、V8 11.2 和 Node.js 18.16.1。请阅读下文了解更多详情!


Electron 团队激动地宣布 Electron 26.0.0 发布!您可以通过 npm 使用 npm install electron@latest 安装,或从我们的 版本发布网站 下载。请继续阅读以了解此版本的详细信息。

如果您有任何反馈,请在 Twitter 上与我们分享,或加入我们的社区 Discord!可以在 Electron 的 问题追踪器 中报告 Bug 和功能请求。

值得注意的变化

技术栈变化

破坏性变更

已弃用:webContents.getPrinters

webContents.getPrinters 方法已弃用。请改用 webContents.getPrintersAsync

const w = new BrowserWindow({ show: false });

// Deprecated
console.log(w.webContents.getPrinters());
// Replace with
w.webContents.getPrintersAsync().then((printers) => {
console.log(printers);
});

已弃用:systemPreferences.{get,set}AppLevelAppearancesystemPreferences.appLevelAppearance

systemPreferences.getAppLevelAppearancesystemPreferences.setAppLevelAppearance 方法,以及 systemPreferences.appLevelAppearance 属性已弃用。请改用 nativeTheme 模块。

// Deprecated
systemPreferences.getAppLevelAppearance();
// Replace with
nativeTheme.shouldUseDarkColors;

// Deprecated
systemPreferences.appLevelAppearance;
// Replace with
nativeTheme.shouldUseDarkColors;

// Deprecated
systemPreferences.setAppLevelAppearance('dark');
// Replace with
nativeTheme.themeSource = 'dark';

已弃用:systemPreferences.getColoralternate-selected-control-text

systemPreferences.getColoralternate-selected-control-text 值已弃用。请改用 selected-content-background

// Deprecated
systemPreferences.getColor('alternate-selected-control-text');
// Replace with
systemPreferences.getColor('selected-content-background');

新功能

  • 添加了 safeStorage.setUsePlainTextEncryptionsafeStorage.getSelectedStorageBackend API。#39107
  • 添加了 safeStorage.setUsePlainTextEncryptionsafeStorage.getSelectedStorageBackend API。#39155
  • 通过 ipcRenderer.sendTo() 发送的消息添加了 senderIsMainFrame#39206
  • 添加了支持将 Menu 标记为通过键盘启动。#38954

23.x.y 版本停止支持

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

E26 (23年8月)E27 (23年10月)E28 (24年1月)
26.x.y27.x.y28.x.y
25.x.y26.x.y27.x.y
24.x.y25.x.y26.x.y
22.x.y

后续计划

短期内,您可以期待团队继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。

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

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

Electron 25.0.0

·5 分钟阅读

Electron 25.0.0 已发布!它包括升级到 Chromium 114、V8 11.4 和 Node.js 18.15.0。请阅读下文了解更多详情!


Electron 团队激动地宣布 Electron 25.0.0 发布!您可以通过 npm 使用 npm install electron@latest 安装,或从我们的 版本发布网站 下载。请继续阅读以了解此版本的详细信息。

如果您有任何反馈,请在 Twitter 上与我们分享,或加入我们的社区 Discord!可以在 Electron 的 问题追踪器 中报告 Bug 和功能请求。

值得注意的变化

亮点

  • 在 Electron 的 net 模块中实现了 net.fetch,使用 Chromium 的网络栈。这与 Node 的 fetch() 不同,Node 的 fetch() 使用 Node.js 的 HTTP 栈。请参阅#36733#36606
  • 添加了 protocol.handle,它取代并弃用了 protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol#36674
  • 扩展了对 Electron 22 的支持,以匹配 Chromium 和微软的 Windows 7/8/8.1 弃用计划。请参阅本博客文章末尾的更多详细信息。

技术栈变化

破坏性变更

已弃用:protocol.{register,intercept}{Buffer,String,Stream,File,Http}Protocol

protocol.register*Protocolprotocol.intercept*Protocol 方法已由protocol.handle 取代。

新方法可以注册新协议或拦截现有协议,并且响应可以是任何类型。

// Deprecated in Electron 25
protocol.registerBufferProtocol('some-protocol', () => {
callback({ mimeType: 'text/html', data: Buffer.from('<h5>Response</h5>') });
});

// Replace with
protocol.handle('some-protocol', () => {
return new Response(
Buffer.from('<h5>Response</h5>'), // Could also be a string or ReadableStream.
{ headers: { 'content-type': 'text/html' } },
);
});
// Deprecated in Electron 25
protocol.registerHttpProtocol('some-protocol', () => {
callback({ url: 'https://electron.js.cn' });
});

// Replace with
protocol.handle('some-protocol', () => {
return net.fetch('https://electron.js.cn');
});
// Deprecated in Electron 25
protocol.registerFileProtocol('some-protocol', () => {
callback({ filePath: '/path/to/my/file' });
});

// Replace with
protocol.handle('some-protocol', () => {
return net.fetch('file:///path/to/my/file');
});

已弃用:BrowserWindow.setTrafficLightPosition(position)

BrowserWindow.setTrafficLightPosition(position) 已弃用,应改用 BrowserWindow.setWindowButtonPosition(position) API,该 API 接受 null 而不是 { x: 0, y: 0 } 来将位置重置为系统默认值。

// Deprecated in Electron 25
win.setTrafficLightPosition({ x: 10, y: 10 });
win.setTrafficLightPosition({ x: 0, y: 0 });

// Replace with
win.setWindowButtonPosition({ x: 10, y: 10 });
win.setWindowButtonPosition(null);

已弃用:BrowserWindow.getTrafficLightPosition()

BrowserWindow.getTrafficLightPosition() 已弃用,应改用 BrowserWindow.getWindowButtonPosition() API,该 API 在没有自定义位置时返回 null 而不是 { x: 0, y: 0 }

// Deprecated in Electron 25
const pos = win.getTrafficLightPosition();
if (pos.x === 0 && pos.y === 0) {
// No custom position.
}

// Replace with
const ret = win.getWindowButtonPosition();
if (ret === null) {
// No custom position.
}

新功能

  • 添加了 net.fetch()#36733
    • net.fetch 支持对 file: URL 和使用 protocol.register*Protocol 注册的自定义协议的请求。#36606
  • 添加了 BrowserWindow.set/getWindowButtonPosition API。#37094
  • 添加了 protocol.handle,取代并弃用了 protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol#36674
  • webContents<webview> 标签添加了 will-frame-navigate 事件,该事件在帧层次结构内的任何帧尝试导航时触发。#34418
  • 为 navigator 事件添加了发起者信息。此信息允许区分由父帧引起的导航(如 window.open)和由子帧引起的导航。#37085
  • 添加了 net.resolveHost,它使用 defaultSession 对象解析主机。#38152
  • app 添加了新的 'did-resign-active' 事件。#38018
  • webContents.print() 添加了几种标准页面尺寸选项。#37159
  • 为会话处理程序 ses.setDisplayMediaRequestHandler() 回调添加了 enableLocalEcho 标志,允许在 audioWebFrameMain 时将远程音频输入回显到本地输出流中。#37315
  • powerMonitor 添加了热管理信息。#38028
  • 允许将绝对路径传递给 session.fromPath() API。#37604
  • webContents 上公开了 audio-state-changed 事件。#37366

22.x.y 版本持续支持

告别 Windows 7/8/8.1 中所述,Electron 22 (Chromium 108) 原计划的生命周期结束日期将从 2023 年 5 月 30 日延长至 2023 年 10 月 10 日。Electron 团队将继续向 Electron 22 回迁该计划中的任何安全修复程序,直到 2023 年 10 月 10 日。10 月的支持日期遵循 Chromium 和微软的扩展支持日期。10 月 11 日,Electron 团队将把支持恢复到最新的三个稳定主版本,这些版本将不再支持 Windows 7/8/8.1。

E25 (23年5月)E26 (23年8月)E27 (23年10月)
25.x.y26.x.y27.x.y
24.x.y25.x.y26.x.y
23.x.y24.x.y25.x.y
22.x.y22.x.y--

后续计划

短期内,您可以期待团队继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。

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

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

Electron 24.0.0

·4 分钟阅读

Electron 24.0.0 已发布!它包括升级到 Chromium 112.0.5615.49、V8 11.2 和 Node.js 18.14.0。请阅读下文了解更多详情!


Electron 团队激动地宣布 Electron 24.0.0 发布!您可以通过 npm 使用 npm install electron@latest 安装,或从我们的 版本发布网站 下载。请继续阅读以了解此版本的详细信息。

如果您有任何反馈,请在 Twitter 上与我们分享,或加入我们的社区 Discord!可以在 Electron 的 问题追踪器 中报告 Bug 和功能请求。

值得注意的变化

技术栈变化

破坏性变更

API 变更:nativeImage.createThumbnailFromPath(path, size)

maxSize 参数已更改为 size,以反映传入的大小将是创建的缩略图的大小。以前,如果图像小于 maxSize,Windows 不会放大图像,而 macOS 始终将大小设置为 maxSize。现在,行为在各个平台上都一致。

// a 128x128 image.
const imagePath = path.join('path', 'to', 'capybara.png');

// Scaling up a smaller image.
const upSize = { width: 256, height: 256 };
nativeImage.createThumbnailFromPath(imagePath, upSize).then((result) => {
console.log(result.getSize()); // { width: 256, height: 256 }
});

// Scaling down a larger image.
const downSize = { width: 64, height: 64 };
nativeImage.createThumbnailFromPath(imagePath, downSize).then((result) => {
console.log(result.getSize()); // { width: 64, height: 64 }
});

新功能

  • 添加了使用 cookies.get() 过滤 HttpOnly cookies 的能力。#37365
  • shell.openExternal() 选项添加了 logUsage,这允许在 Windows 上将 SEE_MASK_FLAG_LOG_USAGE 标志传递给 ShellExecuteExSEE_MASK_FLAG_LOG_USAGE 标志表示用户发起启动,启用跟踪常用程序和其他行为。#37291
  • webRequest 过滤器添加了 types,增加了过滤您监听的请求的能力。#37427
  • webContents 添加了一个新的 devtools-open-url 事件,允许开发者使用它们打开新窗口。#36774
  • webContents.print() 添加了几种标准页面尺寸选项。#37265
  • 为会话处理程序 ses.setDisplayMediaRequestHandler() 回调添加了 enableLocalEcho 标志,允许在 audioWebFrameMain 时将远程音频输入回显到本地输出流中。#37528
  • 允许将应用程序特定的用户名传递给 inAppPurchase.purchaseProduct()#35902
  • 公开了 window.invalidateShadow() 以清除 macOS 上的残留视觉伪影。#32452
  • 在 electron node headers 配置文件中默认启用全程序优化,允许编译器根据程序中所有模块的信息进行优化,而不是按模块(compiland)进行。#36937
  • SystemPreferences::CanPromptTouchID (macOS) 现在支持 Apple Watch。#36935

21.x.y 版本停止支持

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

告别 Windows 7/8/8.1 中所述,Electron 22 (Chromium 108) 原计划的生命周期结束日期将从 2023 年 5 月 30 日延长至 2023 年 10 月 10 日。Electron 团队将继续向 Electron 22 回迁该计划中的任何安全修复程序,直到 2023 年 10 月 10 日。

E24 (23年4月)E25 (23年5月)E26 (23年8月)
24.x.y25.x.y26.x.y
23.x.y24.x.y25.x.y
22.x.y23.x.y24.x.y
--22.x.y22.x.y

后续计划

短期内,您可以期待团队继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。

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

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

Electron 23.0.0

·3 分钟阅读

Electron 23.0.0 已发布!它包括升级到 Chromium 110、V8 11.0 和 Node.js 18.12.1。此外,已停止支持 Windows 7/8/8.1。请阅读下文了解更多详情!


Electron 团队激动地宣布 Electron 23.0.0 发布!您可以通过 npm 使用 npm install electron@latest 安装,或从我们的 版本发布网站 下载。请继续阅读以了解此版本的详细信息。

如果您有任何反馈,请在 Twitter 上与我们分享,或加入我们的社区 Discord!可以在 Electron 的 问题追踪器 中报告 Bug 和功能请求。

值得注意的变化

技术栈变化

新功能

  • Display 对象添加了 label 属性。#36933
  • 添加了 app.getPreferredSystemLanguages() API,用于返回用户的系统语言。#36035
  • 添加了对 WebUSB API 的支持。#36289
  • 添加了对 SerialPort.forget() 的支持,以及在给定来源被撤销时在 Session 对象上发出的新事件 serial-port-revoked#35310
  • 添加了新的 win.setHiddenInMissionControl API,允许开发者在 macOS 上选择退出 Mission Control。#36092

停止支持 Windows 7/8/8.1

Electron 23 不再支持 Windows 7/8/8.1。Electron 遵循计划中的 Chromium 弃用政策,该政策将在 Chromium 109 中弃用 Windows 7/8/8.1 以及 Windows Server 2012 和 2012 R2 的支持(在此处阅读更多)

破坏性 API 变更

以下是 Electron 23 中引入的破坏性变更。您可以在计划中的破坏性变更页面上阅读有关这些变更和未来变更的更多信息。

已移除:BrowserWindow scroll-touch-* 事件

BrowserWindow 上已弃用的 scroll-touch-beginscroll-touch-endscroll-touch-edge 事件已移除。请改用 WebContents 上新增的 input-event 事件。

// Removed in Electron 23.0
-win.on('scroll-touch-begin', scrollTouchBegin)
-win.on('scroll-touch-edge', scrollTouchEdge)
-win.on('scroll-touch-end', scrollTouchEnd)

// Replace with
+win.webContents.on('input-event', (_, event) => {
+ if (event.type === 'gestureScrollBegin') {
+ scrollTouchBegin()
+ } else if (event.type === 'gestureScrollUpdate') +{
+ scrollTouchEdge()
+ } else if (event.type === 'gestureScrollEnd') {
+ scrollTouchEnd()
+ }
+})

20.x.y 版本停止支持

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

E22 (22年11月)E23 (23年2月)E24 (23年4月)E25 (23年5月)E26 (23年8月)
22.x.y23.x.y24.x.y25.x.y26.x.y
21.x.y22.x.y23.x.y24.x.y25.x.y
20.x.y21.x.y22.x.y23.x.y24.x.y

后续计划

短期内,您可以期待团队继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。

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

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

Electron 22.0.0

·5 分钟阅读

Electron 22.0.0 已发布!它包括一个新的 utility process API,Windows 7/8/8.1 支持更新,以及升级到 Chromium 108、V8 10.8 和 Node.js 16.17.1。请阅读下文了解更多详情!


Electron 团队激动地宣布 Electron 22.0.0 发布!您可以通过 npm 使用 npm install electron@latest 安装,或从我们的 版本发布网站 下载。请继续阅读以了解此版本的详细信息。

如果您有任何反馈,请在 Twitter 上与我们分享,或加入我们的社区 Discord!可以在 Electron 的 问题追踪器 中报告 Bug 和功能请求。

值得注意的变化

技术栈变化

亮点功能

UtilityProcess API #36089

新的 UtilityProcess 主进程模块允许创建一个轻量级的 Chromium 子进程,该子进程仅集成了 Node.js,同时还允许使用 MessageChannel 与沙盒渲染器进行通信。该 API 是基于 Node.js 的 child_process.fork 设计的,以便于转换,一个主要区别是入口点 modulePath 必须来自打包应用程序内部,以仅允许加载受信任的脚本。此外,该模块默认阻止与渲染器建立通信通道,维护了主进程是应用程序中唯一受信任进程的契约。

您可以在我们的文档中阅读有关新 UtilityProcess API 的更多信息。

Windows 7/8/8.1 支持更新

信息

2023/02/16:关于 Windows Server 2012 支持的更新

上个月,Google 宣布Chrome 109 将继续接收针对 Windows Server 2012 和 Windows Server 2012 R2 的关键安全修复程序,直到 2023 年 10 月 10 日。因此,Electron 22 (Chromium 108) 原计划的生命周期结束日期将从 2023 年 5 月 30 日延长至 2023 年 10 月 10 日。Electron 团队将继续向 Electron 22 回迁该计划中的任何安全修复程序,直到 2023 年 10 月 10 日。

请注意,我们将不再为 Windows 7/8/8.1 提供额外的安全修复程序。此外,如之前所宣布,Electron 23 (Chromium 110) 将仅在 Windows 10 及更高版本上运行。

Electron 22 将是最后一个支持 Windows 7/8/8.1 的 Electron 主要版本。Electron 遵循计划中的 Chromium 弃用政策,该政策将在 Chromium 109 中弃用 Windows 7/8/8.1 的支持(在此处阅读更多)

Electron 23 及以后的主要版本将不再支持 Windows 7/8/8.1。

其他亮点变更

  • 添加了对 Linux 和 Windows 上 Web Bluetooth PIN 码配对的支持。#35416
  • 添加了 LoadBrowserProcessSpecificV8Snapshot 作为新的 fuse,它将允许主进程/浏览器进程从 browser_v8_context_snapshot.bin 文件加载其 v8 快照。任何其他进程将使用与今天相同的路径。#35266
  • 添加了 WebContents.opener 用于访问 window opener,并添加了 webContents.fromFrame(frame) 用于获取与 WebFrameMain 实例对应的 WebContents。#35140
  • 通过一个新的会话处理程序 ses.setDisplayMediaRequestHandler 添加了对 navigator.mediaDevices.getDisplayMedia 的支持。#30702

破坏性 API 变更

以下是 Electron 22 中引入的破坏性变更。您可以在计划中的破坏性变更页面上阅读有关这些变更和未来变更的更多信息。

已弃用:webContents.incrementCapturerCount(stayHidden, stayAwake)

webContents.incrementCapturerCount(stayHidden, stayAwake) 已弃用。当页面捕获完成时,它现在由 webContents.capturePage 自动处理。

const w = new BrowserWindow({ show: false })

- w.webContents.incrementCapturerCount()
- w.capturePage().then(image => {
- console.log(image.toDataURL())
- w.webContents.decrementCapturerCount()
- })

+ w.capturePage().then(image => {
+ console.log(image.toDataURL())
+ })

已弃用:webContents.decrementCapturerCount(stayHidden, stayAwake)

webContents.decrementCapturerCount(stayHidden, stayAwake) 已弃用。当页面捕获完成时,它现在由 webContents.capturePage 自动处理。

const w = new BrowserWindow({ show: false })

- w.webContents.incrementCapturerCount()
- w.capturePage().then(image => {
- console.log(image.toDataURL())
- w.webContents.decrementCapturerCount()
- })

+ w.capturePage().then(image => {
+ console.log(image.toDataURL())
+ })

已移除:WebContents new-window 事件

WebContents 的 new-window 事件已移除。它已被webContents.setWindowOpenHandler() 取代。

- webContents.on('new-window', (event) => {
- event.preventDefault()
- })

+ webContents.setWindowOpenHandler((details) => {
+ return { action: 'deny' }
+ })

已弃用:BrowserWindow scroll-touch-* 事件

BrowserWindow 上已弃用的 scroll-touch-beginscroll-touch-endscroll-touch-edge 事件已移除。请改用 WebContents 上新增的input-event 事件

// Deprecated
- win.on('scroll-touch-begin', scrollTouchBegin)
- win.on('scroll-touch-edge', scrollTouchEdge)
- win.on('scroll-touch-end', scrollTouchEnd)

// Replace with
+ win.webContents.on('input-event', (_, event) => {
+ if (event.type === 'gestureScrollBegin') {
+ scrollTouchBegin()
+ } else if (event.type === 'gestureScrollUpdate') {
+ scrollTouchEdge()
+ } else if (event.type === 'gestureScrollEnd') {
+ scrollTouchEnd()
+ }
+ })

19.x.y 版本停止支持

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

E19 (22年5月)E20 (22年8月)E21 (22年9月)E22 (22年11月)E23 (23年1月)
19.x.y20.x.y21.x.y22.x.y23.x.y
18.x.y19.x.y20.x.y21.x.y22.x.y
17.x.y18.x.y19.x.y20.x.y21.x.y

后续计划

Electron 项目将在 2022 年 12 月暂停,并于 2023 年 1 月恢复。更多信息可在12 月关闭博客文章中找到。

短期内,您可以期待团队继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。

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

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

Electron 21.0.0

·3 分钟阅读

Electron 21.0.0 已发布!它包括升级到 Chromium 106、V8 10.6 和 Node.js 16.16.0。请阅读下文了解更多详情!


Electron 团队激动地宣布 Electron 21.0.0 发布!您可以通过 npm 使用 npm install electron@latest 安装,或从我们的 版本发布网站 下载。请继续阅读以了解此版本的详细信息。

如果您有任何反馈,请在 Twitter 上与我们分享,或加入我们的社区 Discord!可以在 Electron 的 问题追踪器 中报告 Bug 和功能请求。

值得注意的变化

技术栈变化

新功能

  • 添加了 webFrameMain.origin#35534
  • 添加了新的 WebContents.ipc 和 WebFrameMain.ipc API。#35231
  • 添加了对类似面板行为的支持。窗口可以浮动在全屏应用上方。#34388
  • 添加了对 macOS 应用来自 APNs 的推送通知的支持。#33574

破坏性变更和 API 变更

以下是 Electron 21 中引入的破坏性变更。

已启用 V8 内存隔离

Electron 21 启用了V8 沙盒指针,遵循 Chrome 在Chrome 103 中做出的相同决定。这对原生模块有一些影响。此功能具有性能和安全优势,但也对原生模块施加了一些新限制,例如,使用指向外部(“堆外”)内存的 ArrayBuffers。请参阅这篇博客文章了解更多信息。#34724

重构了 webContents.printToPDF

重构了 webContents.printToPDF 以与 Chromium 的无头实现对齐。更多信息请参见 #33654

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

18.x.y 版本终止支持

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

E18 (22 年 3 月)E19 (22年5月)E20 (22年8月)E21 (22年9月)E22 (22 年 12 月)
18.x.y19.x.y20.x.y21.x.y22.x.y
17.x.y18.x.y19.x.y20.x.y21.x.y
16.x.y17.x.y18.x.y19.x.y20.x.y

后续计划

短期内,您可以期待团队继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。

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

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

Electron 20.0.0

·4 分钟阅读

Electron 20.0.0 已发布!它包括升级到 Chromium 104、V8 10.4 和 Node.js 16.15.0。阅读下文了解更多详情!


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

值得注意的变化

新功能

  • 在 Windows 上添加了沉浸式深色模式。 #34549
  • 添加了面板行为支持。窗口可以浮在全屏应用程序上方。 #34665
  • 更新了 Windows 控制覆盖按钮,使其在 Windows 11 上看起来和感觉更原生。 #34888
  • 默认情况下,渲染进程现已沙盒化,除非指定了 nodeIntegration: truesandbox: false#35125
  • 在使用 nan 构建原生模块时添加了保护措施。 #35160

技术栈变化

破坏性变更和 API 变更

以下是 Electron 20 中引入的重大更改。关于这些和未来更改的更多信息可以在 计划的重大更改 页面上找到。

默认值已更改:未指定 nodeIntegration: true 的渲染进程默认沙盒化

以前,指定预加载脚本的渲染进程默认不进行沙盒化。这意味着默认情况下,预加载脚本可以访问 Node.js。在 Electron 20 中,这个默认值已更改。从 Electron 20 开始,渲染进程将默认进行沙盒化,除非指定了 nodeIntegration: truesandbox: false

如果您的预加载脚本不依赖于 Node,则无需执行任何操作。如果您的预加载脚本确实依赖于 Node,请重构它们以移除渲染进程中的 Node 使用,或者为相关的渲染进程明确指定 sandbox: false

修复:nan 原生模块中的偶发崩溃问题

在 Electron 20 中,我们更改了与原生模块相关的两项内容:

  1. V8 头文件现在默认使用 c++17。此标志已添加到 electron-rebuild。
  2. 我们修复了一个问题,即缺少头文件会导致依赖 nan 的原生模块偶发崩溃。

为了获得最大的稳定性,我们建议在重新构建原生模块(特别是依赖 nan 的模块)时,使用 node-gyp >=8.4.0 和 electron-rebuild >=3.2.9。更多信息请参见 electron #35160 和 node-gyp #2497

移除:Linux 上的 .skipTaskbar

在 X11 上,skipTaskbar 向 X11 窗口管理器发送一个 _NET_WM_STATE_SKIP_TASKBAR 消息。Wayland 没有直接等效的功能,并且已知的变通方法存在不可接受的权衡(例如,GNOME 中的 Window.is_skip_taskbar 需要非安全模式),因此 Electron 无法在 Linux 上支持此功能。

17.x.y 版本终止支持

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

E18 (22 年 3 月)E19 (22年5月)E20 (22年8月)E21 (22年9月)E22 (22 年 12 月)
18.x.y19.x.y20.x.y21.x.y22.x.y
17.x.y18.x.y19.x.y20.x.y21.x.y
16.x.y17.x.y18.x.y19.x.y20.x.y
15.x.y--------

后续计划

短期内,您可以期望团队继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们谨慎地不对发布日期作出承诺,但我们的计划是大约每 2 个月发布一个新的 Electron 主要版本,其中包含这些组件的新版本。

您可以在此处找到 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

已从 WebPreferences 中移除了半文档化的 preloadURL 属性。#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

·3 分钟阅读

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


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

值得注意的变化

Electron 发布节奏变更

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

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

技术栈变化

亮点功能

  • 新增了 ses.setCodeCachePath() API 用于设置代码缓存目录。#33286
  • 移除了基于旧 BrowserWindowProxywindow.open 实现。这也移除了 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 进行 shim。这意味着 window.open('about:blank') 无法打开同步可脚本化的子窗口,并且存在其他不兼容性。从 Electron 15 开始,nativeWindowOpen 已默认启用。

有关更多详细信息,请参阅 Electron 中关于 window.open 的文档。此更改位于 #29405

14.x.y 版本终止支持

根据项目的支持政策,Electron 14.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 17.0.0

·3 分钟阅读

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 19)。2022 年 5 月之后,我们将恢复支持最新的三个版本。请参阅我们的版本控制文档以获取有关 Electron 版本控制的更详细信息。

技术栈变化

亮点功能

  • 新增 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 的公开时间线

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