为 Electron 应用创建 Windows 安装程序
使用 Electron Packager 或 Forge 打包 Electron 应用,再把输出文件夹变成带向导、快捷方式和卸载程序的 Setup.exe,无需配置 electron-builder。
更新于 2026年10月31日 · 阅读约 4 分钟
Electron 会给你一个放在文件夹里的可运行 Windows 应用:MyApp.exe、几个 DLL、resources/app.asar 和 locales。把这个文件夹变成 Setup.exe 是另外一步,而常用工具(electron-builder、Squirrel、electron-forge 的 maker)各自都有一套配置、怪癖和对构建机器的要求。如果你只想要一个向导式安装程序,又不想为此去学这些工具,下面是一条捷径。
第 1 步:把应用打包到文件夹
你需要的是打包后的应用,而不是开发项目。下面两个工具都能生成一个可以直接分发的文件夹。
Electron Packager(一条命令,无需配置文件):
npx @electron/packager . MyApp --platform=win32 --arch=x64 --icon=build/icon.ico --overwrite
这会生成 MyApp-win32-x64/,里面包含 MyApp.exe。
Electron Forge,如果你的项目已经在用它:
npm run package
文件夹会出现在 out/ 下,例如 out/MyApp-win32-x64/。
两条命令在 Windows、macOS 和 Linux 上都能运行。--icon 参数(或 Forge 的 packagerConfig.icon)设置嵌入 MyApp.exe 的图标;请把这个 .ico 文件留着,安装程序也会用到。
打开文件夹,双击 MyApp.exe,确认打包后的应用能正常启动。如果需要 32 位版本,改用 --arch=ia32。
第 2 步:压缩文件夹
压缩 MyApp-win32-x64/ 的内容(.exe、DLL、resources/、locales/),而不是上一级的项目目录。zip 里的所有内容都会原样安装,所以不该发布的东西请不要放进去。
第 3 步:构建安装程序
- 把 zip 上传到 ExeTup。它会列出文件并选中
MyApp.exe作为主程序;确认即可。 - 填写应用名称、版本(与
package.json一致)、发布者,以及可选的许可协议。 - 选择安装范围。Electron 应用通常按当前用户安装,这不需要管理员权限,和基于 Squirrel 的安装程序做法一致。如果希望把应用装进 Program Files 供这台电脑上的所有人使用,就选择所有用户。
- x64 包保持 64 位。
- 为安装程序和快捷方式上传同一个
.ico,开启开始菜单和桌面快捷方式,如果需要也可以勾选“安装后启动”。 - 构建,下载
Setup.exe,然后在 Windows 上测试。
Electron 特有的注意事项
- 体积。 打包后的 Electron 应用未压缩时有 150 到 250 MB。安装程序使用 LZMA 固实压缩,通常能压到 60 到 90 MB。压缩前请先在价格区查看上传上限;该上限由站点设定。
- 自动更新。 这个安装程序不包含更新源。如果你在用
electron-updater或 Squirrel 的更新机制,请继续沿用;本指南面向的是每个新版本都以新安装程序发布的应用,这种方式更简单,对许多应用来说也足够了。 - 开机启动。 如果希望在安装时就做出选择,优先使用安装程序的“开机启动”选项,而不是
app.setLoginItemSettings;两者写入的是同一类 Run 项。 - 代码签名。 除非你自己签名,否则打包后的
MyApp.exe和Setup.exe都是未签名的。未签名的下载文件可能触发 SmartScreen 警告;参见 SmartScreen 指南。
与 electron-builder 的 NSIS 目标相比
electron-builder 也能生成 NSIS 安装程序,当你需要它的完整功能集(增量更新、自定义 NSIS 脚本、MSI 输出、签名钩子)时,它是个好工具。代价是要维护配置和构建环境。ExeTup 从打包后的文件夹构建同类的 NSIS 安装程序,选项在表单里设置,适合偶尔发布的团队,或者在 Mac 上构建、不想仅为安装程序维护一条 Windows 流水线的团队。
常见问题
可以上传 Electron 项目文件夹而不是打包后的应用吗?
不可以。安装程序包装的是 Electron Packager 或 Forge 的输出:也就是包含 MyApp.exe 的那个文件夹。源码项目、node_modules 和开发工具不属于其中。
Electron 应用应该选择哪种安装范围?
当前用户是常见选择,因为它无需管理员提示,直接安装到用户自己的文件夹。当 IT 部门需要为一台电脑上的每个账户部署应用时,选择所有用户。
卸载时应用仍在运行,安装程序能处理吗?
卸载程序会删除它安装的文件。请让用户先关闭应用,这和任何 Windows 程序一样;正在运行的 .exe 在退出之前无法被删除。
用 Tauri 或 NW.js 构建的应用也适用吗?
适用。任何包含 Windows .exe 及其文件的文件夹都可以打包。Tauri 自带打包器,但其普通的打包输出在这里同样可用。
相关指南
- 如何为 Windows 应用制作 Setup.exe(无需编写代码)了解 Setup.exe 实际做了什么、制作安装程序的三种方式,以及如何无需编写安装脚本,几分钟内把应用文件夹变成专业的安装程序。
- 在 Mac 或 Linux 上制作 Windows 安装程序在 macOS 或 Linux 上开发时生成 Setup.exe 的各种方案,从交叉编译 NSIS 到纯浏览器构建,以及如何在没有 Windows 电脑的情况下测试结果。
- '"Windows 已保护你的电脑":SmartScreen 警告是什么意思,怎样消除'为什么 Windows 会对新安装程序显示"未知发布者"警告,用户可以点什么,以及代码签名和信誉如何让警告消失。