发布分发
发布分发
功能
发布时可以分发 bt_app.exe build 生成的 dist/{app.name}.exe,也可以面向已安装 bt_app 的用户分发 bt_app.exe pack 生成的 dist/{app.name}.btr。独立 exe 尾部包含应用资源和运行时;BTR 只包含配置与资源,可让多个软件共用同一份 bt_app。构建目录不再生成额外的 FFI 许可证旁路文件。
BTR 分发
BTR 适合工具集合、企业内部软件库和统一工具条。发布方只需分发较小的 .btr,用户机器保留一份与系统架构匹配的 bt_app。运行命令:
bt_app.exe run .\MyTool.btr
Windows 第一次安装通用运行时时,在运行时最终路径执行 bt_app.exe associate,可为当前用户注册 .btr 打开命令。PATH 和文件关联是两件事:PATH 只支持终端直接输入 bt_app,双击需要文件关联。BTR 的 app.file_associations 不会在外部运行时自动注册,避免下载或临时打开的软件修改其他业务文件类型。
每次运行 BTR 都创建独立应用进程,VM、窗口、托盘、全局快捷键和退出互不影响。BTR 节省的是重复附带运行时的磁盘和分发体积;多个同时运行的软件仍可能各自创建 WebView 进程。
Windows
Windows 用户直接双击打包后的 exe 运行。若系统缺少 WebView2 Runtime,bt_app 会在启动错误路径给出友好提示,用户需要安装 Microsoft Edge WebView2 Runtime。
建议发布前确认:
-
dev.console是否为false。 -
app.icon是否是有效.ico。 -
dist/{app.name}.exe能在干净目录中独立运行。 - 如果分发 BTR,使用目标版本 bt_app 执行
info和run,并检查图标、启动参数及最低版本提示。 -
static模式所需资源都进入 Bundle。 -
server模式的端口没有和常见软件冲突。 - 配置
app.file_associations时,至少启动一次打包后的 exe,并验证双击文件、启动参数和右键菜单;Windows 已存在的用户默认应用选择需由用户在系统设置中确认。
Linux 和 macOS
Linux 官方包中的 bt 命令行解释器使用 x86_64-unknown-linux-musl 静态目标构建,部署脚本和 Web 服务时不依赖目标服务器的 glibc 版本。该静态 CLI 使用 --no-default-features --features extensions 构建,不包含只支持 GNU Linux 目标的 FFI;脚本可用 BT.has('ffi') 检测此边界。若服务器执行 ./bt -c main.bt 报 GLIBC_2.38 not found 或 GLIBC_2.39 not found,应替换为新的 Linux 官方包中的 bt。
Linux 的 bt_app 是桌面应用引擎,仍依赖目标系统的 WebKitGTK、桌面会话和图形运行环境,不按 musl 静态方式发布。面向 Linux 桌面分发时,需要在目标发行版上做实际启动验证。
macOS 使用 Darwin/libSystem,不使用 glibc,因此不会出现 Linux 的 GLIBC_x.y not found 报错。macOS 分发应使用对应架构的 macOS 构建产物,并按系统要求处理签名、安全提示和运行权限。
当前项目的正式打包输出仍以 .exe 单文件逻辑为主,bt_app.exe export 是预留入口,跨平台导出能力当前版本暂未完成。需要面向 Linux 或 macOS 发布时,应以当前实际构建产物和运行环境验证结果为准,不要把 .icns、.png 平台图标写成已支持打包能力。
远程应用更新
远程入口模式下,软件壳本身可以保持稳定,业务页面和 BT 脚本可以部署在服务器端。开发者更新服务器内容后,用户再次打开应用即可使用新版本功能,不一定需要重新下载安装客户端。
{ "app": { "mode": "remote", "entry": "https://example.com/app" } }
远程页面当前可以调用 window.bt.call() 和窗口控制能力。发布时只应配置可信 HTTPS 地址,并注意远程页面的账号、权限和内容安全。
本地打包应用更新
static 和 server 模式的本地资源已经打进 exe 或 BTR。更新页面、BT 脚本、图标或 app.json 后,需要重新执行对应命令:
./bt_app.exe build ./bt_app.exe pack
然后把新的 dist/{app.name}.exe 或 dist/{app.name}.btr 分发给用户。
WebView2 依赖
Windows 桌面窗口依赖 WebView2。开发和发布测试时,如果窗口无法打开、提示 WebView 相关错误,优先检查系统是否安装 WebView2 Runtime。