让易语言项目享有现代开发体验:Git 版本管理、代码 Diff、AI 辅助编辑、命令行编译。
# 解包:.e → 可读目录
e-packager unpack MyApp.e MyApp\
# 回包:目录 → .e
e-packager pack MyApp\ MyApp.e
# 直接编译:.e → .exe(无需打开 IDE)
e-packager compile MyApp.e MyApp.exe📖 参考应用:易语言 × AI Agent 实践白皮书
📊 AI 编辑源码前,可参考 易语言大模型基准评分 选择模型
🔧 AutoLinker 支持库 — 提供无头编译,用于 AI 编辑后的验证
# 1. 解包
e-packager unpack MyApp.e MyApp\
# 2. 编辑(用任意编辑器修改 MyApp\src\*.txt)
# ...
# 3. 回包
e-packager pack MyApp\ MyApp.e直接将 .e / .ec 文件拖放到 e-packager.exe 上,自动在源文件所在目录创建同名子目录并解包。
在工作区根目录(或 tool/ 子目录)内直接运行,自动输出到 pack/ 目录:
e-packager# 解包
e-packager unpack <input.e|input.ec> <output-dir>
# 回包
e-packager pack <input-dir> <output.e|output.ec>未修改的 .ec 拆包目录可以回包为原始 .ec,保持字节一致。显式指定 .e 输出时转换为易语言源工程;修改源码或资源后,请回包为 .e 并通过易语言编译为模块。工具不会把 .e 数据写入 .ec 文件,也不会在修改后复用旧模块快照。
# 快速解包(不刷新依赖模块和支持库接口)
e-packager unpack MyApp.e MyApp\ --main-only
# 带密码的文件
e-packager unpack MyApp.e MyApp\ --password 123456
e-packager pack MyApp\ MyApp.e --password 123456
# 导出支持库公开接口(仅 Win32 版)
e-packager decrypt-fne MyLib.fne MyLib.txt无需打开 IDE,一条命令把 .e 编译成 .exe 或 .dll。
⚠️ 试验性功能 — 已覆盖常用控件和核心库命令,但不是 IDE 的完整替代。交付前请用compile-check或 IDE 复核。
完整教程:docs/compile-from-source-guide.md(含实测编译尺寸、GUI 子系统、DLL 导出与失败排查)
基本用法:
# 编译 EXE
e-packager compile MyApp.e MyApp.exe
# 编译 DLL
e-packager compile MyLib.e MyLib.dll
# 编译 x64 版本
e-packager compile MyApp.e MyApp-x64.exe --arch x64
# 编译 GUI 程序(无控制台窗口)
e-packager compile MyApp.e MyApp-gui.exe --subsystem windows-
Visual Studio C++ 工具链(编译器会自动探测)
- 下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/
- 选择 Visual Studio Community(免费)
- 安装时勾选:使用 C++ 的桌面开发
- 详见:完整安装指南
-
核心库实现(首次编译时自动下载)
- 来源:BlackMoonModernCore Release
- 自动缓存到:
%LOCALAPPDATA%\e-packager\dependencies
| 模式 | 架构 | 推荐场景 |
|---|---|---|
semantic(默认) |
x86 / x64 | 推荐 — 现代工具链,支持 x64 |
legacy-blackmoon |
仅 x86 | 仅当需要与旧编译产物保持逐字节一致 |
# 指定架构
--arch x86|x64
# 指定子系统
--subsystem auto|console|windows
# 指定核心库路径(CI 场景)
--blackmoon-x86-dir <路径>
--blackmoon-x64-dir <路径>
# JSON 格式诊断(供脚本/IDE 解析)
--diagnostics json| 产物类型 | 架构 | 尺寸 |
|---|---|---|
| 空白控制台工程 | x86 | ~114 KB |
| 完整测试工程(1606 行,137 个命令) | x86 | ~675 KB |
| 完整测试工程 | x64 | ~777 KB |
| 纯代码 GUI(一个信息框) | x86 | ~173 KB |
在编辑后快速验证源码,无需生成 .e 文件:
# 文本格式
e-packager validate MyApp\
# JSON 格式(供脚本/IDE 解析)
e-packager validate MyApp\ --diagnostics json预检覆盖范围:
- ✅ 声明槽位、属性、数组维数
- ✅ 声明顺序、重复名称、类型冲突
- ✅ 智能引号/括号配对、赋值左右值
- ✅ 窗体 XML、控件成员、事件处理器
- ✅ 符号、成员、调用签名、类型错误
pack 和无参回包会自动执行预检。发现错误时不会写出目标文件。
💡 预检不是完整的易语言编译器。交付前请用
compile-check或 IDE 复核。
使用真实易语言 IDE 和 AutoLinker 执行编译检查:
# 对已有 .e 文件检查
e-packager compile-check MyApp.e
# 回包时同时检查
e-packager pack MyApp\ MyApp.e --compile-check
# 显式指定 IDE 路径(IDE 的 lib 目录需启用 AutoLinker.fne)
e-packager compile-check MyApp.e \
--eide "C:\path\to\IDE.exe"编译失败会输出 IDE 页面、行号和错误内容,且不会覆盖已有文件。
解包后的目录结构:
| 路径 | 内容 |
|---|---|
src/ |
源码文件(.txt)及窗口界面定义(.xml) |
project/ |
封包所需元数据;.e 解包后还可能含原生快照,请勿删除 |
ecom/ |
已解包的易模块工作区(.e 项目) |
elib/ |
依赖支持库的公开接口导出(仅供查阅) |
header/ |
公开接口头文件(.ec 项目) |
image/ |
图片资源,元数据在 image/list.json |
audio/ |
音频资源,元数据在 audio/list.json |
tool/e-packager.exe |
随目录自带的封包工具 |
info.json |
来源文件的类型、路径、修改时间、MD5 |
README.md |
自动生成的项目结构、工具来源与回包方法说明 |
AGENTS.md |
供 AI Agent 阅读的项目结构说明 |
解包后,若依赖的易模块或支持库发生变化,或需要新增资源,可用 update 刷新:
# 刷新所有派生内容
e-packager update MyApp\
# 新增易模块
e-packager update MyApp\ --add-ecom D:\modules\MyLib.ec
# 新增支持库(仅 Win32 版)
e-packager update MyApp\ --add-elib 互联网支持库
# 新增图片资源(代码中写 #logo)
e-packager update MyApp\ --add-image D:\res\logo.png
# 新增音频资源(代码中写 #notify)
e-packager update MyApp\ --add-audio D:\res\notify.wav
# 显式指定资源常量名(代码中写 #启动画面)
e-packager update MyApp\ --add-image 启动画面=D:\res\splash.binsemantic 编译支持 x86/x64 的 EXE 图标、文件属性,以及 DLL 版本资源。在拆包目录中创建 project/executable.json:
{
"icon": "../assets/app.ico",
"fileDescription": "程序说明",
"productName": "产品名称",
"companyName": "开发者或公司名称",
"author": "作者",
"legalCopyright": "Copyright (C) 2026 作者",
"fileVersion": "1.0.0.0",
"productVersion": "1.0.0.0"
}所有字段可省略。JSON 使用 UTF-8(允许 BOM),icon 相对于配置文件解析。ICO 可包含 16、32、48、256 像素等多个尺寸。版本接受一至四段数字,补齐为四段,每段范围为 0–65535。
# 自动读取 MyApp/project/executable.json
e-packager compile MyApp MyApp.exe --arch x64
# 替换默认配置,并覆盖配置内的图标;也适用于直接编译 .e
e-packager compile MyApp.e MyApp.exe --exe-config release.json --icon assets/app.ico--exe-config 替换整个默认配置,不与其合并;--icon 优先于配置文件。命令行路径相对于当前工作目录。未配置图标时继承原工程已保存的图标;未配置产品名称、文件描述及版本时继承工程名称和版本,缺少工程版本时使用 1.0.0.0。公司、作者和版权不自动推断。OriginalFilename 自动使用输出文件名。
author 写入自定义 Author 字段,Windows 资源管理器不保证显示;建议用 companyName 展示开发者。此配置不提供数字签名,也不改变签名中的发布者。窗口默认加载 EXE 的大小图标,窗口自身显式设置的图标优先。
配置只用于直接编译,不写回 .e,目录 update 会保留此文件。传统 legacy-blackmoon 不读取该配置,并拒绝新命令行参数。无配置的工程仍可编译。非法字段、版本、图标或资源编译错误会导致编译失败;资源编译日志保存在输出目录的 <名称>.resources.log 中。
# 自动更新到最新版本
e-packager /update
# 查看当前版本
e-packager version
# 比较原文件与目录内容是否一致
e-packager compare-bundle MyApp.e MyApp\
# 往返验证(解包后立即回包并校验)
e-packager verify-roundtrip MyApp.e temp\ verified.e手动指定编译工具链
编译器通常能自动探测 Visual Studio,但你也可以显式指定:
e-packager compile MyApp.e MyApp.exe `
--vc-tools-dir "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\<版本>" `
--windows-sdk-dir "C:\Program Files (x86)\Windows Kits\10" `
--e-dir "C:\path\to\易语言安装目录"--vc-tools-dir:MSVC 版本根目录,提供编译器、链接器、头文件和运行库--windows-sdk-dir:Windows Kits 根目录,提供 SDK 头文件、库和 rc.exe--e-dir:易语言安装目录,x86 从lib、static_lib查找第三方库;x64 不加载第三方库--compiler、--linker:显式指定cl.exe、link.exe
⚠️ 不要使用e5.6\linker下的打包链接器 — 它缺少完整的 MSVC 头文件和 SDK。
legacy-blackmoon 编译模式(传统 x86 黑月)
该模式保留 IDE 编译 E-code 的传统行为,仅支持 x86:
e-packager compile MyApp.e MyApp.exe `
--compile-mode legacy-blackmoon `
--legacy-blackmoon-mode asm `
--eide "C:\path\to\IDE.exe" `
--legacy-blackmoon-dir "C:\path\to\BlackMoon"要求:
- 易语言 IDE + 已启用的
AutoLinker.fne - 完整的 BlackMoon 工具链(
BlackMoon\bin\LINK.EXE、入口对象等) - 传统核心归档(
legacy_static_lib\x86\krnln.lib,来自 BlackMoonModernCore Release)
使用场景:
- 需要与旧编译产物保持逐字节一致
- 依赖传统黑月工具链的特定功能
💡 大部分场景推荐使用默认的
semantic模式。
CI 友好用法(无交互提问)
在 CI 环境中,提前准备 adapter 并显式传入,避免自动下载提问:
# 提前解压 adapter
Expand-Archive "BlackMoonKernelStaticLib-v<版本>-x86.zip" "D:\deps\BMC" -Force
# 编译时显式指定
e-packager compile MyApp.e MyApp.exe \
--arch x86 \
--blackmoon-x86-dir "D:\deps\BMC\adapter"完整编译选项参考
| 选项 | 作用 |
|---|---|
--compile-mode semantic|legacy-blackmoon |
编译模式 |
--arch host|x86|x64 |
目标架构 |
--subsystem auto|console|windows |
子系统类型 |
--dll |
编译为 DLL |
--define <宏> / -D <宏> |
条件编译宏 |
--diagnostics text|json |
诊断输出格式 |
--compiler <路径> |
显式指定 cl.exe |
--linker <路径> |
显式指定 link.exe |
--vc-tools-dir <路径> |
MSVC 版本根目录 |
--windows-sdk-dir <路径> |
Windows Kits 根目录 |
--e-dir <路径> |
易语言安装目录 |
--blackmoon-x86-dir <路径> |
x86 核心库 adapter 目录 |
--blackmoon-x64-dir <路径> |
x64 核心库 adapter 目录 |
--blackmoon-timeout <秒> |
编译链接超时(默认 120) |
legacy-blackmoon 专用选项:
--legacy-blackmoon-mode asm\|cpp\|mfc— 入口模式--eide <路径>— 易语言 IDE 路径--legacy-blackmoon-dir <路径>— 传统黑月工具链目录--legacy-blackmoon-linker <路径>— 覆盖传统黑月 linker
- 完整上手教程:
docs/compile-from-source-guide.md— 从零开始的编译指南 - 实现原理:
docs/independent-compiler-architecture.md— 编译器架构与已验证范围 - 从零上手:
docs/getting-started.md— 基础使用教程 - 核心库实现:BlackMoonModernCore
- 无头编译支持库:AutoLinker
使用前请备份源文件,作者不对可能的数据损失负任何责任。遇到无法解包或回包的文件,欢迎提交 Issue 并附上文件。
- OpenEpl/TextECode — 易语言工程文件与文本代码互转
- OpenEpl/EProjectFile — 易语言项目文件读写库