跳转到主要内容

Electron 2.0.0

·7分钟阅读

经过四个月多的开发、八个 beta 版本以及全球范围内众多应用程序的分阶段发布测试,Electron 2.0.0 版本现已从 electronjs.org 发布。


发布流程

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

Electron 2.0.0 在主要版本发布前的稳定性改进方面也取得了进展。几款大型 Electron 应用程序已将 2.0.0 beta 版本纳入其灰度发布计划,为 Electron 的 beta 系列提供了有史以来最好的反馈循环。

变更 / 新功能

  • 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 选项,用于将多个 BrowserWindows 收集到一个进程中。#11501
  • 添加 saveDialog 列出可用扩展名的功能。#11873
  • 支持额外的通知操作。#11647
  • 可以设置 macOS 通知关闭按钮的标题。#11654
  • 为 `menu.popup(window, callback)` 添加了条件。
  • 触控栏项目中的内存改进。#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
  • 修复了 menubar 切换 alt 键检测的焦点问题。#12235
  • 修复了 webview 中的不正确警告。#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
  • 改进了 vibrancy 支持。#12157 #12171 #11886
  • 修复了单例 fixture 中的计时问题。
  • 修复了 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
  • 修复了透明窗口在 DevTools 分离时失去透明度的问题。#11956
  • 修复了 Electron 应用程序取消重启或关机的问题。#11625

macOS

  • 修复了触控栏项目上的事件泄漏。#12624
  • 修复了深色模式下的托盘高亮显示。#12398
  • 修复了阻塞主进程进行异步对话。#12407
  • 修复了 setTitle 托盘崩溃。#12356
  • 修复了设置停靠菜单时的崩溃。#12087

Linux

  • 改进了 Linux 桌面通知。#12229 #12216 #11965 #11980
  • 改进了菜单的 GTK+ 主题支持。 #12331
  • 在 Linux 上优雅退出。 #12139
  • 使用应用程序名称作为托盘图标的默认工具提示。 #12393

Windows

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

下一步计划

Electron 团队正在努力支持更新版本的 Chromium、Node 和 V8。敬请期待 3.0.0-beta.1!