{ "name": "E-tools", "version": "1.3.6", "description": "e-tools is an Open-Source project to support tools for desktop Mac, Windows, and Linux. ", "main": "main.js", "scripts": { "start": "electron .", "dev": "electron . --debug", "test": "mocha && standard", "pack:test": "electron-builder --dir", "pack": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder --dir", "pack:all": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder --platform=all", "dist": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder", "dist:mac": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder -m", "dist:win": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder -w", "dist:linux": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder -l", "package": "npm-run-all package:*", "package:mac": "electron-packager ./app --overwrite --platform=darwin --arch=x64 --out=out --icon=app/assets/app-icon/mac/app.icns --osx-sign.identity='Developer ID Application: GitHub'", "package:win": "electron-packager ./app --overwrite --platform=win32 --arch=ia32 --out=out --icon=app/assets/app-icon/win/app.ico", "package:linux": "electron-packager ./app --overwrite --platform=linux --arch=x64 --out=out", "package:sign-exe": "signcode './out/E-tools-win32-ia32/e-tools.exe' --cert ~/e-tools.p12 --prompt --name 'E-tools' --url 'http://blog.suremotoo.site/e-tools/'", "package:installer": "node ./script/installer.js", "package:sign-installer": "signcode './out/windows-installer/EtoolsSetup.exe' --cert ~/E-tools.p12 --prompt --name 'E-tools' --url 'http://blog.suremotoo.site/e-tools/'", "package:mas": "./script/mas.sh", "windows-store": "node ./script/windows-store.js", "release": "node ./script/release.js", "verify": "echo 当前ELECTRON_MIRROR=%ELECTRON_MIRROR% && echo 当前electron-builder镜像=%electron-builder-binaries_mirror%" }, "repository": { "type": "git", "url": "git+https://github.com/Suremotoo/e-tools.git" }, "keywords": [ "electron", "desktop", "tools" ], "author": "Suremotoo", "email": "[email protected]", "license": "MIT", "bugs": { "url": "https://github.com/Suremotoo/e-tools/issues" }, "homepage": "https://github.com/Suremotoo/e-tools#readme", "build": { "appId": "site.suremotoo.e-tools", "copyright": "Suremotoo", "productName": "E-tools", "dmg": {}, "mac": { "icon": "assets/app-icon/mac/app.icns" }, "win": { "icon": "assets/app-icon/win/app.ico" }, "linux": { "icon": "assets/app-icon/png/1024.png" } }, "devDependencies": { "cross-env": "^10.0.0", "electron": "^3.0.0", "electron-builder": "^26.0.12" }, "dependencies": { "body-parser": "^1.18.3", "electron-packager": "^12.0.1", "electron-store": "^2.0.0", "express": "^4.16.3", "glob": "^7.1.2", "sql-formatter": "^2.3.0", "uuid": "^3.3.2" } } 这是原始代码,我需要打包成exe桌面应用
时间: 2025-08-23 18:58:31 AIGC 浏览: 33
<think>我们正在解决用户关于使用electron-builder打包生成Windows .exe文件的问题。根据之前的讨论,用户可能遇到了环境变量配置问题(如ELECTRON_MIRROR设置错误)以及打包配置问题(如未生成latest.yml文件)。下面将提供详细的配置和流程说明。
### 一、正确配置环境变量(解决Electron镜像下载问题)
在Windows系统中,设置环境变量有两种方式:
#### 方式1:临时设置(当前命令窗口有效)
```cmd
set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
set ELECTRON_BUILDER_BINARIES_MIRROR=https://registry.npmmirror.com/-/binary/electron-builder-binaries/
npm run dist
```
#### 方式2:永久设置(推荐)
1. 打开系统环境变量设置(Win+R,输入`sysdm.cpl` → 高级 → 环境变量)
2. 在**系统变量**中新建:
- 变量名:`ELECTRON_MIRROR`
变量值:`https://npmmirror.com/mirrors/electron/`
- 变量名:`ELECTRON_BUILDER_BINARIES_MIRROR`
变量值:`https://registry.npmmirror.com/-/binary/electron-builder-binaries/`
3. 重启命令提示符窗口后生效。
### 二、配置package.json(关键打包设置)
#### 1. 基本配置
```json
{
"name": "my-electron-app",
"version": "1.0.0",
"main": "main.js",
"scripts": {
"start": "electron .",
"dist": "electron-builder --win"
},
"build": {
"appId": "com.example.myapp",
"win": {
"target": "nsis", // 生成安装包
"icon": "build/icon.ico"
},
// 必须配置publish才能生成latest.yml(用于自动更新)
"publish": {
"provider": "generic",
"url": "http://your-update-server.com/path/" // 替换为实际更新地址
}
},
"devDependencies": {
"electron": "^29.0.0",
"electron-builder": "^24.13.3"
}
}
```
> **关键说明**:
> - `target: "nsis"`:生成标准的Windows安装程序(.exe)
> - `publish`配置:必须设置才能生成latest.yml(自动更新必需文件)[^2][^3]
#### 2. 生成安装包流程
```cmd
npm install
npm run dist
```
输出文件位置:`dist/`目录下
### 三、文件结构要求
```
my-electron-app/
├── package.json
├── main.js # 主进程文件
├── preload.js # 预加载脚本(可选)
├── build/
│ └── icon.ico # 应用图标(必须256x256像素)
└── src/ # 渲染进程文件
└── index.html
```
> 图标要求:Windows系统必须使用`.ico`格式,建议尺寸256x256
### 四、常见问题解决方案
#### 问题1:打包时报错`无法下载Electron`
- ✅ 检查环境变量`ELECTRON_MIRROR`是否生效
- ✅ 清除缓存:`npm cache clean --force`
#### 问题2:未生成latest.yml文件
- ✅ 确认`package.json`中配置了`publish`字段[^3]
- ✅ 打包目标必须是安装程序(不能是`"target": "dir"`)[^2]
#### 问题3:安装包图标不显示
- ✅ 确认图标路径正确且为`.ico`格式
- ✅ 使用专业转换工具(如[CloudConvert](https://cloudconvert.com/png-to-ico))
### 五、完整打包流程示例
```cmd
# 1. 初始化项目(已存在可跳过)
npm init -y
# 2. 安装依赖
npm install electron --save-dev
npm install electron-builder --save-dev
# 3. 配置环境变量(临时)
set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
set ELECTRON_BUILDER_BINARIES_MIRROR=https://registry.npmmirror.com/-/binary/electron-builder-binaries/
# 4. 创建必要文件
# main.js(主进程)
# index.html(渲染进程)
# 5. 执行打包
npm run dist
```
成功输出:
```
• writing effective config file=dist/builder-effective-config.yaml
• packaging platform=win32 arch=x64 electron=29.1.0 appOutDir=dist/win-unpacked
• building target=nsis file=dist/MyApp Setup 1.0.0.exe
• building block map blockMapFile=dist/MyApp Setup 1.0.0.exe.blockmap
```
生成文件:
```
dist/
├── MyApp Setup 1.0.0.exe # 安装程序
├── latest.yml # 自动更新配置文件
└── builder-debug.yml # 调试配置
```
### 六、进阶配置(可选)
#### 1. 自定义安装界面
```json
{
"build": {
"win": {
"target": [
{
"target": "nsis",
"arch": ["x64"],
"oneClick": false, // 启用高级安装界面
"allowToChangeInstallationDirectory": true
}
]
}
}
}
```
#### 2. 签名应用程序(避免安全警告)
```json
{
"build": {
"win": {
"certificateFile": "build/cert.pfx",
"signingHashAlgorithms": ["sha256"]
}
}
}
```
> 注意:代码签名证书需购买(约$200/年),测试阶段可跳过
---
### 相关问题
1. 如何为Electron应用配置自动更新功能?
2. electron-builder打包时如何排除特定文件?
3. 为什么生成的安装包在部分Windows系统无法运行?
4. 如何减小electron-builder打包后的文件体积?
5. 如何为Electron应用创建桌面快捷方式和开始菜单项?
> 提示:在配置过程中,如果遇到环境变量不生效的情况,请优先检查变量名拼写(注意Windows环境变量不区分大小写,但需确保正确)[^1]。科学实验中的变量控制原则提醒我们,每次只改变一个配置变量并观察结果变化,是定位问题的有效方法[^2]。
[^1]: Electron-builder打包安装包——编译篇
[^2]: electron-builder打包未生成latest.yml
[^3]: electron-builder打包后没生成latest.yml文件问题</think>### Electron-builder 打包生成 Windows .exe 文件的完整配置流程
#### 一、基础环境配置(解决镜像问题)
1. **永久环境变量设置**(推荐):
```cmd
:: 设置 Electron 镜像源
setx ELECTRON_MIRROR "https://npmmirror.com/mirrors/electron/"
:: 设置 electron-builder 二进制镜像
setx ELECTRON_BUILDER_BINARIES_MIRROR "https://registry.npmmirror.com/-/binary/electron-builder-binaries/"
```
重启终端后生效[^1]。
2. **临时环境变量设置**(单次有效):
```cmd
set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
set ELECTRON_BUILDER_BINARIES_MIRROR=https://registry.npmmirror.com/-/binary/electron-builder-binaries/
npm run dist
```
#### 二、package.json 关键配置
```json
{
"name": "your-app",
"version": "1.0.0",
"main": "main.js",
"scripts": {
"dist": "electron-builder --win"
},
"build": {
"appId": "com.example.yourapp",
"win": {
"target": "nsis", // 生成安装程序
"icon": "build/icon.ico" // 必须256x256像素
},
// 必须配置才能生成latest.yml
"publish": {
"provider": "generic",
"url": "https://your-update-server.com/updates/"
}
}
}
```
#### 三、打包执行流程
1. 安装依赖:
```cmd
npm install electron-builder --save-dev
```
2. 创建应用图标:
- 将 `icon.ico` (256x256) 放在 `/build` 目录
3. 执行打包命令:
```cmd
npm run dist
```
#### 四、生成文件说明
成功打包后会在 `/dist` 目录生成:
```
dist/
├── your-app Setup 1.0.0.exe # 安装程序
├── latest.yml # 自动更新配置文件[^2][^3]
└── win-unpacked/ # 免安装目录
```
#### 五、常见问题解决
1. **未生成 latest.yml**:
- 确认 `publish` 配置已添加[^3]
- 确保 `target` 不是 `"dir"`(应设为 `"nsis"` 等安装程序类型)[^2]
2. **图标不显示**:
```json
"build": {
"win": {
"icon": "build/icon.ico" // 路径必须正确
}
}
```
3. **安装包无签名警告**:
```json
"build": {
"win": {
"certificateFile": "path/to/cert.pfx",
"signingHashAlgorithms": ["sha256"]
}
}
```
#### 六、完整示例配置
```json
{
"name": "e-tools",
"version": "1.3.6",
"scripts": {
"dist": "electron-builder --win --x64"
},
"build": {
"appId": "com.company.e-tools",
"productName": "ETools",
"win": {
"target": "nsis",
"icon": "build/icon.ico",
"publisherName": "Your Company"
},
"publish": {
"provider": "generic",
"url": "https://download.yourdomain.com/updates/"
},
"nsis": {
"oneClick": false, // 启用安装向导
"allowToChangeInstallationDirectory": true
}
}
}
```
> **验证命令**:`npm run dist` 后检查 `/dist` 目录是否包含 `.exe` 和 `latest.yml` 文件[^2][^3]。
---
### 相关问题
1. 如何为 Electron 应用配置自动更新功能?
2. electron-builder 打包时如何排除不必要的文件减小体积?
3. 为什么生成的安装包在部分 Windows 系统报安全警告?
4. 如何为 electron-builder 配置代码签名证书?
5. 除 nsis 外,electron-builder 支持哪些 Windows 安装包格式?
[^1]: Electron-builder打包安装包——编译篇
[^2]: electron-builder打包未生成latest.yml
[^3]: electron-builder打包后没生成latest.yml文件问题
阅读全文