跳转到主内容

8 篇博文 含有标签「生态系统」

'Blog posts about Electron's package ecosystem'

查看所有标签

回顾 2023 年生态系统

· 阅读时间:约 8 分钟

回顾 2023 年 Electron 开发者生态系统的改进和变化。


过去几个月里,我们在整个 Electron 生态系统中进行一些优化,以提升 Electron 应用程序的开发者体验! 这是 Electron HQ 最新增加的项目的快速概述。

Electron Forge 7 及其以后

Electron Forge 7 — 用于打包和分发 Electron 应用程序的一体化工具的最新主要版本 — 现已发布。

虽然 Forge 6 与 v5 是完全重写的,但 v7 的范围较小,但仍包含一些重大变更。 未来,我们将继续发布 Forge 的主要版本,以便进行必要的重大变更。

欲了解更多详情,请参阅 GitHub 上的完整描述 Forge v7.0.0 更新日志

重大变更

  • 切换 macOS notarization 工具到 notarytool 截至2023-11-01。 苹果废弃了 macOS notarization 的传统工具 altool,此次发布将其从 Electron Forge 中完全删除。
  • 最小 Node.js 支持增加到 v16.4.0: 在这个版本中,我们已将所需版本的 Node.js 设置为 16.4.0。
  • 废弃了对 electron-prebuildelectron-prebuild-compile 的支持: electron-prebuild 是 electron npm 模块的原始名称的支持,但在 v1.3.1 中 被 electron 代替了。 electron-prebuild-compile 是一个带有增强开发体验功能的二进制文件的替代方案,但最终作为一个项目被放弃了。

重点内容

  • Google Cloud Storage 发布器: 作为我们推动更好地支持静态自动更新的一部分,Electron Forge 现在支持直接发布到 Google Cloud Storage!
  • ESM forge.config.js 支持: Electron Forge 现在支持 ESM forge.config.js 文件。 (附言: 期待在 Electron 28 中支持 ESM entrypoint。)
  • Makers 现在可以并行运行 在 Electron Forge 6 中 Makers 由于 ✨ 遗产 ✨ 原因而顺序运行。 从那时起,我们已经测试了使用并行 Make 步骤的效果,并且没有出现任何负面影响。 当在同一平台上构建多个目标时,你应该会看到加速效果!
非常感谢!

🙇 对于 mahnunchik 为 GCS Publisher 和 Forge 配置中支持 ESM 的贡献,表示衷心感谢!

静态存储自动更新的改进

Squirel.Windows 和 Squirrel.Mac 是支持 Electron 的内置 autoUpdater 模块的特定平台更新技术。 两个项目都支持通过两种方法自动更新:

  • 一个与 Squirrel 兼容的更新服务器
  • 在静态存储提供商上托管的清单 URL (例如 AWS、谷歌云平台、微软 Azure 等)

传统上,更新服务器方法一直被认为是 Electron 应用的推荐方法(并提供了额外的更新逻辑自定义),但它也有一个主要的缺点 — 如果应用是闭源的,它需要维护自己的服务器实例。

另一方面,虽然静态存储方法一直是可行的,但在 Electron 内部没有文档记录,并且在 Electron 工具包中支持不足。

通过 @MarshallOfSound 的杰出工作,无服务器自动应用程序更新已经得到了显著简化:

  • Electron Forge 的 Zip 和 Squirrel.Windows 制作工具现在可以配置为输出与 autoUpdater 兼容的更新清单。
  • 现在,update-electron-app 的一个新的主要版本(v2.0.0)可以读取这些生成的清单,作为 update.electronjs.org 服务器的替代方案。

一旦你的 Makers 和 Publishers 配置好了并上传更新清单到云文件存储,你只需要几行配置代码就可以启用自动更新。

const { updateElectronApp, UpdateSourceType } = require('update-electron-app');

updateElectronApp({
updateSource: {
type: UpdateSourceType.StaticStorage,
baseUrl: `https://my-manifest.url/${process.platform}/${process.arch}`,
},
});
延伸阅读

📦 想要了解更多? 详细指南见 Forge 的自动更新文档

@electron/ 扩展宇宙

Electron 刚开始时,社区发布了许多软件包,以增强开发、包装和分发 Electron 应用的体验。 随着时间的推移,其中许多软件包都被纳入 Electron 的 GitHub 组织,核心团队承担了维护负担。

在2022年,我们开始将所有这些 first-party 工具整合到 npm 的 @electron/ 命名空间下。 此变更意味着以前被称为 electron-foo 的软件包现在在 npm上被称为 @electron/foo,而以前命名为 electron/electron-foo 的仓库现在在 GitHub 上被称为 electron/foo。 这些变化有助于明确划分 first-party 项目和 userland 项目。 这包括许多常用的软件包,例如:

  • @electron/asar
  • @electron/fuses
  • @electron/get
  • @electron/notarize
  • @electron/osx-sign
  • @electron/packager
  • @electron/rebuild
  • @electron/remote
  • @electron/symbolicate-mac
  • @electron/universal

从现在开始,我们发布的所有 first-party 软件包都将在 @electron/ 命名空间中。 这条规则有两个例外情况:

  • Electron 核心将继续在 electron 软件包下发布。
  • Electron Forge 将继续在 @electron-forge/ namespace 下发布其所有的 monorepo 软件包。
寻找 Star

⭐ 在这个过程中,我们意外地将 electron/packager 仓库设为私有,这不幸地导致我们的 GitHub 星星计数被删除(擦除之前超过9000颗)。 如果你是 Packager 的活跃用户,我们将非常感谢你的 ⭐ Star ⭐ !

介绍 @electron/windows-sign

从 2023 年 6 月 1日开始,行业标准要求 Windows 代码签名证书的密钥必须存储在符合 FIPS 标准的硬件上。

在实践中,这意味着对于在 CI 环境中构建和签名的应用来说,代码签名变得更加困难,因为许多 Electron 工具使用证书文件和密码作为配置参数,并尝试使用硬编码逻辑从中进行签名。

这种情况对于 Electron 开发人员来说是一个常见的痛点,这就是为什么我们一直在努力寻找一个更好的解决方案,将 Windows 代码签名独立到一个单独的步骤中,类似于 @electron/osx-sign 在 macOS 上的做法。

在未来,我们计划将此软件包完全整合到 Electron Forge 工具链中,但目前它独立存在。 该软件包目前可通过 npm install --save-dev @electron/windows-sign 进行安装,并可通过编程或命令行界面(CLI)进行使用。

请尝试在项目的 issue 跟踪器中给我们反馈!

下一步

我们将在下个月进入我们每年 12 月安静的时期。 在这样做的同时,我们将考虑如何在 2024 年使 Electron 开发体验更好。

你是否希望看到我们接下来的工作? 请告诉我们!

介绍 Electron Forge 6

· 阅读时间:约 9 分钟

我们很高兴地宣布 Electron Forge v6.0.0 现已推出! 此版本标志着自 2018 年以来 Forge 的第一个主要版本,并将该项目从 electron-userland 转移到 GitHub 上的 electron 组织。

继续阅读以了解新功能以及您的应用如何调用 Electron Forge!

Electron Forge 是什么?

Electron Forge 是一个用于打包和分发 Electron 应用程序的工具。 它将 Electron 的构建工具生态系统统一到一个可扩展的界面中,这样每个人都可以直接上手制作 Electron 应用。

它的亮点:

  • 📦 应用打包和代码签名
  • 🚚 Windows、macOS 和 Linux 上的可定制安装程序(DMG、deb、MSI、PKG、AppX 等)
  • ☁️ 云提供商(GitHub、S3、Bitbucket 等)的自动化发布流程
  • ⚡️ 易于使用的 Webpack 和 TypeScript 样板模板
  • ⚙️ 原生 Node.js 模块支持
  • 🔌 可扩展的 JavaScript 插件 API
延伸阅读

访问 Why Electron Forge 文档,了解更多关于 Forge 的理念和架构信息。

v6 中有什么新功能?

完全重构

从 v1 到 v5,Electron Forge 是在现已停止的 electron-compile 项目的基础上进行开发的。 Forge 6 是对项目的完全重构,具有新的模块化架构,可以扩展以满足大多数 Electron 应用程序的需求。

在过去的几年里,Forge v6.0.0-beta 已经实现了与 v5 相同的功能,并且代码流失速度显着放缓,使该工具为普遍采用做好了准备。

不要安装错误的软件包

对于 v5 及更低的版本,Electron Forge 已在 npm 上发布了 electron-forge 包。 从 v6 重写开始,Forge 被设计为一个带有许多较小项目的 monorepo 项目。

官方支持

从历史上看,Electron 的维护者对构建工具不感兴趣,而是把这个任务留给各个由社区维护的工具包。 然而,随着 Electron 项目的成熟,新的 Electron 开发人员越来越难以理解他们需要哪些工具来构建和分发他们的应用程序。

为了在分发过程中帮助指导 Electron 开发人员,我们决定让 Forge 成为 Electron 的官方内置的构建体系

在过去的一年里,我们一直在慢慢地将 Forge 集成到官方的 Electron 文档中,最近我们将 Forge 从其在 electron-userland/electron-forge 的旧地址转移到了 electron/forge 存储库。 现在,我们终于准备好向广大用户发布 Electron Forge 了!

入门指南

初始化一个新的 Forge 项目

可以使用 create-electron-app CLI 脚本来搭建一个新的 Electron Forge 项目。

yarn create electron-app my-app --template=webpack
cd my-app
yarn start

该脚本将在 my-app 文件夹中创建一个 Electron 项目,其中包含完整的 JavaScript Bundling 及预先配置好的构建体系。

有关详细信息,请参阅 Forge 文档中的入门指南

优先支持 webpack

上面的代码片段使用了 Forge 的 Webpack 模板,我们建议将其作为新 Electron 项目的初始化配置。 此模板是围绕 @electron-forge/plugin-webpack 插件构建的,该插件以几种方式将 webpack 与 Electron Forge 集成,包括:

  • 使用 webpack-dev-server 增强本地开发流程,包括在渲染器中支持 HMR;
  • 在应用程序打包之前处理 webpack 包的构建逻辑; 并且
  • 在 webpack bundling 过程中添加对 Native Node 模块的支持。

如果您需要 TypeScript 支持,请考虑改用 Webpack + TypeScript 模板。

导入现有项目

Electron Forge CLI 还包含现有 Electron 项目的导入命令。

cd my-app
yarn add --dev @electron-forge/cli
yarn electron-forge import

当您使用 import 命令时,Electron Forge 将添加一些核心依赖项并创建一个新的 forge.config.js 配置。 如果您有任何现有的构建工具(例如 Electron Packager、Electron Builder 或 Forge 5),它将尝试迁移尽可能多的设置。 您的某些现有配置可能需要手动迁移。

手动迁移详细信息可以在 Forge 导入文档中找到。 如果您需要帮助,请访问我们的 Discord 服务器!

为什么要切换到 Forge?

如果您已经有了用于打包和发布 Electron 应用程序的工具,那么采用 Electron Forge 带来的好处仍然可以超过最初地转换成本。

我们认为使用 Forge 有两个主要好处:

  1. Forge 在 Electron 支持的新功能出现后,会立即得到这些新功能并用于应用程序的构建。 在这种情况下,您不需要自己编写新的工具去实现,或者在升级之前等待其他更新包实现。 有关最近的示例,请参阅 macOS 通用二进制文件ASAR 完整性检查

  2. Forge 的多包架构使其易于理解和扩展。 是由于 Forge 由许多具有明确职责的较小包组成,因此更容易遵循代码流。 此外,Forge 的可扩展 API 设计意味着你可以在所提供的配置选项之外为高级用例编写自己的额外构建逻辑。 有关编写自定义 Forge 插件、制作者和发布者的更多详细信息,请参阅文档的扩展 Electron Forge 部分。

重大变更

Forge 6 已经在 beta 阶段花了很长时间,它的发布节奏也逐渐放缓。 然而,我们在 2022 年下半年加速了开发,并利用在 v6.0.0 稳定版本之前的最后几个版本推出了一些最终的重大更改。

如果您是 Electron Forge 6 测试版用户,请参阅 v6.0 GitHub 更新日志 了解最近测试版中所做的重大变更 (>=6.0.0-beta.65)。

完整的更改和提交列表可以在仓库的 CHANGELOG.md 中找到。

提交您的反馈!

告诉我们您的想法! Electron Forge 团队一直在尝试提升用户在构建项目时候的开发体验。

您可以通过提交功能请求、提交 issues 或直接联系我们来进行反馈及改进 Electron Forge! 您也可以加入我们的 官方 Electron Discord 英文社区,那里有一个专门用于 Electron Forge 讨论的频道。

如果您想在 https://electronforge.io 上对 Forge 文档提供任何反馈,我们有一个 GitBook 实例同步到 electron-forge/electron-forge-docs 存储库。

Spectron 弃用通知

· 阅读时间:约 2 分钟

Spectron 将于 2022 年 2 月 1 日弃用。


Beginning in February 2022, Spectron will be officially deprecated by the Electron team.

Why Deprecate Spectron?

While Spectron has consistently put out new releases for each new version of Electron, the project has had very little maintenance and improvements for well over a year, and currently has no full-time maintainers. With the remote module moving outside of Electron core and into an external module in Electron 14, Spectron will require a major rewrite to continue working reliably.

After reviewing several available options for Spectron's continued maintenance, the Electron team has decided to deprecate Spectron in 2022.

Deprecation Timeline

The following is our planned deprecation timeline:

  • November 2021 - January 2022: The Electron team will continue to accept pull requests from the community.
  • January 2022: A final version of announcement warning about Spectron's deprecation will be released.
  • February 1, 2022: Spectron's repo will be marked as "archived". No more pull requests will be accepted.

Following February 1st, 2022, Electron will continue to leave the Spectron repo up indefinitely, so that others are welcome to fork or use the existing code for their projects. We hope this will help provide a longer transition to any projects that may still depend on Spectron.

Alternatives to Spectron

如果您当前在项目中使用 Spectron,并希望迁移到替代测试解决方案,您可以在此处阅读我们的 自动化测试指南

我们目前有其他几种推荐替代Spectron的办法,包括Playwright和WebDriverIO。 Official tutorials for each option can be found in our Automated Testing documentation.

接下来

We here on the Electron team appreciate you using Spectron and Electron. 我们理解,你们中的许多人都依赖 Spectron 来测试您的应用程序,我们希望让这种过渡尽可能轻松。 感谢您选择Electron!

更容易地为开源应用程序提供自动更新

· 阅读时间:约 4 分钟

今天,我们发布了一个免费的、开源的托管更新 web服务 和配套的 npm 包,以便为开源 Electron 应用程序启用便捷的自动更新。 这使得应用程序开发人员能够花更少的时间考虑部署,而多去为用户提供高质量的体验。


The new updater module in action

让生活更轻松

Electron有一个autoUpdater API,让应用程序能够从远程终端获取元数据以检查更新,可以在后台下载并且自动安装。

启用这些更新对许多Electron应用开发者来说是部署过程中一个繁琐的步骤,因为它需要部署一个 web 服务器并且这只是为了提供应用版本历史元数据。

今天我们公布了一个新的应用自动更新的解决方案。 如果你的Electron应用在公开的GitHub仓库中,并且你正在使用GitHub Releases发布构建版本,你可以使用这项服务向你的用户提供持续的应用更新。

使用新模块

为了减少配置,我们创建了update-electron-app,一个npm模块,它与新的 update.electronjs.org web服务集成在一起。

安装模块

npm install update-electron-app

在您的应用程序的 main进程中的任何地方调用:

require('update-electron-app')();

搞定! 该模块将在应用启动时检查更新,然后每10分钟检查一次。 当它发现有更新时,它将在后台自动下载,并在更新就绪时显示对话框。

迁移现有应用

已经使用Electron的autoUpdater API的应用程序也可以使用这项服务。 为此,你可以定制update-electron-app模块,或者直接与update.electronjs.org集成

可替代方案

如果你使用electron-builder来打包你的应用,你可以使用它内置的更新程序。 有关详细信息,请参见electronic.build/auto-update

如果你的应用是私人的,你可能需要部署属于你自己的更新服务器。 有很多开源工具可以做到这一点,包括Zeit的Hazel和Atlassian的Nucleus。 有关更多信息,请参阅部署一个更新服务器教程。

谢谢!

感谢Julian Gruber帮助设计和构建这个简单且可扩展的web服务。 感谢Zeit的工作人员,他们提供了开源的Hazel服务,我们从中获得了设计灵感。 感谢Samuel Attard的代码评审。 感谢Electron社区帮助测试这项服务。

🌲 为 Electron 应用的美好未来干杯!

宣布 Electron 中的 TypeScript 支持

· 阅读时间:约 6 分钟

electron npm 包现在包含一个 TypeScript 定义文件,提供整个Electron API的详细注释。 这些注释可以改进您的 Electron 开发 感受 ,即使您正在编写原版JavaScript 只需要运行 npm install electron 就可以在您的项目中获得最新的 Electron 类型注释。


TypeScript 是一种由Microsoft创建的开源编程语言。 它是一个添加了对 静态类型的支持并扩展了语言的 JavaScript 超集。 TypeScript 社区近年来迅速增长。 TypeScript 在 最近的Stack Overflow开发者调查 名列最受开发者喜爱的编程语言中。 TypeScript 被描述为 "增强的JavaScript", GitHub, Slack, 和 Microsoft 都用它来写成可缩放的 Electron 应用,这些应用被数以百万计的人使用 。

TypeScript 支持 JavaScript 中的许多较新的语言功能,如 类,对象析构, 异步,但其真正的不同的 功能是 类型注释。 声明程序所期望的输入和输出数据类型可以通过帮助您在编译时找到错误降低错误,类型注释还可以作为程序工作方式的正式声明

当库使用原版 Javascript 编写时,类型常常很模糊 定义通常是写文档时的事后思考。 函数通常可以 接受更多的类型,而不是文件记录的类型, 或者函数可能有隐藏的 未被记录的约束,因此可能导致运行时错误。

TypeScript 用 定义文件 解决了这个问题。 TypeScript 定义文件描述了库的所有函数和它的 预期输入和输出类型。 当库作者将一个 TypeScript 定义文件与其已发布的库捆绑在一起时, 该库的使用者可以在他们的 编辑器 中探索它的API,并立即开始使用它。 常常不需要查阅图书馆的 文档。

很多受欢迎的项目,例如 , Vue. s, node-github (现在是 Electron! )编译他们自己的定义文件并将它与他们的 已发布的 npm 软件包捆绑在一起。 对于那些不将自己的定义文件捆绑在一起的项目, 通常有 DefinitelyTyped, 社区维护定义文件的第三方生态系统。

安装

从 1.6.10版本开始,Electron 的每次版本更新都包含它自己的 TypeScript 定义文件。 当您从 npm 安装 electron 软件包时, electron.d.ts 文件会自动与 安装的软件包捆绑在一起。

最安全的 安装 Electron 的方式是使用准确的版本号:

npm install electron --save-dev --save-exact

或者如果您正在使用 yarn

yarn add electron --dev --exact

如果您已经使用了第三方定义,例如 @types/electron@types/node, 您应该将它们从您的 Electron 项目中删除,以防止任何冲突

定义文件来自我们的 结构化 API 文档, 因此它将始终与 Electron 的 API 文档 一致。 只要安装electron,你就能获取到和你的版本一致的最新TypeScript定义

用法

关于如何安装和使用Electron新的 TypeScript 定义的概要, 观看这个简短的演示:

如果您正在使用 Visual Studio Code,您已经 得到了内置的 TypeScript 支持。 还有社区维护的 插件用于 Atom, Sublime, vim, 和 其他编辑器

一旦您的编辑器配置好了 TypeScript ,您将开始看到更多的 基于上下文的行为,例如自动补全,内嵌方法引用, 参数检查等等。

Method autocompletion

Method reference

Argument checking

开始使用 TypeScript

如果你刚刚知道 TypeScript 并想了解更多信息, 此 来自Microsoft 的介绍视频 提供了关于为何创建这门语言的很好的概述。 如何工作, 如何使用它, 以及它的未来。

在官方的 TypeScript 网站上还有 HandbookPlayground

因为TypeScript 是 JavaScript 的超集,您现有的 JavaScript 代码 已经是有效的 TypeScript。 这意味着您可以根据需要逐步将现有的 JavaScript 项目转换为 TypeScript 并使用新语言功能。

谢谢!

没有Electron的 开源社区维护者的帮助,这个项目是不可能实现的。 感谢 Samuel Attard, Felix Rieseberg, Birunthan Mohanathas, Milan Burda, Brendan Forster, 和许多其他人的错误修复、文件改进、 和技术指导。

支持

如果您在使用 Electron 新的 TypeScript 定义文件时遇到任何问题, 请在 electron-typescript-definition 仓库中提交一个Issue。

尽情使用 TypeScript 吧!

Electron Userland

· 阅读时间:约 3 分钟

We've added a new userland section to the Electron website to help users discover the people, packages, and apps that make up our flourishing open-source ecosystem.


github-contributors

Origins of Userland

Userland is where people in software communities come together to share tools and ideas. The term originated in the Unix community, where it referred to any program that ran outside of the kernel, but today it means something more. When people in today's Javascript community refer to userland, they're usually talking about the npm package registry. This is where the majority of experimentation and innovation happens, while Node and the JavaScript language (like the Unix kernel) retain a relatively small and stable set of core features.

Node and Electron

Like Node, Electron has a small set of core APIs. These provide the basic features needed for developing multi-platform desktop applications. 这个设计理念让 Electron 能够保持灵活而不被过多的规定有关于如何应该被使用。

Userland is the counterpart to "core", enabling users to create and share tools that extend Electron's functionality.

Collecting data

To better understand the trends in our ecosystem, we analyzed metadata from 15,000 public GitHub repositories that depend on electron or electron-prebuilt

We used the GitHub API, the libraries.io API, and the npm registry to gather info about dependencies, development dependencies, dependents, package authors, repo contributors, download counts, fork counts, stargazer counts, etc.

We then used this data to generate the following reports:

Filtering Results

Reports like app dependencies and starred apps which list packages, apps, and repos have a text input that can be used to filter the results.

As you type into this input, the URL of the page is updated dynamically. This allows you to copy a URL representing a particular slice of userland data, then share it with others.

babel

More to come

This first set of reports is just the beginning. We will continue to collect data about how the community is building Electron, and will be adding new reports to the website.

All of the tools used to collect and display this data are open-source:

If you have ideas about how to improve these reports, please let us know opening an issue on the website repository or any of the above-mentioned repos.

Thanks to you, the Electron community, for making userland what it is today!

辅助工具

· 阅读时间:约 3 分钟

创建具有辅助功能的应用程序是很重要的,我们很乐意介绍DevtronSpectron,这两个新功能能让开发者们有机会让它们的应用程序对每个人都更加可用。


Electron 应用中有关辅助功能的开发和网站是相似的因为两者最终使用的都是HTML. 然而, 对于Electron应用, 你不能使用在线的辅助功能审查者, 因为你的应用没有一个URL可以提供给审查者.

这些新功能将这些审计工具带到您的Electron应用程序中。 您可以选择使用 Spectron 将审计工具添加到测试中,也可以在 DevTron 的 DevTools 中使用它们。 继续阅读可简要了解这两个工具或阅读 辅助功能文档 以获取更加详细的信息。

Spectron

在测试框架Spectron中,你可以审查应用程序中的每个 window 和 <webview> 标签。 例如:

app.client.auditAccessibility().then(function (audit) {
if (audit.failed) {
console.error(audit.message);
}
});

你可以从这里Spectron文档阅读到更多有关于这个功能的信息。

Devtron

在 Devtron 中, 有一个新的辅助功能选项卡, 允许您对应用程序中的某一个页面进行审核, 并对审核结果进行排序和筛选。

devtron 截图

这两种工具都使用了Google 为 Chrome 所构建的 辅助功能开发工具 库。 您可以在该 repository's wiki 上更加详细的了解这个库使用了哪些辅助功能审核规则。

如果您知道其他很好的Electron辅助功能工具, 请创建一个pull request来将它们添加到 辅助功能文档 中。

Mac App Store and Windows Auto Updater on Electron

· 阅读时间:约 2 分钟

Recently Electron added two exciting features: a Mac App Store compatible build and a built-in Windows auto updater.


Mac App Store Support

As of v0.34.0 each Electron release includes a build compatible with the Mac App Store. Previously an application built on Electron would not comply with Apple's requirements for the Mac App Store. Most of these requirements are related to the use of private APIs. In order to sandbox Electron in such a way that it complies with the requirements two modules needed to be removed:

  • crash-reporter
  • auto-updater

Additionally some behaviors have changed with respect to detecting DNS changes, video capture and accessibility features. You can read more about the changes and submitting your app to the Mac App store in the documentation. The distributions can be found on the Electron releases page, prefixed with mas-.

Related Pull Requests: electron/electron#3108, electron/electron#2920

Windows Auto Updater

In Electron v0.34.1 the auto-updater module was improved in order to work with Squirrel.Windows. This means that Electron ships with easy ways for auto updating your app on both OS X and Windows. You can read more on setting up your app for auto updating on Windows in the documentation.

Related Pull Request: electron/electron#1984