跳至主要内容

带有“Release”标签的 41 篇文章

关于新 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
  • 用两个新函数扩展了 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
  • 用两个新函数扩展了 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.registerFileProtocolBrowserWindow.loadURLWebContents.loadURL<webview>.loadURL 上的 baseURLForDataURL 属性一起正常工作。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 (2025 年 1 月)E35 (2025 年 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 暑期编程实践计划中创建。您可以在这篇博文中了解更多信息。#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
  • 添加了一个新的属性 prefersReducedTransparencynativeTheme,它指示用户是否已通过系统辅助功能设置选择减少操作系统级别的透明度。#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}`);
},
});

弃用:clearHistorycanGoBackgoBackcanGoForwardgoForwardgoToIndexcanGoToOffsetgoToOffsetWebContents

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 (2025 年 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 添加了选项参数。#41355
  • 添加了对 navigator.serial 中按服务类 ID 请求蓝牙端口的支持。#41638
  • 添加了对 Node 的NODE_EXTRA_CA_CERTS 环境变量的支持。#41689
  • 扩展了 webContents.setWindowOpenHandler 以支持手动创建 BrowserWindow。#41432
  • 实现了对 web 标准文件系统 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 上连续闪烁停靠图标

这将行为与 Windows 和 Linux 保持一致。先前行为:第一次 flashFrame(true) 仅使停靠图标弹跳一次(使用NSInformationalRequest 级别),而 flashFrame(false) 则不执行任何操作。新行为:连续闪烁,直到调用 flashFrame(false) 为止。这使用NSCriticalRequest 级别,而不是使用dock.bounce('informational')

28.x.y 的支持结束

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

E31 (2024 年 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 的 问题跟踪器 中报告错误和功能请求。

重要变更

亮点

堆栈变更

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-menuparams.inputFormType 属性

WebContentscontext-menu 事件的 params 对象中的 inputFormType 属性已被删除。使用新的 formControlType 属性代替。

已删除:process.getIOCounters()

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

27.x.y 支持结束

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

E30 (2024 年 4 月)E31 (2024 年 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 保险丝grantFileProtocolExtraPrivileges,它将 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 (2024 年 2 月)E30 (2024 年 4 月)E31 (2024 年 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 可以成为与维护人员就其设计启动对话的有用工具。您还可以查看拉取请求中讨论的即将发生的更改。要了解更多信息,请查看我们的 介绍 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 本身中 ESM 的支持,以及 UtilityProcess API 入口点等领域。查看我们的 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 代替,它接受 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 代替,它在没有自定义位置时返回 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 (Dec'23)E29 (2024 年 2 月)E30 (2024 年 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 将继续在这些操作系统上运行,但 macOS 10.15 (Catalina) 或更高版本将是运行 Electron v27.0.0 及更高版本的必要条件。

已弃用: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 (Oct'23)E28 (Dec'23)E29 (2024 年 2 月)
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
  • 在通过 ipcRenderer.sendTo() 发送的消息中添加了 senderIsMainFrame#39206
  • 添加了对将菜单标记为键盘启动的支持。 #38954

23.x.y 版本结束支持

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

E26 (Aug'23)E27 (Oct'23)E28 (Jan'24)
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://www.electron.js.cn' });
});

// Replace with
protocol.handle('some-protocol', () => {
return net.fetch('https://www.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
  • 在 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 和 Microsoft 的扩展支持日期。10 月 11 日,Electron 团队将支持范围缩减回最新三个稳定的主要版本,这些版本将不再支持 Windows 7/8/8.1。

E25 (May'23)E26 (Aug'23)E27 (Oct'23)
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 的 问题跟踪器 中报告。

重要变更

堆栈变更

重大变更

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

maxSize 参数已更改为 size,以反映传入的大小将是创建的缩略图的大小。以前,Windows 不会在图像小于 maxSize 时将其放大,而 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 Cookie 的功能。 #37365
  • shell.openExternal() 选项中添加了 logUsage,允许将 SEE_MASK_FLAG_LOG_USAGE 标志传递给 Windows 上的 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
  • 在 macOS 上公开了 window.invalidateShadow(),以清除残留的视觉伪像。 #32452
  • 现在在 electron node 头文件配置中默认启用全程序优化,允许编译器使用来自程序中所有模块的信息进行优化,而不是按模块(编译单元)进行优化。 #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 (Apr'23)E25 (May'23)E26 (Aug'23)
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 的公开时间线

有关未来更改的更多信息,请访问计划的重大变更页面。