fix(installer): 保留现场固定热点约定并说明连接要求
构建客户端 / 检查(类型 + 单元测试) (push) Waiting to run
构建客户端 / Linux x64(deb + AppImage) (push) Blocked by required conditions
构建客户端 / Windows x64(NSIS 安装包) (push) Blocked by required conditions
构建客户端 / macOS 通用(.app + .dmg) (push) Blocked by required conditions

安装完成页默认展示现场统一的 SSID 与密码,便于裁判系统连接和现场调试;本地覆盖配置继续用于其他部署。

- fix(installer): 使用共享热点默认值,并修正本地覆盖配置的包含路径
- docs(network): 明确设备按固件中的固定热点参数连接,客户端电脑需接入同一网络,更换热点后需重新编译烧录
- docs(agents): 区分现场统一热点约定与个人 Wi-Fi 配置,保留前者及对应安装说明

验证:无本地配置与带本地覆盖两种 NSIS 配置均编译通过;预处理检查确认热点名称和密码按预期显示;git diff --check。未连接或烧录设备。
This commit is contained in:
2026-10-21 09:28:41 +08:00
parent 054379dc64
commit 72901939c6
9 changed files with 52 additions and 14 deletions
+1 -1
View File
@@ -56,7 +56,7 @@ RMIC::2026 包含 ESP32-S3 图传固件、ESP32-C3 装甲板固件和 Tauri 桌
### 硬件、配置与源码保护
- 不提交 Wi-Fi 凭据、密码哈希、个人 SDK 绝对路径或本机缓存;不要在日志和交付说明中输出 `.env` 内容。保留已有 `.env`,示例使用占位值。
- 不提交个人 Wi-Fi 凭据、密码哈希、个人 SDK 绝对路径或本机缓存。现场统一热点的 SSID 与密码作为连接约定保留在安装器配置中,见[客户端说明](docs/desktop/client.md#windows-x64-构建);不要将其当作个人配置删除。不要在日志和交付说明中输出 `.env` 内容。保留已有 `.env`,示例使用占位值。
- 仅做软件、文档或文案任务时,不执行烧录、擦除、写分区表或修改设备安全配置。涉及硬件任务时,按用户授权核对芯片、端口、分区与备份。
- `components/esp32-camera/target/` 是驱动源码目录,不能按构建缓存删除或忽略。清理缓存时使用明确的构建目录,相关方法见[开发与验证](docs/development/firmware.md#清理构建缓存)。
- 第三方组件的 README、许可证和本地补丁记录保留原有位置。不要把参考工程的旧实现误写成当前功能。
+4 -7
View File
@@ -14,15 +14,12 @@
!define MUI_DIRECTORYPAGE_TEXT_TOP "软件仅为当前 Windows 用户安装。请选择有写入权限的文件夹。"
!define MUI_FINISHPAGE_TITLE "安装完成"
; MUI reserves 60 dialog units above the two checkboxes: keep six short lines.
; Optional local guidance is excluded from version control.
!if /FileExists "${__FILEDIR__}/network.local.nsh"
!include "${__FILEDIR__}/network.local.nsh"
; Local overrides are optional; shared event defaults are always available.
!if /FileExists "${__FILEDIR__}\network.local.nsh"
!include "${__FILEDIR__}\network.local.nsh"
!endif
!ifdef RMIC_INSTALLER_WIFI_SSID & RMIC_INSTALLER_WIFI_PASS
!include "${__FILEDIR__}\network.nsh"
!define MUI_FINISHPAGE_TEXT "裁判系统客户端已安装完成。$\r$\n首次启动请选择模式并绑定裁判系统。$\r$\n裁判系统会自动连接以下热点;请将$\r$\n本机也连接到同一网络。$\r$\n名称(SSID):${RMIC_INSTALLER_WIFI_SSID}$\r$\n密码:${RMIC_INSTALLER_WIFI_PASS}"
!else
!define MUI_FINISHPAGE_TEXT "裁判系统客户端已安装完成。$\r$\n首次启动请选择模式并绑定裁判系统。$\r$\n请让本机与裁判系统连接到同一网络。$\r$\n网络名称和密码请向现场工作人员确认。"
!endif
!define MUI_FINISHPAGE_TEXT_LARGE
!define MUI_FINISHPAGE_RUN_TEXT "启动裁判系统客户端"
!define MUI_INSTFILESPAGE_COLORS "E7ECF5 080B13"
+11
View File
@@ -0,0 +1,11 @@
; Shared event hotspot contract, intentionally kept with the installer.
; The firmware must be built with matching WIFI_SSID / WIFI_PASS values.
!ifndef RMIC_INSTALLER_NETWORK
!define RMIC_INSTALLER_NETWORK
!ifndef RMIC_INSTALLER_WIFI_SSID
!define RMIC_INSTALLER_WIFI_SSID "SR-602-2G4"
!endif
!ifndef RMIC_INSTALLER_WIFI_PASS
!define RMIC_INSTALLER_WIFI_PASS "12345678"
!endif
!endif
+1 -1
View File
@@ -11,7 +11,7 @@ export const BUILD = {
minor: 2,
patch: 2,
/** git 提交数,单调递增。 */
build: 39,
build: 40,
/** 线路协议版本。与固件自报的那个数直接比对。 */
protocol: 1,
/** 生成时的提交日期(`YYYY-MM-DD`)。 */
+5 -1
View File
@@ -169,7 +169,11 @@ icacls .\src-tauri\target\x86_64-pc-windows-msvc\release\bundle\nsis\*-setup.exe
NSIS 安装流程使用简体中文,包括欢迎、安装位置、安装完成、覆盖安装、卸载与 WebView2 错误提示。`src-tauri/installer/hooks.nsh` 定义页面提示和安装日志,`SimpChinese.nsh` 定义 Tauri 安装器的补充翻译;`tauri.windows.conf.json` 引用这些脚本和主题图片。沿用 Tauri 默认安装模板和当前用户安装方式;首次启动的模式选择与裁判系统绑定仍在客户端内完成。
默认完成页提示客户端与裁判系统连接同一网络,不内置 Wi-Fi 凭据。现场安装包如需显示热点信息,可将 `src-tauri/installer/network.example.nsh` 复制为同目录的 `network.local.nsh`,填写后重新打包。该本地文件已被 Git 忽略;不要提交它,分发安装包时也需确认其中的热点信息允许分享。
现场裁判系统采用固定热点约定:SSID 为 `SR-602-2G4`,密码为 `12345678`。热点需提供 2.4 GHz Wi-Fi;运行客户端的电脑也应接入同一网络,并允许设备间互访。固定这组参数是为了便于现场连接和调试,安装完成页会直接显示它们。
裁判系统只会连接固件中配置的热点。`WIFI_SSID` 和 `WIFI_PASS` 在编译时写入固件,名称和密码必须匹配;设备不会自动改连其他热点。客户端中的模式选择和设备绑定不修改设备的 Wi-Fi 参数。更换热点时,需修改固件构建配置、重新编译并烧录。
共享现场热点信息保存在 `src-tauri/installer/network.nsh`,随项目维护,普通构建和 CI 构建都会显示。其他部署如需更换安装提示,可将 `network.example.nsh` 复制为同目录的 `network.local.nsh` 并填写;本地覆盖文件已被 Git 忽略。这个覆盖只改变安装提示,不会改变设备固件的连接参数,两边需要同步核对。
视频录制另需可从 `PATH` 找到的 `ffmpeg`,也可以在配置的 `[recording] ffmpeg` 中指定路径;基础图传显示不依赖它。
+22 -2
View File
@@ -3,13 +3,23 @@
"major": 0,
"minor": 2,
"patch": 2,
"build": 39,
"build": 40,
"protocol": 1,
"date": "2026-10-21",
"baseline": "v0.2.1",
"commits": 4,
"commits": 5,
"groups": {
"fix": [
{
"scope": "installer",
"text": "保留现场固定热点约定并说明连接要求",
"breaking": false
},
{
"scope": "installer",
"text": "使用共享热点默认值,并修正本地覆盖配置的包含路径",
"breaking": false
},
{
"scope": "packaging",
"text": "修复 Windows 安装与固件打包并完善客户端文案",
@@ -42,6 +52,16 @@
}
],
"docs": [
{
"scope": "network",
"text": "明确设备按固件中的固定热点参数连接,客户端电脑需接入同一网络,更换热点后需重新编译烧录",
"breaking": false
},
{
"scope": "agents",
"text": "区分现场统一热点约定与个人 Wi-Fi 配置,保留前者及对应安装说明",
"breaking": false
},
{
"scope": null,
"text": "润色项目说明并统一裁判系统术语",
+5 -1
View File
@@ -6,10 +6,12 @@
## v0.2.2 — 2026-10-21
构建号 **39** · 线路协议 **1** · 4 个提交(v0.2.1 → v0.2.2)
构建号 **40** · 线路协议 **1** · 5 个提交(v0.2.1 → v0.2.2)
### 修复
- **installer** · 保留现场固定热点约定并说明连接要求
- **installer** · 使用共享热点默认值,并修正本地覆盖配置的包含路径
- **packaging** · 修复 Windows 安装与固件打包并完善客户端文案
- **installer** · 修复低完整性产物无法写入临时目录的问题,并在 CI 打包前后检查完整性标签
- **firmware** · 从本次 Cargo ELF 打包并同步配套镜像,修正短目录说明与 LLVM 搜索顺序
@@ -19,6 +21,8 @@
### 文档
- **network** · 明确设备按固件中的固定热点参数连接,客户端电脑需接入同一网络,更换热点后需重新编译烧录
- **agents** · 区分现场统一热点约定与个人 Wi-Fi 配置,保留前者及对应安装说明
- 润色项目说明并统一裁判系统术语
- 整理项目文档并统一界面表述
- README 不写死构建号,改由 version.json 提供
+2
View File
@@ -141,6 +141,8 @@ WIFI_PASS='你的Wi-Fi密码'
`.env` 使用简单的 `KEY=value`;值含空格、`#` 或 `$` 时用单引号包围,不使用变量展开或命令替换。脚本会加载 `.env`,直接 `cargo build` 不会自动读取它。上述参数在编译时写入固件,修改后需要重新编译和烧录。`.env` 已被 Git 忽略;固件也包含凭据,分享前应重新配置。
现场使用的固定热点名称、密码和连接步骤见[客户端说明](../desktop/client.md#windows-x64-构建)。裁判系统只连接编译时配置的 SSID,并使用对应密码,不会在运行时改连任意热点;运行客户端的电脑也需接入同一网络。固定这组参数便于现场连接和调试。其他部署更换热点时,需同步修改固件构建参数和安装提示,再重新编译、烧录;仅修改安装提示或客户端绑定不会改变设备的连接目标。
运行时断线恢复不重置摄像头、曝光或增益。首次尝试立即发起,失败后按 1、2、4、8、16、30 秒退避;关联与 DHCP 分别有 15 秒期限。恢复 IP 后丢弃旧采集帧、重建 socket 并重新广播,由客户端自动续订。启动时首次联网仍使用扫描与认证模式探测流程。实现依据 [ESP-IDF 断线事件处理说明](https://docs.espressif.com/projects/esp-idf/en/v5.5.5/esp32s3/api-guides/wifi.html#wifi-event-sta-disconnected)。
## 编译固件
+1 -1
View File
@@ -3,7 +3,7 @@
"major": 0,
"minor": 2,
"patch": 2,
"build": 39,
"build": 40,
"protocol": 1,
"date": "2026-10-21",
"baseline": "v0.2.1",