YStudio Y++

资源目录与「嵌入 exe」

Y++ / YStudio 开发文档 · 一点滴

工程树 资源/ 下的文件可在 Release 打包时写入 exe(嵌入表 g_yppEmbeddedRes)。代码里路径统一写成 :/相对资源路径。

本页是路径约定与运行时读取规则;配合 读文件 / 到字节集 / 各支持库路径参数使用。

硬约束

  1. 仅 Release 勾选「嵌入 exe」后写入;Debug 菜单灰掉,始终旁路到 exe 旁文件。
  2. 代码路径写 :/…(亦接受 :\\…,归一为 :/ + 正斜杠);解析顺序:嵌入表优先 → {exe}/rel → {exe}/resources/rel。
  3. SQLite类.打开(":/…") 会物化到临时文件;写入不会改回 exe 内嵌数据——嵌入库建议只读。
  4. 浏览器打开嵌入 html:页内相对 css/图/脚本常失效;请内联、绝对 :/…,或外链完整 URL。
  5. 第三方如 libmysql.dll 未进嵌入表时须与 exe 一并拷贝。

右键「嵌入 exe」

  • 打包侧无扩展名白名单:js / html / txt / dll / 图片 / db / yss… 均可。
  • 文件夹可整夹嵌入;对「📂 资源」根节点嵌入 = 整树嵌入(工程里记空串,勿写 ".")。
  • 「批量嵌入 exe…」可多选;「添加资源文件…」其它扩展名用 所有文件 (.)。

外拷可运行(单 exe)

Release 且勾选嵌入后,整工程通常可只拷一个 exe:

嵌入表 内容
g_yppEmbeddedRes 资源树 :/…
g_yppEmbeddedFormYss 主窗 .yss
g_yppEmbeddedFormControls / g_yppEmbeddedYssExt 控件表 / YSS 扩展
g_yppEmbeddedSecondaryForms[] 次级窗(载入):controls / launchMeta / yssExt / yss

Release 发布目录不再旁路拷贝 form_controls_*.bin、form_launch_*.txt、form_yss_ext_*.bin(Debug 仍拷贝)。

编译后检查 发布/.../Release/._cache/embedded_payload.cpp:

  • g_yppEmbeddedResCount > 0
  • g_yppEmbeddedSecondaryFormCount = 次级窗数量

运行时 :/ 相关命令

共 7 条(支持 :/ 路径的常用入口)。

读文件

  • 签名:文本 读文件(文本 文件路径, [常量 编码=#编码_UTF8], [逻辑 保留格式=真], [逻辑 自动识别编码=真])
  • 说明:读取文本文件内容,支持自动识别编码或指定编码。.docx(Word)会尝试用系统 PowerShell 解压并抽取正文为纯文本;失败时请另存为.txt 或使用专用库。
  • 参数一│文本 文件路径: 要读取的文件
  • 参数二│[常量 编码=#编码_UTF8]: #编码_UTF8 / #编码_GBK / #编码_UNICODE / #编码_自动 等
  • 参数三│[逻辑 保留格式=真]: 是否保留换行等
  • 参数四│[逻辑 自动识别编码=真]: 真时尝试探测编码

到字节集

  • 签名:字节集 到字节集(文本 路径或文本)
  • 说明:将文件读入为字节集;若不是有效文件路径,则按 UTF-8 编码文本。
  • 参数一│文本 路径或文本: 图片/文件路径,或普通文本。

写出文件

  • 签名:逻辑 写出文件(文本 写出路径, 通用 数据, [逻辑 追加=假], [整数 编码=65001], [逻辑 自动创建目录=真])
  • 说明:把资源或普通数据写出到本地文件。数据可为文本、字节、字节集或通用值;当数据是有效的 :/资源路径时,按原始二进制内容写出资源。
  • 参数一│文本 写出路径: 目标文件路径;默认自动创建不存在的父目录
  • 参数二│通用 数据: 文本、字节、字节集或通用数据;有效的 :/资源路径会按资源原始字节写出
  • 参数三│[逻辑 追加=假]: 假=覆盖,真=追加
  • 参数四│[整数 编码=65001]: 文本数据的 Windows 代码页,默认 #编码_UTF8;二进制和资源数据忽略此参数
  • 参数五│[逻辑 自动创建目录=真]: 为假时父目录不存在则返回假

加载YSS

  • 签名:逻辑 加载YSS([文本 文件路径=""])
  • 说明:从.yss 文件加载样式并应用到当前窗体全部控件;运行时可动态换肤。
  • 参数一│[文本 文件路径=”“]:.yss 路径;省略则加载 exe 旁「主窗口.yss」;支持相对 exe 的路径(如 yss/demo.yss);资源 URL :/img/xx.png 表示 exe 旁 img/xx.png

加载DLL

  • 签名:长整数 加载DLL(文本 路径)
  • 说明:LoadLibrary:加载 DLL,返回模块句柄(长整数)。
  • 参数一│路径: 如 user32.dll 或完整路径

JS类.加载

  • 签名:逻辑 加载(文本 文件路径)
  • 说明:按 UTF-8 读取本地.js 文件并执行;成功返回真。
  • 参数一│文本 文件路径: 如 “d:\sign.js” 或相对工程路径。

SQLite类.打开

  • 签名:逻辑 打开(文本 路径, [逻辑 只读=假], [文本 密码=""])
  • 说明:打开或创建数据库文件;只读=真时不创建新库。密码非空:整库 AES 加密(内存操作,关闭/保存时写盘)。
  • 参数一│文本 路径: 数据库文件路径
  • 参数二│[逻辑 只读=假]: 真=只读打开
  • 参数三│[文本 密码=”“]: 非空则启用 Y++ 库文件加密

易错对照

错误 正确
Debug 期望已嵌入 嵌入仅 Release;Debug 读旁路文件
嵌入 SQLite 当可写回 exe 物化临时文件;建议只读
嵌入 html 相对资源失效 内联或绝对 :/…

相关

文件操作 · 类型转换 · JS类 · SQLite类 · DLL · YSS