跳至主要内容

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

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

查看所有标签

Electron 34.0.0

·3 分钟阅读

Electron 34.0.0 已发布!它包括升级到 Chromium 132.0.6834.83、V8 13.2 和 Node 20.18.1。


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

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

显著变化

亮点

  • 添加了 WebFrameMain.collectJavaScriptCallStack(),用于访问无响应渲染器的 JavaScript 调用堆栈。#44938
  • 添加了 API,用于管理使用 Brotli 或 ZStandard 进行压缩效率的共享字典。新的 API 是 session.getSharedDictionaryUsageInfo()session.getSharedDictionaryInfo(options)session.clearSharedDictionaryCache()session.clearSharedDictionaryCacheForIsolationKey(options)#44950

堆栈更改

Electron 34 将 Chromium 从 130.0.6723.44 升级到 132.0.6834.83,将 Node 从 20.18.0 升级到 20.18.1,并将 V8 从 13.0 升级到 13.2

新功能

  • 添加了 API,用于管理使用 Brotli 或 ZStandard 进行压缩效率的共享字典。新的 API 是 session.getSharedDictionaryUsageInfo()session.getSharedDictionaryInfo(options)session.clearSharedDictionaryCache()session.clearSharedDictionaryCacheForIsolationKey(options)#44950
  • 添加了 WebFrameMain.collectJavaScriptCallStack(),用于访问无响应渲染器的 JavaScript 调用堆栈。#44938
  • 为处于卸载状态的帧添加了 WebFrameMain.detached
    • 添加了 WebFrameMain.isDestroyed(),用于确定帧是否已被销毁。
    • 修复了当帧正在卸载时,webFrameMain.fromId(processId, frameId) 返回的 WebFrameMain 实例与给定参数不匹配的问题。#43473
  • 在实用程序进程中添加了错误事件,以支持 V8 致命错误的诊断报告。#43774
  • 功能:GPU 加速的共享纹理屏幕外渲染。#42953

重大更改

行为已更改:在 Windows 上全屏模式下,菜单栏将被隐藏

这使该行为与 Linux 保持一致。之前的行为:在 Windows 上全屏模式下,菜单栏仍然可见。新的行为:在 Windows 上全屏模式下,菜单栏将被隐藏。

更正:这之前在 Electron 33 中被列为重大更改,但实际上是在 Electron 34 中首次发布。

结束对 31.x.y 的支持

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

E34 (25 年 1 月)E35 (25 年 4 月)E36 (25 年 6 月)
34.x.y35.x.y36.x.y
33.x.y34.x.y35.x.y
32.x.y33.x.y34.x.y

下一步

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

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

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

Electron 33.0.0

·4 分钟阅读

Electron 33.0.0 已发布!它包括升级到 Chromium 130.0.6723.44、V8 13.0 和 Node 20.18.0。


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

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

显著变化

亮点

  • 添加了一个处理程序 app.setClientCertRequestPasswordHandler(handler),以帮助在需要 PIN 时解锁加密设备。#41205
  • 使用 2 个新函数扩展了 navigationHistory API,以实现更好的历史管理。#42014
  • 改进了原生主题透明度检查。#42862

堆栈更改

Electron 33 将 Chromium 从 128.0.6613.36 升级到 130.0.6723.44,将 Node 从 20.16.0 升级到 20.18.0,并将 V8 从 12.8 升级到 13.0

新功能

  • 添加了一个处理程序 app.setClientCertRequestPasswordHandler(handler),以帮助在需要 PIN 时解锁加密设备。#41205
  • 在实用程序进程中添加了错误事件,以支持 V8 致命错误的诊断报告。#43997
  • 添加了 View.setBorderRadius(radius) 用于自定义视图的边框半径,并兼容 WebContentsView#42320
  • 使用 2 个新函数扩展了 navigationHistory API,以实现更好的历史管理。#42014

重大更改

已移除:macOS 10.15 支持

macOS 10.15 (Catalina) 不再受Chromium 支持。

旧版本的 Electron 将继续在 Catalina 上运行,但运行 Electron v33.0.0 及更高版本将需要 macOS 11 (Big Sur) 或更高版本。

行为变更:原生模块现在需要 C++20

由于上游的更改,V8Node.js 现在都要求 C++20 作为最低版本。使用原生 Node 模块的开发者应使用 --std=c++20 而不是 --std=c++17 构建他们的模块。使用 gcc9 或更低版本的镜像可能需要更新到 gcc10 才能进行编译。有关更多详细信息,请参阅#43555

行为变更:Windows 上的自定义协议 URL 处理

由于 Chromium 中为支持非特殊方案 URL 所做的更改,使用 Windows 文件路径的自定义协议 URL 将不再能与已弃用的 protocol.registerFileProtocol 以及 BrowserWindow.loadURLWebContents.loadURL<webview>.loadURLbaseURLForDataURL 属性一起正常工作。protocol.handle 也不能与这些类型的 URL 一起使用,但这并不是一个变化,因为它一直都是这样工作的。

// No longer works
protocol.registerFileProtocol('other', () => {
callback({ filePath: '/path/to/my/file' });
});

const mainWindow = new BrowserWindow();
mainWindow.loadURL(
'data:text/html,<script src="loaded-from-dataurl.js"></script>',
{ baseURLForDataURL: 'other://C:\\myapp' },
);
mainWindow.loadURL('other://C:\\myapp\\index.html');

// Replace with
const path = require('node:path');
const nodeUrl = require('node:url');
protocol.handle(other, (req) => {
const srcPath = 'C:\\myapp\\';
const reqURL = new URL(req.url);
return net.fetch(
nodeUrl.pathToFileURL(path.join(srcPath, reqURL.pathname)).toString(),
);
});

mainWindow.loadURL(
'data:text/html,<script src="loaded-from-dataurl.js"></script>',
{ baseURLForDataURL: 'other://' },
);
mainWindow.loadURL('other://index.html');

行为变更:apploginwebContents 属性

当为使用 respondToAuthRequestsFromMainProcess 选项创建的实用程序进程的请求触发时,applogin 事件中的 webContents 属性将为 null

已弃用:BrowserWindowConstructorOption.type 中的 textured 选项

BrowserWindowConstructorOptionstypetextured 选项已弃用,没有替代方案。此选项依赖于 macOS 上的 NSWindowStyleMaskTexturedBackground 样式掩码,该掩码已弃用且没有替代方案。

已弃用:systemPreferences.accessibilityDisplayShouldReduceTransparency

systemPreferences.accessibilityDisplayShouldReduceTransparency 属性现在已弃用,取而代之的是新的 nativeTheme.prefersReducedTransparency,它提供相同的信息并且可以跨平台工作。

// Deprecated
const shouldReduceTransparency =
systemPreferences.accessibilityDisplayShouldReduceTransparency;

// Replace with:
const prefersReducedTransparency = nativeTheme.prefersReducedTransparency;

30.x.y 版本终止支持

根据项目的支持策略,Electron 30.x.y 已达到终止支持状态。鼓励开发人员和应用程序升级到较新版本的 Electron。

E33 (2024 年 10 月)E34 (25 年 1 月)E35 (25 年 4 月)
33.x.y34.x.y35.x.y
32.x.y33.x.y34.x.y
31.x.y32.x.y33.x.y

下一步

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

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

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

Electron 32.0.0

·4 分钟阅读

Electron 32.0.0 已发布!它包括对 Chromium 128.0.6613.36、V8 12.8 和 Node 20.16.0 的升级。


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

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

显著变化

亮点

  • 在我们的文档中添加了新的 API 版本历史记录,这是 @piotrpdev 作为 Google Summer of Code 的一部分创建的功能。您可以在这篇博客文章中了解更多信息。#42982
  • 从 Web 文件 API 中删除了非标准的 File.path 扩展。#42053
  • 当尝试在被阻止的路径中打开文件或目录时,将 Web 文件系统 API 中的失败路径与上游对齐。#42993
  • 将以下现有的导航相关 API 添加到 webcontents.navigationHistorycanGoBackgoBackcanGoForwardgoForwardcanGoToOffsetgoToOffsetclear。之前的导航 API 现在已弃用。#41752

堆栈更改

Electron 32 将 Chromium 从 126.0.6478.36 升级到 128.0.6613.36,将 Node 从 20.14.0 升级到 20.16.0,将 V8 从 12.6 升级到 12.8

新功能

  • 增加了对通过 app 模块的 'login' 事件响应从实用程序进程启动的身份验证请求的支持。#43317
  • cumulativeCPUUsage 属性添加到 CPUUsage 结构中,该属性返回自进程启动以来使用的 CPU 时间总秒数。#41819
  • 将以下现有的导航相关 API 添加到 webContents.navigationHistorycanGoBackgoBackcanGoForwardgoForwardcanGoToOffsetgoToOffsetclear#41752
  • 扩展了 WebContentsView 以接受预先存在的 webContents 对象。#42086
  • nativeTheme 添加了一个新的属性 prefersReducedTransparency,该属性指示用户是否已选择通过系统辅助功能设置来降低操作系统级别的透明度。#43137
  • 当尝试在被阻止的路径中打开文件或目录时,将文件系统访问 API 中的失败路径与上游对齐。#42993
  • 在 Linux 上启用了 Windows 控制覆盖 API。#42681
  • 在网络请求中启用了 zstd 压缩。#43300

重大更改

已移除:File.path

Web File 对象的非标准 path 属性是在早期版本的 Electron 中添加的,作为在渲染器中执行所有操作时使用原生文件的便捷方法。然而,它代表了对标准的偏离,并且也存在轻微的安全风险,因此从 Electron 32.0 开始,它已被删除,取而代之的是 webUtils.getPathForFile 方法。

// Before (renderer)
const file = document.querySelector('input[type=file]');
alert(`Uploaded file path was: ${file.path}`);
// After (renderer)
const file = document.querySelector('input[type=file]');
electron.showFilePath(file);

// After (preload)
const { contextBridge, webUtils } = require('electron');

contextBridge.exposeInMainWorld('electron', {
showFilePath(file) {
// It's best not to expose the full file path to the web content if
// possible.
const path = webUtils.getPathForFile(file);
alert(`Uploaded file path was: ${path}`);
},
});

已弃用:WebContents 上的 clearHistorycanGoBackgoBackcanGoForwardgoForwardgoToIndexcanGoToOffsetgoToOffset

WebContents 实例上的导航相关 API 现在已弃用。这些 API 已移动到 WebContentsnavigationHistory 属性,以便为管理导航历史记录提供更结构化和直观的界面。

// Deprecated
win.webContents.clearHistory();
win.webContents.canGoBack();
win.webContents.goBack();
win.webContents.canGoForward();
win.webContents.goForward();
win.webContents.goToIndex(index);
win.webContents.canGoToOffset();
win.webContents.goToOffset(index);

// Replace with
win.webContents.navigationHistory.clear();
win.webContents.navigationHistory.canGoBack();
win.webContents.navigationHistory.goBack();
win.webContents.navigationHistory.canGoForward();
win.webContents.navigationHistory.goForward();
win.webContents.navigationHistory.canGoToOffset();
win.webContents.navigationHistory.goToOffset(index);

29.x.y 版本终止支持

根据项目的支持策略,Electron 29.x.y 已达到终止支持状态。鼓励开发人员和应用程序升级到较新版本的 Electron。

E32 (2024 年 8 月)E33 (2024 年 10 月)E34 (25 年 1 月)
32.x.y33.x.y34.x.y
31.x.y32.x.y33.x.y
30.x.y31.x.y32.x.y

下一步

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

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

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

Electron 31.0.0

·3 分钟阅读

Electron 31.0.0 已发布!它包括对 Chromium 126.0.6478.36、V8 12.6 和 Node 20.14.0 的升级。


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

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

显著变化

亮点

  • 扩展了 WebContentsView 以接受预先存在的 webContents 对象。#42319
  • 添加了对 NODE_EXTRA_CA_CERTS 的支持。#41689
  • 更新了 window.flashFrame(bool) 以在 macOS 上持续闪烁。#41391
  • 删除了 WebSQL 支持 #41868
  • nativeImage.toDataURL 将保留 PNG 颜色空间 #41610
  • 扩展了 webContents.setWindowOpenHandler 以支持手动创建 BrowserWindow。#41432

堆栈更改

Electron 31 将 Chromium 从 124.0.6367.49 升级到 126.0.6478.36,将 Node 从 20.11.1 升级到 20.14.0,并将 V8 从 12.4 升级到 12.6

新功能

  • Session 添加了 clearData 方法。#40983
    • Session.clearData API 添加了 options 参数。#41355
  • navigator.serial 中添加了对通过服务类 ID 请求蓝牙端口的支持。#41638
  • 添加了对 Node 的 NODE_EXTRA_CA_CERTS 环境变量的支持。#41689
  • 扩展了 webContents.setWindowOpenHandler 以支持手动创建 BrowserWindow。#41432
  • 实现了对 Web 标准 File System API 的支持。#41419
  • 扩展了 WebContentsView 以接受预先存在的 WebContents 实例。#42319
  • 在 webContents API 上添加了一个新的实例属性 navigationHistory,以及 navigationHistory.getEntryAtIndex 方法,使应用程序能够检索浏览历史记录中任何导航条目的 URL 和标题。#41577 (在 2930 中也有)

重大更改

移除:WebSQL 支持

Chromium 已经移除了对上游 WebSQL 的支持,将其转换为仅限 Android。有关更多信息,请参阅Chromium 的移除意图讨论

行为变更:nativeImage.toDataURL 将保留 PNG 色彩空间

PNG 解码器实现已更改为保留色彩空间数据。从此函数返回的编码数据现在与其匹配。

有关更多信息,请参阅 crbug.com/332584706

行为变更:win.flashFrame(bool) 将在 macOS 上持续闪烁 Dock 图标

这使得该行为与 Windows 和 Linux 保持一致。之前的行为:第一个 flashFrame(true) 只会弹跳一次 Dock 图标(使用 NSInformationalRequest 级别),而 flashFrame(false) 则不执行任何操作。新行为:持续闪烁,直到调用 flashFrame(false)。这改用 NSCriticalRequest 级别。要显式使用 NSInformationalRequest 来导致单个 Dock 图标弹跳,仍然可以使用 dock.bounce('informational')

28.x.y 版本停止支持

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

E31(24 年 6 月)E32 (2024 年 8 月)E33 (2024 年 10 月)
31.x.y32.x.y33.x.y
30.x.y31.x.y32.x.y
28.x.y29.x.y31.x.y

下一步

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

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

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

Electron 30.0.0

·4 分钟阅读

Electron 30.0.0 已发布!它包括对 Chromium 124.0.6367.49、V8 12.4 和 Node.js 20.11.1 的升级。


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

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

显著变化

亮点

  • ASAR 完整性熔断器现在在 Windows 上受支持 (#40504)
    • 如果配置不正确,启用 ASAR 完整性的现有应用程序可能无法在 Windows 上运行。使用 Electron 打包工具的应用程序应升级到 @electron/[email protected]@electron/[email protected]
    • 请查看我们的ASAR 完整性教程,以了解更多信息。
  • 添加了 WebContentsViewBaseWindow 主进程模块,弃用并替换了 BrowserView (#35658)。在此博客文章中了解有关如何从 BrowserView 迁移到 WebContentsView 的更多信息。
    • BrowserView 现在是 WebContentsView 的一个 shim,旧的实现已被删除。
    • 请参阅我们的 Web 嵌入文档,以比较新的 WebContentsView API 与其他类似的 API。
  • 实现了对 File System API 的支持 (#41827)

堆栈更改

Electron 30 将 Chromium 从 122.0.6261.39 升级到 124.0.6367.49,将 Node 从 20.9.0 升级到 20.11.1,并将 V8 从 12.2 升级到 12.4

新功能

  • 向 webview 添加了 transparent webpreference。( #40301)
  • 在 webContents API 上添加了一个新的实例属性 navigationHistory,以及 navigationHistory.getEntryAtIndex 方法,使应用程序能够检索浏览历史记录中任何导航条目的 URL 和标题。( #41662)
  • 添加了新的 BrowserWindow.isOccluded() 方法,允许应用程序检查遮挡状态。( #38982)
  • 为从实用程序进程发出的使用 net 模块的请求添加了代理配置支持。( #41417)
  • navigator.serial 中添加了对通过服务类 ID 请求蓝牙端口的支持。( #41734)
  • 添加了对 Node.js NODE_EXTRA_CA_CERTS CLI 标志的支持。( #41822)

重大更改

行为变更:跨域 iframe 现在使用权限策略来访问功能

跨域 iframe 现在必须通过 allow 属性指定给定 iframe 可用的功能,才能访问这些功能。

有关更多信息,请参阅文档

移除:--disable-color-correct-rendering 命令行开关

此开关从未正式记录在案,但此处仍然记录其删除。Chromium 本身现在对色彩空间有更好的支持,因此不需要此标志。

行为变更:macOS 上 BrowserView.setAutoResize 的行为

在 Electron 30 中,BrowserView 现在是围绕新的 WebContentsView API 的包装器。

以前,BrowserView API 的 setAutoResize 函数由 macOS 上的 自动调整大小 提供支持,而 Windows 和 Linux 上则使用自定义算法。对于诸如使 BrowserView 填充整个窗口之类的简单用例,这两种方法的行为是相同的。但是,在更高级的情况下,BrowserView 在 macOS 上的自动调整大小的方式与其他平台上的方式不同,因为 Windows 和 Linux 的自定义调整大小算法与 macOS 的自动调整大小 API 的行为并不完全匹配。现在,所有平台上的自动调整大小行为已标准化。

如果您的应用程序使用 BrowserView.setAutoResize 来执行比使 BrowserView 填充整个窗口更复杂的操作,则您可能已经有自定义逻辑来处理 macOS 上行为的这种差异。如果是这样,那么在 Electron 30 中将不再需要该逻辑,因为自动调整大小的行为是一致的。

移除:WebContentscontext-menu 中的 params.inputFormType 属性

已删除来自 WebContentscontext-menu 事件中 params 对象的 inputFormType 属性。请改用新的 formControlType 属性。

移除:process.getIOCounters()

Chromium 已删除对此信息的访问权限。

27.x.y 版本停止支持

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

E30(24 年 4 月)E31(24 年 6 月)E32 (2024 年 8 月)
30.x.y31.x.y32.x.y
29.x.y30.x.y31.x.y
28.x.y29.x.y30.x.y

下一步

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

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

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

Electron 29.0.0

·4 分钟阅读

Electron 29.0.0 已发布!它包括对 Chromium 122.0.6261.39、V8 12.2 和 Node.js 20.9.0 的升级。


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

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

显著变化

亮点

  • 添加了一个新的顶层 webUtils 模块,这是一个渲染器进程模块,提供一个实用程序层来与 Web API 对象交互。该模块中第一个可用的 API 是 webUtils.getPathForFile。Electron 之前的 File.path 增强偏离了 Web 标准;这个新的 API 更符合当前的 Web 标准行为。

堆栈更改

Electron 29 将 Chromium 从 120.0.6099.56 升级到 122.0.6261.39,Node 从 18.18.2 升级到 20.9.0,V8 从 12.0 升级到 12.2

新功能

  • 添加了新的 webUtils 模块,这是一个与 Web API 对象交互的实用程序层,以替换 File.path 增强。#38776
  • net 模块添加到 实用程序进程#40890
  • 添加了一个新的 Electron FusegrantFileProtocolExtraPrivileges,它使 file:// 协议采用更安全和限制性的行为,与 Chromium 匹配。#40372
  • protocol.registerSchemesAsPrivileged 中添加了一个选项,允许在自定义方案中使用 V8 代码缓存。#40544
  • app.{set|get}LoginItemSettings(settings) 迁移到在 macOS 13.0+ 上使用 Apple 新推荐的底层框架。#37244

重大更改

行为变更:ipcRenderer 不能再通过 contextBridge 发送

尝试通过 contextBridge 将整个 ipcRenderer 模块作为对象发送,现在将在桥的接收端产生一个空对象。此更改是为了移除/减轻安全隐患。您不应直接通过桥暴露 ipcRenderer 或其方法。相反,应提供如下所示的安全包装器

contextBridge.exposeInMainWorld('app', {
onEvent: (cb) => ipcRenderer.on('foo', (e, ...args) => cb(args)),
});

已移除:app 上的 renderer-process-crashed 事件

已移除 app 上的 renderer-process-crashed 事件。请改用新的 render-process-gone 事件。

// Removed
app.on('renderer-process-crashed', (event, webContents, killed) => {
/* ... */
});

// Replace with
app.on('render-process-gone', (event, webContents, details) => {
/* ... */
});

已移除:WebContents<webview> 上的 crashed 事件

已移除 WebContents<webview> 上的 crashed 事件。请改用新的 render-process-gone 事件。

// Removed
win.webContents.on('crashed', (event, killed) => {
/* ... */
});
webview.addEventListener('crashed', (event) => {
/* ... */
});

// Replace with
win.webContents.on('render-process-gone', (event, details) => {
/* ... */
});
webview.addEventListener('render-process-gone', (event) => {
/* ... */
});

已移除:app 上的 gpu-process-crashed 事件

已移除 app 上的 gpu-process-crashed 事件。请改用新的 child-process-gone 事件。

// Removed
app.on('gpu-process-crashed', (event, killed) => {
/* ... */
});

// Replace with
app.on('child-process-gone', (event, details) => {
/* ... */
});

对 26.x.y 的支持已结束

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

E29 (2 月'24)E30(24 年 4 月)E31(24 年 6 月)
29.x.y30.x.y31.x.y
28.x.y29.x.y30.x.y
27.x.y28.x.y29.x.y

下一步

您知道 Electron 最近添加了社区征求意见 (RFC) 流程吗?如果您想向框架添加功能,RFC 可以成为与维护人员开始讨论其设计的有用工具。您还可以查看 Pull Request 中正在讨论的即将发生的更改。要了解更多信息,请查看我们的 Introducing electron/rfcs 博客文章,或直接查看 electron/rfcs 存储库的 README。

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

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

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

Electron 28.0.0

·3 分钟阅读

Electron 28.0.0 已发布!它包括 Chromium 120.0.6099.56、V8 12.0 和 Node.js 18.18.2 的升级。


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

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

显著变化

亮点

  • 实现了对 ECMAScript 模块或 ESM 的支持(什么是 ECMAScript 模块?在此处了解更多信息)。这包括对 Electron 本身以及诸如 UtilityProcess API 入口点等区域的 ESM 支持。请参阅我们的 ESM 文档以了解更多详细信息。
  • 除了在 Electron 本身中启用 ESM 支持之外,Electron Forge 还支持使用 ESM 来打包、构建和开发 Electron 应用程序。您可以在 Forge v7.0.0 或更高版本中找到此支持。

堆栈更改

新功能

  • 启用了 ESM 支持。#37535
    • 有关更多详细信息,请参阅 ESM 文档
  • 将 ESM 入口点添加到 UtilityProcess API。#40047
  • display 对象添加了多个属性,包括 detectedmaximumCursorSizenativeOrigin#40554
  • 添加了对 Linux 上 ELECTRON_OZONE_PLATFORM_HINT 环境变量的支持。#39792

重大更改

行为变更:将 WebContents.backgroundThrottling 设置为 false 会影响主机 BrowserWindow 中的所有 WebContents

WebContents.backgroundThrottling 设置为 false 将禁用 BrowserWindow 中所有显示的 WebContents 的帧节流。

已移除:BrowserWindow.setTrafficLightPosition(position)

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

// Removed in Electron 28
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 }

// Removed in Electron 28
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.
}

已移除:ipcRenderer.sendTo()

已移除 ipcRenderer.sendTo() API。应通过在渲染器之间设置一个 MessageChannel 来替换它。

IpcRendererEventsenderIdsenderIsMainFrame 属性也已移除。

已移除:app.runningUnderRosettaTranslation

已移除 app.runningUnderRosettaTranslation 属性。请改用 app.runningUnderARM64Translation

// Removed
console.log(app.runningUnderRosettaTranslation);
// Replace with
console.log(app.runningUnderARM64Translation);

对 25.x.y 的支持已结束

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

E28 (12 月 '23)E29 (2 月'24)E30(24 年 4 月)
28.x.y29.x.y30.x.y
27.x.y28.x.y29.x.y
26.x.y27.x.y28.x.y

下一步

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

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

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

Electron 27.0.0

·3 分钟阅读

Electron 27.0.0 已发布!它包括 Chromium 118.0.5993.32、V8 11.8 和 Node.js 18.17.1 的升级。


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

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

显著变化

堆栈更改

重大更改

已移除:macOS 10.13 / 10.14 支持

macOS 10.13 (High Sierra) 和 macOS 10.14 (Mojave) 不再受 Chromium 支持。

旧版本的 Electron 将继续在这些操作系统上运行,但要运行 Electron v27.0.0 及更高版本,需要 macOS 10.15 (Catalina) 或更高版本。

已弃用:ipcRenderer.sendTo()

ipcRenderer.sendTo() API 已被弃用。应替换为在渲染器之间建立 MessageChannel

IpcRendererEventsenderIdsenderIsMainFrame 属性也已被弃用。

已移除:systemPreferences 中的颜色方案事件

以下 systemPreferences 事件已被移除

  • inverted-color-scheme-changed
  • high-contrast-color-scheme-changed

请改用 nativeTheme 模块上的新 updated 事件。

// Removed
systemPreferences.on('inverted-color-scheme-changed', () => {
/* ... */
});
systemPreferences.on('high-contrast-color-scheme-changed', () => {
/* ... */
});

// Replace with
nativeTheme.on('updated', () => {
/* ... */
});

已移除:webContents.getPrinters

webContents.getPrinters 方法已被移除。请改用 webContents.getPrintersAsync

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

// Removed
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 模块。

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

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

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

已移除:systemPreferences.getColoralternate-selected-control-text

systemPreferences.getColoralternate-selected-control-text 值已被移除。请改用 selected-content-background

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

新功能

  • 添加了应用程序可访问性透明度设置 API #39631
  • 添加了对 chrome.scripting 扩展 API 的支持 #39675
  • 默认启用 WaylandWindowDecorations #39644

24.x.y 版本终止支持

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

E27 (23 年 10 月)E28 (12 月 '23)E29 (2 月'24)
27.x.y28.x.y29.x.y
26.x.y27.x.y28.x.y
25.x.y26.x.y27.x.y

22.x.y 版本延长支持终止

今年早些时候,Electron 团队将 Electron 22 的计划终止日期从 2023 年 5 月 30 日延长至 2023 年 10 月 10 日,以匹配 Chrome 对 Windows 7/8/8.1 的延长支持(更多详细信息请参阅 再见,Windows 7/8/8.1)。

根据项目的 支持策略 和此支持延期,Electron 22.x.y 版本已达到支持终止日期。这将使支持恢复到最新的三个稳定主要版本,并将结束对 Windows 7/8/8.1 的官方支持。

下一步

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

您可以在此处找到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 的 问题跟踪器 中报告。

显著变化

堆栈更改

重大更改

已弃用: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
  • senderIsMainFrame 添加到通过 ipcRenderer.sendTo() 发送的消息中。 #39206
  • 添加了将菜单标记为键盘启动的支持。 #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 的 问题跟踪器 中报告。

显著变化

亮点

  • 在 Electron 的 net 模块中实现了 net.fetch,使用 Chromium 的网络堆栈。这与使用 Node.js HTTP 堆栈的 Node 的 fetch() 不同。请参阅 #36733#36606
  • 添加了 protocol.handle,它替换并弃用了 protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol#36674
  • 扩展了对 Electron 22 的支持,以匹配 Chromium 和 Microsoft 的 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,它接受 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,当没有自定义位置时,它返回 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
  • 将启动器信息添加到导航器事件。此信息允许区分 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 和 Microsoft 的扩展支持日期一致。10 月 11 日,Electron 团队将停止支持三个最新的稳定主要版本,这意味着将不再支持 Windows 7/8/8.1。

E25 (2023 年 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 的公共时间线

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