内嵌站点与内嵌资源(选型指南)
[🎯 选型参考] | 想把文件「打进 EXE」时,先看这一页再动手。
LingBuilder 有两套把文件编进 EXE 的内嵌机制。两者的打包方式相同(都编译为 EXE 内的 RCDATA 资源),真正需要选的是运行期怎么读和适合装什么。本页对比两者差异,并给出选型建议;具体操作步骤见各自章节。
对比一览
| 内嵌站点(embeddedSite) | 内嵌资源(lingbuilder.resource.embed) | |
|---|---|---|
| 适合内容 | 一个完整的网页站点(HTML/JS/CSS/图片,如 Vite、React、Vue 的构建产物) | 任意单个文件:DLL、图片、音频、字体、压缩包、数据文件…… |
| 配置入口 | 窗口设计器 → 取消选中控件 → 属性面板「当前窗口 / 内嵌站点」 | 解决方案树「内嵌资源」→「配置项目内嵌资源」 |
| 作用域 | 窗口级:每个窗口一份清单 | 项目级:一份清单,多窗口共享 |
| 运行期读取 | 浏览器请求 https://<主机名>/<路径>,由 EXE 进程内从内存直接应答 | 资源_取字节集(逻辑名) 从内存直读字节集 |
| 是否释放磁盘 | 永不释放(连 %TEMP% 都不写) | 默认不释放;勾选 extract(或运行期调 资源_释放到临时目录)才写到 %TEMP%\lingbuilder-embedded\<工程ID>\,每次启动覆盖写 |
| 资源号段 | 2101 起 | 2301 起(图标 101、项目 DLL 2201+ 各自独立,互不冲突) |
| 依赖模块 | EdgeView 浏览器模块(FBro 浏览器模块亦支持) | 内嵌资源模块(内存加载 DLL 时另配「内存加载DLL模块」) |
| 数量与大小上限 | 最多 64 个文件、单个 ≤32MB、全部文件必须位于入口文件所在目录内 | 详见 内嵌资源 |
| 典型场景 | 网页 UI 应用打包成单文件 exe(配合无边框窗口壳) | 内存加载 DLL、给只吃字节集的接口喂数据、给只吃磁盘路径的老接口备料 |
怎么选
- 要把一个网页应用装进单文件 exe → 内嵌站点。配合 EdgeView 浏览器模块和一个铺满窗口的 EdgeBrowser 控件即可运行;完整步骤(含无边框窗口壳、网页自绘标题栏按钮)见 EdgeView 浏览器模块。
- 要携带 DLL、图片、数据包等附件,接口吃字节集 → 内嵌资源,默认零释放,配
内存DLL_加载(资源_取字节集(...))可全程不落盘。 - 接口只接受磁盘路径 → 内嵌资源 + 勾选
extract(启动即释放),或运行期按需资源_释放到临时目录(逻辑名)。 - 两种可以同时用:网页站点走内嵌站点,其余附件走内嵌资源,资源号段互不冲突。例如一个网页壳应用:界面是内嵌站点,自带的一个解码 DLL 走内嵌资源 + 内存加载。
- 旧工程的「窗口内嵌文件」(窗口模型
embeddedFiles,释放到 %TEMP%)已弃用:打开或构建时会自动迁移成内嵌资源的extract: true条目,无需手工处理。
共同规则
- 都在构建期打包进 EXE:改了源文件内容必须重新构建,运行期读到的始终是打包时的版本。
- 源码包分享:「一键导出当前项目源码包」会把内嵌站点清单引用的网页文件与内嵌资源的源文件一并打包,收包方可直接构建。若收到的项目构建报「内嵌站点文件不存在」,说明导出方用的是旧版 IDE,请更新后重新导出。
- 内嵌站点运行期会在 exe 同目录创建
.edgeview/<应用>存放 WebView2 缓存与 Cookie——这是浏览器运行数据,不是被释放的网页文件;目录所在磁盘需可写。
NOTE
「零释放」指的是不把内嵌的网页/资源文件写到磁盘。WebView2 运行时自身的缓存、配置属于浏览器常规数据,两种机制下都由 WebView2 自行管理。
相关页面
- 内嵌资源(打进 EXE) —— 内嵌资源的完整用法:清单、extract、资源命令族
- EdgeView 浏览器模块 —— 内嵌站点实战:操作步骤、无边框窗口壳、网页桥协议
- 窗口设计器 —— 「当前窗口 / 内嵌站点」属性分组说明