# 发布分发

## 功能
发布时通常分发 `bt_app.exe build` 生成的 `dist/{app.name}.exe`。该 exe 尾部包含 Bundle，运行时会从自身读取应用资源。

## Windows
Windows 用户直接双击打包后的 exe 运行。若系统缺少 WebView2 Runtime，`bt_app` 会在启动错误路径给出友好提示，用户需要安装 Microsoft Edge WebView2 Runtime。

建议发布前确认：

- `dev.console` 是否为 `false`。
- `app.icon` 是否是有效 `.ico`。
- `dist/{app.name}.exe` 能在干净目录中独立运行。
- `static` 模式所需资源都进入 Bundle。
- `server` 模式的端口没有和常见软件冲突。

## Linux 和 macOS
当前项目的正式打包输出仍以 `.exe` 单文件逻辑为主，`bt_app.exe export` 是预留入口，跨平台导出能力当前版本暂未完成。需要面向 Linux 或 macOS 发布时，应以当前实际构建产物和运行环境验证结果为准，不要把 `.icns`、`.png` 平台图标写成已支持打包能力。

## 远程应用更新
远程入口模式下，软件壳本身可以保持稳定，业务页面和 BT 脚本可以部署在服务器端。开发者更新服务器内容后，用户再次打开应用即可使用新版本功能，不一定需要重新下载安装客户端。

```json
{
  "app": {
    "mode": "remote",
    "entry": "https://example.com/app"
  }
}
```

远程页面当前可以调用 `window.bt.call()` 和窗口控制能力。发布时只应配置可信 HTTPS 地址，并注意远程页面的账号、权限和内容安全。

## 本地打包应用更新
`static` 和 `server` 模式的本地资源已经打进 exe。更新页面、BT 脚本、图标或 `app.json` 后，需要重新执行：

```bash
./bt_app.exe build
```

然后把新的 `dist/{app.name}.exe` 分发给用户。

## WebView2 依赖
Windows 桌面窗口依赖 WebView2。开发和发布测试时，如果窗口无法打开、提示 WebView 相关错误，优先检查系统是否安装 WebView2 Runtime。
