Skip to content

内嵌站点与内嵌资源(选型指南) ​

[🎯 选型参考] | 想把文件「打进 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 自行管理。

相关页面 ​