3.6 KiB
3.6 KiB
工作流自动打包单文件 EXE 说明
🎯 功能概述
现在工作流会自动完成以下步骤:
- ✅ 构建 Windows 应用(Debug 和 Release)
- ✅ 自动下载打包工具
- ✅ 创建单文件 EXE
- ✅ 上传打包结果
🚀 工作流程
步骤 1: Enigma Virtual Box 打包(首选方案)
- 工具: 自动下载 Enigma Virtual Box
- 输出:
hostexecutor_single.exe - 特点: 真正的单文件,高压缩率
步骤 2: 7-Zip 自解压方案(备选方案)
- 工具: 使用系统自带的 7-Zip
- 输出:
hostexecutor_package.exe - 特点: 自解压安装包,兼容性更好
步骤 3: 产物上传
- 单文件 EXE:
windows-single-exe工件 - 原始文件:
windows-release-build工件
📦 打包产物
成功时你会得到:
工件列表:
├── windows-debug-build # Debug 版本(多文件)
├── windows-release-build # Release 版本(多文件)
└── windows-single-exe # 单文件 EXE(自动打包)
文件结构:
单文件 EXE:
└── hostexecutor_single.exe # 50-80MB,直接运行
原始文件:
└── hostexecutor.exe # 主程序
├── flutter_windows.dll # Flutter 引擎
├── *.dll # 运行时库
└── data/ # 应用数据
⚙️ 技术实现
自动下载 Enigma Virtual Box
$enigmaUrl = "https://enigmaprotector.com/assets/files/enigmavb.exe"
Invoke-WebRequest -Uri $enigmaUrl -OutFile "C:\enigmavb.exe"
智能打包逻辑
- 尝试 Enigma - 创建真正的单文件
- 失败时回退 - 使用 7-Zip 自解压
- 总是成功 - 确保有输出文件
压缩优化
- 压缩级别: 最高压缩率 (
/compress) - 虚拟化模式: 内存运行,不写磁盘
- 多线程: 并行处理,加快速度
📋 使用说明
获取单文件 EXE
- 进入 Gitea Actions 页面
- 找到最新的成功构建
- 下载
windows-single-exe工件 - 直接运行
hostexecutor_single.exe
验证打包结果
# 检查文件大小(应该在 50-80MB)
dir hostexecutor_single.exe
# 验证单文件(应该只有 1 个文件)
dir *.exe
🎯 优势特点
完全自动化
- ✅ 无需手动操作
- ✅ 自动下载工具
- ✅ 智能错误处理
- ✅ 保证输出结果
高质量打包
- ✅ 真正的单文件
- ✅ 高压缩率
- ✅ 内存运行,不写临时文件
- ✅ 兼容所有 Windows 版本
可靠回退
- ✅ Enigma 失败时自动切换 7-Zip
- ✅ 总是生成可用的输出
- ✅ 详细的构建日志
🔧 自定义配置
修改压缩级别
在工作流脚本中找到:
# 最高压缩(当前设置)
/compress
# 快速压缩(速度优先)
/compress:fast
# 平衡压缩(推荐)
/compress:normal
修改输出文件名
# 当前设置
$outputExe = "$outputPath\$($exeFile.BaseName)_Single.exe"
# 自定义名称
$outputExe = "$outputPath\MyApp_Portable.exe"
📊 性能指标
构建时间
- Debug 构建: ~4.7 分钟
- Release 构建: ~27 秒
- 单文件打包: ~2-5 分钟
- 总时间: ~8-12 分钟
文件大小
- 原始文件: ~70MB(多文件)
- 单文件: ~50-80MB(压缩后)
- 压缩率: 10-30% 减小
🎉 总结
现在工作流完全自动化了!
- 🔄 每次推送代码 → 自动构建 → 自动打包单文件
- 📦 构建完成后 → 直接下载单文件 EXE 使用
- 🔧 无需手动配置 → 开箱即用
你只需要:等待构建完成,下载单文件,直接运行!✨