Electron图标相关

核心:ICO converter:https://www.icoconverter.com/

报错如下:

bash 复制代码
> electron-builder

  • electron-builder  version=24.13.3 os=10.0.26200
  • loaded configuration  file=package.json ("build" field)
  • writing effective config  file=release\builder-effective-config.yaml
  • packaging       platform=win32 arch=x64 electron=28.3.3 appOutDir=release\win-unpacked
  ⨯ cannot execute  cause=exit status 1
                    errorOut=Reserved header is not 0 or image type is not icon for 'C:\Users\17687\Desktop\raw-converter\build\icon.ico'
Fatal error: Unable to set icon

                    command='C:\Users\17687\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.6.0\rcedit-x64.exe' 'C:\Users\17687\Desktop\raw-converter\release\win-unpacked\RAW Converter.exe' --set-version-string FileDescription 'RAW Converter' --set-version-string ProductName 'RAW Converter' --set-version-string LegalCopyright 'Copyright © 2026 RAW Converter Team' --set-file-version 1.0.0 --set-product-version 1.0.0.0 --set-version-string InternalName 'RAW Converter' --set-version-string OriginalFilename '' --set-version-string CompanyName 'RAW Converter Team' --set-icon 'C:\Users\17687\Desktop\raw-converter\build\icon.ico'
                    workingDir=
  • Above command failed, retrying 3 more times
  ⨯ cannot execute  cause=exit status 1
                    errorOut=Reserved header is not 0 or image type is not icon for 'C:\Users\17687\Desktop\raw-converter\build\icon.ico'
Fatal error: Unable to set icon

                    command='C:\Users\17687\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.6.0\rcedit-x64.exe' 'C:\Users\17687\Desktop\raw-converter\release\win-unpacked\RAW Converter.exe' --set-version-string FileDescription 'RAW Converter' --set-version-string ProductName 'RAW Converter' --set-version-string LegalCopyright 'Copyright © 2026 RAW Converter Team' --set-file-version 1.0.0 --set-product-version 1.0.0.0 --set-version-string InternalName 'RAW Converter' --set-version-string OriginalFilename '' --set-version-string CompanyName 'RAW Converter Team' --set-icon 'C:\Users\17687\Desktop\raw-converter\build\icon.ico'
                    workingDir=
  • Above command failed, retrying 2 more times
  ⨯ cannot execute  cause=exit status 1
                    errorOut=Reserved header is not 0 or image type is not icon for 'C:\Users\17687\Desktop\raw-converter\build\icon.ico'
Fatal error: Unable to set icon

                    command='C:\Users\17687\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.6.0\rcedit-x64.exe' 'C:\Users\17687\Desktop\raw-converter\release\win-unpacked\RAW Converter.exe' --set-version-string FileDescription 'RAW Converter' --set-version-string ProductName 'RAW Converter' --set-version-string LegalCopyright 'Copyright © 2026 RAW Converter Team' --set-file-version 1.0.0 --set-product-version 1.0.0.0 --set-version-string InternalName 'RAW Converter' --set-version-string OriginalFilename '' --set-version-string CompanyName 'RAW Converter Team' --set-icon 'C:\Users\17687\Desktop\raw-converter\build\icon.ico'
                    workingDir=
  • Above command failed, retrying 1 more times
  ⨯ cannot execute  cause=exit status 1
                    errorOut=Reserved header is not 0 or image type is not icon for 'C:\Users\17687\Desktop\raw-converter\build\icon.ico'
Fatal error: Unable to set icon

                    command='C:\Users\17687\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.6.0\rcedit-x64.exe' 'C:\Users\17687\Desktop\raw-converter\release\win-unpacked\RAW Converter.exe' --set-version-string FileDescription 'RAW Converter' --set-version-string ProductName 'RAW Converter' --set-version-string LegalCopyright 'Copyright © 2026 RAW Converter Team' --set-file-version 1.0.0 --set-product-version 1.0.0.0 --set-version-string InternalName 'RAW Converter' --set-version-string OriginalFilename '' --set-version-string CompanyName 'RAW Converter Team' --set-icon 'C:\Users\17687\Desktop\raw-converter\build\icon.ico'
                    workingDir=
  • Above command failed, retrying 0 more times

修复方案:

bash 复制代码
这个错误是因为你的 `icon.ico` 文件格式不正确。`rcedit` 工具要求 ICO 文件必须符合特定的格式规范。

## 解决方案:

### 1. **修复 ICO 文件格式**
确保你的 `icon.ico` 文件包含正确的图标格式:
- 必须包含至少一个有效的图标图像
- 建议包含多种尺寸:16x16, 32x32, 48x48, 64x64, 128x128, 256x256
- ICO 文件头必须正确(Reserved header 必须为 0)

### 2. **重新生成正确的 ICO 文件**

**方法 A:使用在线工具**
- 访问 https://icoconverter.com/
- 上传你的 PNG 图片(建议至少 256x256 像素)
- 选择输出格式为 ICO
- 下载生成的 ICO 文件

**方法 B:使用 ImageMagick**
```bash
# 安装 ImageMagick,然后执行:
magick convert input.png -define icon:auto-resize=256,128,96,64,48,32,16 build/icon.ico
```

**方法 C:使用在线工具 ico1111**
- https://ico1111.com/
- 支持多个尺寸

### 3. **验证 ICO 文件**
```bash
# 使用 Python 验证 ICO 文件格式
python -c "with open('build/icon.ico', 'rb') as f: print('Header:', f.read(6).hex())"
```
正确的 ICO 文件头应该是 `00000100` 开头。

### 4. **临时禁用图标(用于测试)**
如果急需构建,可以先在 `package.json` 中注释掉图标配置:

```json
{
  "build": {
    "win": {
      // "icon": "build/icon.ico",  // 临时注释
      "target": "nsis"
    }
  }
}
```

### 5. **推荐的图标文件结构**
确保你的图标文件包含以下尺寸:
- 256x256 (PNG 压缩)
- 128x128
- 64x64
- 48x48
- 32x32
- 16x16

### 6. **完整示例 - 创建正确的 ICO**
你可以使用这个在线工具专门生成符合 Electron 要求的 ICO:
- https://www.electron.build/icons
- 上传你的应用图标(建议 SVG 或大尺寸 PNG)
- 下载生成的 ICO 文件

### 7. **快速修复步骤**
1. 删除现有的 `build/icon.ico`
2. 准备一个高质量的 PNG 图片(至少 256x256)
3. 使用 https://icoconverter.com/ 转换
4. 选择 "Include the following sizes": 16,32,48,64,128,256
5. 下载并替换 `build/icon.ico`
6. 重新运行 `npm run dist` 或构建命令

如果问题仍然存在,请检查:
- ICO 文件是否损坏:尝试用图片查看器打开
- 文件路径是否正确:`C:\Users\17687\Desktop\raw-converter\build\icon.ico`
- 文件名大小写是否正确
相关推荐
Lvan的前端笔记几秒前
docker:基于docker的前端部署方案
前端·docker·状态模式
程序人生8881 分钟前
从“把隐私文件上传到别人云端“到本地可控:DocConverter Web 立项初心与架构选型
前端·图像处理·人工智能·opencv·架构·ocr·文心一言
省钱兄--zs3 分钟前
24小时自助健身房系统软件开发实战:从架构设计到部署全指南
java·数据仓库·spring boot·系统架构·需求分析
IT研究室6 分钟前
最新计算机毕业设计选题推荐-基于spring boot的智慧教学资源管理与互动交流平台-网站-文档指导-Java-springboot
java·spring boot·课程设计
蜗牛互联网8 分钟前
Java HttpClient 调用 Gemini 图像理解与金额字段校验
java·开发语言·人工智能·后端·python
开开心心就好9 分钟前
视频里的图片怎么提取?双击一下就导出
java·前端·人工智能·spring·智能手机·intellij-idea·excel
蜗牛互联网10 分钟前
Python Responses API视觉输入与本地金额校验最小实现
java·开发语言·人工智能·后端·python
爱喝水的小周11 分钟前
实验十 Vue‑Router 王者荣耀战绩查询 APP 开发实践
前端·javascript·vue.js
yexianglunbai12 分钟前
Vue 3 全面详解:从核心特性到工程化实践
前端·javascript·vue.js
程序猿_极客12 分钟前
【免费】分享一套优质的基于Java的智慧养老院管理系统的设计与实现(带可视化),源码+文档+视频详解(讲解)
java·spring boot·后端·养老院管理系统