跳过主内容

Electron 2.0.0

·7 分钟阅读

经过四个多月的开发、八个测试版发布以及许多应用分阶段推广的全球测试,Electron 2.0.0 现已在 electronjs.org 上发布。


发布流程

从 2.0.0 版本开始,Electron 的发布将遵循语义化版本控制。这意味着主版本号将更频繁地提升,并且通常是 Chromium 的重大更新。补丁版本应该更稳定,因为它们只包含高优先级的错误修复。

Electron 2.0.0 也代表了 Electron 在重大发布前稳定化方式的改进。几个大型 Electron 应用已将 2.0.0 测试版纳入分阶段推广中,为 Electron 带来了前所未有的最佳测试系列反馈循环。

变更 / 新功能

  • Electron 工具链的几个重要部分进行了重大更新,包括 Chrome 61、Node 8.9.3、V8 6.1.534.41、Linux 上的 GTK+ 3、更新的拼写检查器和 Squirrel。
  • MacOS 上现已支持应用内购买#11292
  • 用于加载文件的新 API。#11565
  • 用于启用/禁用窗口的新 API。#11832
  • 新 API app.setLocale()。#11469
  • 新增支持记录 IPC 消息。#11880
  • 新的菜单事件。#11754
  • 为 powerMonitor 添加 shutdown 事件。#11417
  • 添加 affinity 选项,用于将多个 BrowserWindow 聚集到单个进程中。#11501
  • 添加 saveDialog 列出可用扩展的功能。#11873
  • 支持额外的通知操作#11647
  • 设置 macOS 通知关闭按钮标题的功能。#11654
  • 为 menu.popup(window, callback) 添加条件
  • touchbar 项目的内存改进。#12527
  • 改进了安全建议清单。
  • 添加应用范围的安全作用域书签。#11711
  • 添加在渲染器进程中设置任意参数的功能。#11850
  • 为格式选择器添加附件视图。#11873
  • 修复了网络委托竞争条件。#12053
  • 放弃对 Linux 上 mips64el 架构的支持。Electron 需要 C++14 工具链,该工具链在发布时不支持该架构。我们希望将来能重新添加支持。

重大 API 变更

  • 删除了已弃用的 API,包括
    • 更改了 menu.popup 签名。#11968
    • 删除了已弃用的 crashReporter.setExtraParameter#11972
    • 删除了已弃用的 webContents.setZoomLevelLimitswebFrame.setZoomLevelLimits#11974
    • 删除了已弃用的 clipboard 方法。#11973
    • 删除了对 tray.setHighlightMode 布尔参数的支持。#11981

错误修复

  • 更改以确保 webContents.isOffscreen() 始终可用。#12531
  • 修复了 DevTools 未停靠并聚焦时 BrowserWindow.getFocusedWindow() 的问题。#12554
  • 修复了沙盒渲染器中如果预加载路径包含特殊字符时预加载不加载的问题。#12643
  • 根据文档纠正了 allowRunningInsecureContent 的默认值。#12629
  • 修复了 nativeImage 上的透明度问题。#12683
  • 修复了 Menu.buildFromTemplate 的问题。#12703
  • 确认 menu.popup 选项是对象。#12330
  • 移除了新进程创建和上下文释放之间的竞争条件。#12361
  • 更改 BrowserView 时更新可拖动区域。#12370
  • 修复了聚焦时菜单栏切换 alt 键检测的问题。#12235
  • 修复了 webviews 中的不正确警告。#12236
  • 修复了父窗口 'show' 选项的继承问题。#122444
  • 确保 getLastCrashReport() 确实是最后一次崩溃报告。#12255
  • 修复了网络共享路径上的 require 问题。#12287
  • 修复了上下文菜单点击回调。#12170
  • 修复了弹出菜单位置。#12181
  • 改进了 libuv 循环清理。#11465
  • 修复了透明颜色的 hexColorDWORDToRGBA#11557
  • 修复了 getWebPreferences api 的空指针解引用问题。#12245
  • 修复了菜单委托中的循环引用。#11967
  • 修复了 net.request 的协议过滤。#11657
  • WebFrame.setVisualZoomLevelLimits 现在设置用户代理比例约束。#12510
  • 为 webview 选项设置了适当的默认值。#12292
  • 改进了活力支持。#12157 #12171 #11886
  • 修复了单例夹具中的时序问题。
  • 修复了 NotifierSupportsActions() 中损坏的生产缓存
  • 使 MenuItem 角色兼容驼峰命名法。#11532
  • 改进了触控栏更新。#11812, #11761
  • 移除了额外的菜单分隔符。#11827
  • 修复了蓝牙选择器错误。关闭了 #11399
  • 修复了 macOS 全屏切换菜单项标签。#11633
  • 改进了窗口停用时工具提示的隐藏。#11644
  • 迁移了已弃用的 web-view 方法。#11798
  • 修复了从 browserview 打开的窗口关闭问题。#11799
  • 修复了蓝牙选择器错误。#11492
  • 更新为使用任务调度器处理 app.getFileIcon API。#11595
  • 更改为即使在屏幕外渲染时也触发 console-message 事件。#11921
  • 修复了使用 WebContents.downloadURL 从自定义协议下载的问题。#11804
  • 修复了开发工具分离后透明窗口失去透明度的问题。#11956
  • 修复了 Electron 应用取消重启或关机的问题。#11625

macOS

  • 修复了触控栏项目重用时的事件泄漏。#12624
  • 修复了黑暗模式下的托盘高亮。#12398
  • 修复了异步对话框阻塞主进程的问题。#12407
  • 修复了 setTitle 托盘崩溃问题。#12356
  • 修复了设置 Dock 菜单时的崩溃问题。#12087

Linux

Windows

  • 添加了 Visual Studio 2017 支持。#11656
  • 修复了异常传递到系统崩溃处理程序的问题。#12259
  • 修复了最小化窗口隐藏工具提示的问题。#11644
  • 修复了 desktopCapturer 捕获正确屏幕的问题。#11664
  • 修复了 disableHardwareAcceleration 与透明度的问题。#11704

下一步

Electron 团队正在努力支持更新版本的 Chromium、Node 和 V8。预计 3.0.0-beta.1 很快就会发布!