程序发行
使用 JadeView 编写的程序如何打包、保护并分发给最终用户?本文从整体流程出发,介绍三种核心能力:JAPK 资源包、内存载入、NSIS 安装包。
发行流程概览
一个典型的 JadeView 程序发行流程:
- 开发完成 → 前端资源(HTML/CSS/JS)和宿主程序(调用 JadeView DLL 的 exe)就绪
- 打包前端资源 → 使用 JadePack 或
@electron/asar将前端项目打包为 JAPK 文件 - 保护资源内容 → JadePack 提供混淆和签名保护,防止源码泄露和篡改
- 嵌入或分发 JAPK → 可将 JAPK 作为独立文件分发,也可嵌入 exe 通过内存载入
- 制作安装包 → JadePack 内置 NSIS 安装包一键打包,生成完整的安装程序
JAPK 资源包
JAPK 是 JadeView 专属的前端资源打包格式,将 HTML、CSS、JavaScript、图片等打包为单个 .japk 文件。
核心优势:
- 分发简单:只需一个文件,不用传一堆零散文件
- 加载快速:JadeView 直接从包内读取资源,无需解压到临时目录
- 兼容 ASAR:完全兼容 Electron ASAR 格式,Electron 生态的包可直接使用
构建方式:
| 方式 | 内容保护 | 适用场景 |
|---|---|---|
@electron/asar(免费) | 明文,无保护 | 开发调试、内部工具 |
| JadePack 混淆包 | XOR 混淆,非明文 | 基础保护的分发 |
| JadePack 签名包 | Ed25519 签名 + AES-256-GCM 加密 | 生产环境、商业分发 |
详细说明见 JAPK 资源包格式。
源码保护
前端资源(JS/CSS/HTML)默认是明文的,直接分发 JAPK 包可能面临源码泄露和篡改风险。JadePack 提供两层保护:
混淆保护
即使不签名,JadePack 也会对打包内容施加 XOR 混淆保护,生成非明文的混淆包。加载时无需公钥,适合基础保护场景。
签名加密
提供 Ed25519 签名 + AES-256-GCM 加密的完整安全方案:
- 防篡改:签名验证确保包内容未被修改
- 防伪造:只有持有私钥的人才能构建可验证的签名包
- 防回退:设置公钥后,签名包加载失败不会回退到混淆包逻辑
生产环境推荐使用签名包。详见 JadePack 构建工具。
内存载入
JadeView 支持从内存直接加载 JAPK 包,无需本地文件系统。这意味着你可以将 JAPK 数据嵌入可执行文件中,实现单文件分发。
适用场景:
- 将 JAPK 嵌入 exe 资源,用户只看到一个可执行文件
- 从网络下载 JAPK 后直接加载,无需写入磁盘
- 防止用户直接访问和修改前端资源文件
使用方式:
// 1. 初始化
JadeView_init(1, NULL, NULL, "MyApp", "com.example.app", 0);
// 2. (可选)设置公钥,只接受签名包
JadeView_set_public_key("QeeOu5LQdQooeyOID6h/ChFEo5RhbAFoKgslznp5Nbk=");
// 3. 从内存加载 JAPK
int rc = JadeView_load_from_bytes(japk_data, data_size);
// 4. 获取协议 URL 并创建窗口
char url_buffer[256];
set_protocol_service_path("", url_buffer, sizeof(url_buffer));
create_webview_window(url_buffer, 0, &options, NULL);
完整 API 说明见 从内存载入。
NSIS 安装包
JadePack 内置 NSIS 安装包一键打包功能,将应用目录打包为完整的 Windows 安装程序。
功能特点
- 一键打包:图形界面配置,无需手写 NSIS 脚本
- WebView2 引导:目标系统未安装 WebView2 时自动引导安装
- 桌面快捷方式:可选创建桌面快捷方式
- 自定义图标:支持
.ico格式应用图标 - 压缩选项:支持 zip / lzma / solid 三种压缩级别
- 多语言:安装向导支持简体中文、英语等
配置项
| 配置项 | 说明 |
|---|---|
| 应用目录 | 要打包的应用根目录路径 |
| 主程序 | 入口可执行文件(如 MyApp.exe) |
| 应用唯一标识符 | 与 JadeView 初始化时参数 5 一致 |
| 排除文件 | 打包时排除的文件/文件夹(支持通配符) |
| 应用名称 | 安装后显示的程序名称 |
| 应用版本号 | 安装包版本号(如 1.0.5) |
| 压缩级别 | 压缩强度,可选 zip / lzma / solid |
| 创建桌面快捷方式 | 是否在用户桌面创建快捷方式 |
| 安装方式 | 用户安装时可选择的模式 |
| 应用图标 | 安装包和快捷方式图标(.ico 格式) |
| 输出目录 | 生成的安装包输出路径 |
| 安装语言 | 安装向导界面语言 |
| WebView2 运行时 | 未安装时的处理方式(在线安装 / 离线安装 / 不处理) |
| 最低版本 | 要求的最低操作系统版本 |
操作流程
- 在 JadePack 构建中心切换到 安装包 标签页
- 填写上述配置项
- 点击 打包并生成安装包 按钮
- 等待打包完成,在输出目录获取
.exe安装包
推荐发行方案
根据不同场景,推荐以下发行方案:
内部工具 / 原型
前端资源 → @electron/asar 打包 → 明文 JAPK → 随 exe 分发
简单快速,无需额外工具。
面向用户的桌面应用
前端资源 → JadePack 混淆包 → 嵌入 exe 内存载入 → JadePack NSIS 安装包
混淆保护源码,单文件分发,安装包体验。
商业软件
前端资源 → JadePack 签名包 → 嵌入 exe 内存载入 → JadePack NSIS 安装包
签名加密双重保护,防篡改防伪造,专业安装体验。