From 054379dc64b45e2f3d71ef3a388d377ce84835b3 Mon Sep 17 00:00:00 2001 From: sloray Date: Wed, 21 Oct 2026 09:24:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(packaging):=20=E4=BF=AE=E5=A4=8D=20Windows?= =?UTF-8?q?=20=E5=AE=89=E8=A3=85=E4=B8=8E=E5=9B=BA=E4=BB=B6=E6=89=93?= =?UTF-8?q?=E5=8C=85=E5=B9=B6=E5=AE=8C=E5=96=84=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix(installer): 修复低完整性产物无法写入临时目录的问题,并在 CI 打包前后检查完整性标签 - fix(firmware): 从本次 Cargo ELF 打包并同步配套镜像,修正短目录说明与 LLVM 搜索顺序 - fix(installer): 修复中文完成页和页眉遮挡,侧栏使用等比缩放的原始 Logo - style(client): 应用图标增加圆角,统一“裁判系统客户端”命名 - fix(config): 安装提示改用可选本地热点配置,排除 Wi-Fi 凭据 - docs: 润色项目说明并统一裁判系统术语 - test(packaging): 补充 Windows 完整性和固件打包回归,覆盖外部输出目录、旧镜像与重复生成 验证:Windows NSIS 构建及原生页面预览;通用与本地安装配置编译;固件 release 构建、重复打包和客户端离线校验;6 项固件打包回归与 Windows 权限回归;git diff --check。未执行实机烧录。 --- .github/workflows/build-client.yml | 29 +++- README.md | 23 +-- desktop/.gitignore | 3 + desktop/scripts/generate-brand-assets.py | 144 ++++++++++++++++ desktop/scripts/prepare-windows-bundle.ps1 | 137 +++++++++++++++ desktop/scripts/test-windows-bundle.ps1 | 158 ++++++++++++++++++ desktop/src-tauri/icons/128x128.png | Bin 5990 -> 2869 bytes desktop/src-tauri/icons/128x128@2x.png | Bin 11041 -> 5419 bytes desktop/src-tauri/icons/32x32.png | Bin 1422 -> 917 bytes desktop/src-tauri/icons/icon.icns | Bin 93775 -> 73257 bytes desktop/src-tauri/icons/icon.ico | Bin 25384 -> 14029 bytes desktop/src-tauri/icons/icon.png | Bin 22918 -> 12511 bytes desktop/src-tauri/icons/icon.svg | 6 +- desktop/src-tauri/installer/SimpChinese.nsh | 32 ++++ desktop/src-tauri/installer/header.bmp | Bin 0 -> 90342 bytes desktop/src-tauri/installer/header.png | Bin 0 -> 5020 bytes desktop/src-tauri/installer/header.svg | 6 + desktop/src-tauri/installer/hooks.nsh | 47 ++++++ desktop/src-tauri/installer/logo.svg | 8 + .../src-tauri/installer/network.example.nsh | 4 + desktop/src-tauri/installer/sidebar.bmp | Bin 0 -> 665238 bytes desktop/src-tauri/installer/sidebar.png | Bin 0 -> 25990 bytes desktop/src-tauri/installer/sidebar.svg | 14 ++ desktop/src-tauri/tauri.conf.json | 4 +- desktop/src-tauri/tauri.windows.conf.json | 25 +++ desktop/src/components/Boot.tsx | 2 +- desktop/src/components/SettingsPanel.tsx | 2 +- desktop/src/components/TopBar.tsx | 2 +- desktop/src/lib/version.ts | 4 +- desktop/src/pages/TeamPage.tsx | 4 +- docs/design/match-and-broadcast.md | 38 ++--- docs/desktop/client.md | 134 ++++++++------- docs/development/firmware.md | 16 +- docs/hardware/armor.md | 61 ++----- docs/hardware/camera.md | 8 +- docs/index.md | 8 +- docs/maintenance/firmware.md | 23 ++- docs/protocol/udp.md | 36 ++-- docs/releases/changelog-legacy.md | 2 +- docs/releases/changelog.json | 48 +++++- docs/releases/changelog.md | 15 +- docs/setup/firmware.md | 9 +- docs/testing/latency.md | 6 +- docs/testing/performance.md | 12 +- docs/testing/power.md | 18 +- docs/testing/realtime.md | 10 +- docs/testing/stability.md | 8 +- docs/testing/troubleshooting.md | 10 +- scripts/build.ps1 | 24 ++- scripts/package_firmware.py | 85 +++++++--- scripts/test-package-firmware.py | 121 ++++++++++++++ version.json | 4 +- 52 files changed, 1070 insertions(+), 280 deletions(-) create mode 100644 desktop/scripts/generate-brand-assets.py create mode 100644 desktop/scripts/prepare-windows-bundle.ps1 create mode 100644 desktop/scripts/test-windows-bundle.ps1 create mode 100644 desktop/src-tauri/installer/SimpChinese.nsh create mode 100644 desktop/src-tauri/installer/header.bmp create mode 100644 desktop/src-tauri/installer/header.png create mode 100644 desktop/src-tauri/installer/header.svg create mode 100644 desktop/src-tauri/installer/hooks.nsh create mode 100644 desktop/src-tauri/installer/logo.svg create mode 100644 desktop/src-tauri/installer/network.example.nsh create mode 100644 desktop/src-tauri/installer/sidebar.bmp create mode 100644 desktop/src-tauri/installer/sidebar.png create mode 100644 desktop/src-tauri/installer/sidebar.svg create mode 100644 desktop/src-tauri/tauri.windows.conf.json create mode 100644 scripts/test-package-firmware.py diff --git a/.github/workflows/build-client.yml b/.github/workflows/build-client.yml index ffb4bfb..9374235 100644 --- a/.github/workflows/build-client.yml +++ b/.github/workflows/build-client.yml @@ -86,10 +86,12 @@ # 算 —— 只把 LOCALAPPDATA 指走它照样去开原来的路径(报错原文见 run 8 的日志), # 把 USERPROFILE 指走它才跟着走(本机实测:探针 profile 下立刻出现 # all-stores.lock)。 -# 想从根上解决:让 gitea-runner 以**中完整性**启动(在普通终端里跑 +# 现在 Windows 打包要求 gitea-runner 以**中完整性或更高**启动(在普通终端里跑 # run-runner.ps1,而不是从被沙箱化的低完整性 shell 里拉起来),那样这些重定向 # 就都可以撤掉。这台机器上 runner 由计划任务 GiteaRunner-Windows(admin / -# Limited)拉起,但进程链上的完整性已经落到了 Low。 +# Limited)拉起,但进程链上的完整性已经落到了 Low。仅重定向目录仍会产生带 Low +# 标签的 exe;用户运行它时也会变成 Low,NSIS 在执行 .onInit 前就无法写 TEMP。 +# job 开始时检查进程级别;打包前修正输出目录与 exe 标签;上传前只读复查。 # # ── 三个平台都显式写 --target,这不是啰嗦 ──────────────────────────────────── # desktop/.cargo/config.toml 里钉着 `target = "aarch64-apple-darwin"`(本机开发用; @@ -368,12 +370,9 @@ jobs: env: TARGET: x86_64-pc-windows-msvc CARGO_BUILD_TARGET: x86_64-pc-windows-msvc - # 见文件头第 5 条:这台 runner 的 job 跑在**低完整性**(Low Mandatory Level, - # S-1-16-4096)上,而 Windows 不允许低完整性往中完整性写 —— 用户目录全中招: - # ~/.rustup、~/.cargo、%TEMP%、%LOCALAPPDATA% 下新建任何东西都是 - # "Access denied (os error 5)",ACL 再宽松也没用(没有 Deny ACE,是完整性 - # 级别拦的)。所以 CI 用到的每个"家目录"都挪到 runner 自己的工作目录下, - # 那几处在 job 内的写探测里实测可写。换一台 Windows runner 时改这几行。 + # 这些隔离缓存路径沿用原 runner 配置。见文件头第 5 条:此前通过重定向 + # 目录绕过 Low 进程的写入限制,但产物也会带 Low 标签。现在 job 开始时 + # 要求进程达到 Medium;目录重定向仅用于缓存隔离,不能替代完整性检查。 RUSTUP_HOME: C:\Users\admin\runner\windows\cache\ci-rustup CARGO_HOME: C:\Users\admin\runner\windows\cache\ci-cargo # LOCALAPPDATA/APPDATA 也得改:pnpm 12 的 store 锁与 cache/state 都挂在 @@ -391,6 +390,10 @@ jobs: with: fetch-depth: 0 + - name: 检查 Windows 打包进程完整性 + shell: pwsh + run: ./desktop/scripts/prepare-windows-bundle.ps1 -CheckProcessOnly + # 宿主模式的 Windows runner 上,PATH 里的 `bash` 是 C:\Windows\System32\bash.exe # —— WSL 的启动器,而 WSL 在 runner 账户下起不来,报 E_ACCESSDENIED(日志里是 # 一串 GBK 被当 UTF-8 解出来的乱码 + https://github.com/microsoft/WSL/issues)。 @@ -497,6 +500,16 @@ jobs: working-directory: desktop run: pnpm tauri build --target ${{ env.TARGET }} --bundles nsis + - name: 检查安装包与主程序完整性标签 + working-directory: desktop + shell: pwsh + run: ./scripts/prepare-windows-bundle.ps1 -CheckOnly + + - name: Windows 安装包权限回归(不安装应用) + working-directory: desktop + shell: pwsh + run: ./scripts/test-windows-bundle.ps1 + - name: 上传产物 uses: actions/upload-artifact@v3 with: diff --git a/README.md b/README.md index d517fc2..79f5b6d 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ **黑龙江大学 602 实验室 · Simba Robotics** -面向机器人对抗赛的局域网图传与装甲板系统。ESP32-S3 采集 OV5640 的硬件 JPEG,经 UDP 发送到桌面端;ESP32-C3 上报装甲板血量,桌面端提供操作手视野、裁判双路监看、截图录制和 USB 固件维护。 +本项目面向机器人对抗赛,提供局域网图传与装甲板系统。ESP32-S3 采集 OV5640 的硬件 JPEG,经 UDP 发送到桌面端;ESP32-C3 上报装甲板血量。桌面端提供操作手视野、裁判双路监看、截图录制和 USB 固件维护。 [![Firmware: ESP32-S3](https://img.shields.io/badge/Firmware-ESP32--S3-00979D)](docs/setup/firmware.md) [![Armor: ESP32-C3](https://img.shields.io/badge/Armor-ESP32--C3-00979D)](docs/hardware/armor.md) @@ -59,7 +59,7 @@ flowchart LR | 网络项 | 配置 | 说明 | | :--- | :--- | :--- | -| 图传板 Wi-Fi | 2.4 GHz | 板卡与客户端需处于可互通的局域网 | +| 图传板 Wi-Fi | 2.4 GHz | 裁判系统与客户端需处于可互通的局域网 | | 视频与发现 | UDP `5600` | Hello、Subscribe 与 JPEG 分片 | | 装甲板上报 | UDP `5601` | 每 200 ms 广播四路血量 | | 本地界面通道 | 回环 WebSocket + Tauri IPC | JPEG 由 WebView 解码,网络接收线程不做视频解码 | @@ -71,13 +71,13 @@ flowchart LR | 模块 | 已有功能 | 使用条件与边界 | | :--- | :--- | :--- | -| 图传固件 | VGA 彩色 JPEG、UDP 分片、多端订阅、Wi-Fi 重连、过期帧放弃 | 当前记录约 30 fps;不同网络、板卡与画质下需复测[^performance] | +| 图传固件 | VGA 彩色 JPEG、UDP 分片、多端订阅、Wi-Fi 重连、过期帧放弃 | 当前记录约 30 fps;不同网络、裁判系统与画质下需复测[^performance] | | 用户端 | 本队画面、双方装甲条、瞄准器、偏移校准、命中反馈 | 先绑定图传板与装甲板;改绑、切换模式和退出受密码限制 | | 裁判端 | 双路画面、队名编辑、装甲板发现、槽位分配、截图、录制与回放 | 录制需要 ffmpeg;图传槽位可手动指定 | | 装甲板 | 四路受击检测与灯带、整车血量、UDP 上报 | 初始 100 血,每次受击扣 3 点;队伍号在编译期选择 | | 固件维护 | USB 读取设备、检查固件包、选择候选槽位、备份和写后回读 | App 写入与回读已有实机记录;完整分区切换尚未验证 | -发送端在有限预算内提交当前帧,超时后转向新帧;本地视频通道与 WebView 会放弃滞留超过 100 ms 的旧帧。这个期限约束的是本机积压,**不代表相机到屏幕的端到端延迟**。 +发送端在限定时间内提交当前帧,超时后转向新帧;本地视频通道与 WebView 会放弃滞留超过 100 ms 的旧帧。这个期限只约束本机积压,**不代表相机到屏幕的端到端延迟**。 > [!WARNING] > 固件维护会写入设备 Flash。使用前核对芯片、分区和备份,并阅读[已验证与未验证范围](docs/maintenance/firmware.md#已验证--未验证)。ESP32-S3 与 ESP32-C3 的固件不能混用。 @@ -86,7 +86,7 @@ flowchart LR ## 快速开始 -### 1. 无板卡:先看界面 +### 1. 无裁判系统:先看界面 安装 Node.js 和 pnpm 后,在仓库根目录执行: @@ -96,12 +96,12 @@ pnpm install --frozen-lockfile pnpm dev ``` -打开 [用户端预览](http://127.0.0.1:1420/) 或 [裁判端预览](http://127.0.0.1:1420/?preview=referee)。预览由浏览器合成状态和画面,无需 Rust 后端或板卡。 +打开 [用户端预览](http://127.0.0.1:1420/) 或 [裁判端预览](http://127.0.0.1:1420/?preview=referee)。预览由浏览器合成状态和画面,无需 Rust 后端或裁判系统。 > [!TIP] > 检查首次启动流程时,可使用 `?preview=first-run` 和 `?preview=password`。需要测试实际接收、重组和录制路径时,使用原生客户端的 `--demo` 模式;两种方式显示的都是合成数据。 -### 2. 连接板卡:运行桌面端 +### 2. 连接裁判系统:运行桌面端 先按[客户端说明](docs/desktop/client.md#快速开始)安装宿主平台依赖。Windows x64 需要 Rust stable MSVC、Visual Studio C++ Build Tools、Windows SDK 和 WebView2;录制另需 ffmpeg。 @@ -141,7 +141,7 @@ pnpm app --target x86_64-unknown-linux-gnu -- --locked --config 'unstable.build- -首次启动选择用户端或裁判端。用户端需要设置现场密码并绑定本车板卡;裁判端自动分配图传槽位,装甲板按上报队伍分配。对应关系不符时,在设置中手动指定。 +首次启动时选择用户端或裁判端。用户端需要设置现场密码并绑定本车裁判系统;裁判端自动分配图传槽位,并按装甲板上报的队伍分配装甲槽位。对应关系不符时,可在设置中手动指定。 ### 3. 编译图传或装甲固件 @@ -162,9 +162,12 @@ if (-not (Test-Path -LiteralPath .env)) { Copy-Item -LiteralPath .env.example -Destination .env } # 用编辑器填写 .env 中的 Wi-Fi 配置后再构建。 +$env:CARGO_TARGET_DIR = 'C:\s3vt' .\scripts\build.ps1 -Package ``` +Windows 必须使用可写的短输出目录,且不要与其他项目共用。`esp-idf-sys` 检查完整的构建输出路径,超过 88 字符会报 `Too long output directory`;仓库位于用户目录时,默认的 `target/` 通常会超限。这里将构建缓存放到 `C:\s3vt`,无需移动源码;`subst` 不能绕过该限制。固件 ZIP 仍输出到仓库的 `target/firmware/`。该环境变量仅供固件构建使用,切回桌面端前执行 `Remove-Item Env:CARGO_TARGET_DIR`。 + Linux / macOS(Bash): ```bash @@ -246,7 +249,7 @@ cargo +stable test --locked --manifest-path desktop/core/Cargo.toml --target x86 cargo +stable check --locked --manifest-path desktop/src-tauri/Cargo.toml --target x86_64-pc-windows-msvc --config 'unstable.build-std=[]' ``` -录制相关测试会调用 ffmpeg / ffprobe。主机测试、前端构建通过后,仍需按变更范围检查真实 WebView、板卡与网络行为。 +录制相关测试会调用 ffmpeg / ffprobe。主机测试、前端构建通过后,仍需按变更范围检查真实 WebView、裁判系统与网络行为。 @@ -261,7 +264,7 @@ node scripts/version.mjs --check ## 文档与后续工作 -文档沿用 Firefox 仓库的分类与索引思路:根目录保留项目入口和协作约定,详细说明集中到 [`docs/index.md`](docs/index.md)。 +文档参照 Firefox 仓库的分类与索引方式组织。根目录保留项目入口和协作约定,详细说明从 [`docs/index.md`](docs/index.md) 查阅。 | 要做什么 | 从哪里开始 | | :--- | :--- | diff --git a/desktop/.gitignore b/desktop/.gitignore index 64786d4..13af5d6 100644 --- a/desktop/.gitignore +++ b/desktop/.gitignore @@ -18,3 +18,6 @@ dist/ # 测试运行时被 XDG_CONFIG_HOME 相对路径写出来的配置,不是仓库内容。 src-tauri/.config/ + +# Installer hotspot guidance is local configuration. +/src-tauri/installer/network.local.nsh diff --git a/desktop/scripts/generate-brand-assets.py b/desktop/scripts/generate-brand-assets.py new file mode 100644 index 0000000..cd9e1cd --- /dev/null +++ b/desktop/scripts/generate-brand-assets.py @@ -0,0 +1,144 @@ +"""Render the existing SVG brand sources with Tauri, then export PNG/ICO/ICNS/BMP. + +Requires the installed desktop Node dependencies and Python's Pillow package. +Text is rasterized with Pillow so exports do not depend on the SVG renderer's +font discovery. No dependency is added to the application or its build hooks. +""" + +import argparse +import copy +import io +import os +from pathlib import Path +import shutil +import struct +import subprocess +import tempfile +import xml.etree.ElementTree as ET + +from PIL import Image, ImageDraw, ImageFont + +DESKTOP = Path(__file__).resolve().parents[1] +ICONS = DESKTOP / "src-tauri/icons" +INSTALLER = DESKTOP / "src-tauri/installer" +SVG = "{http://www.w3.org/2000/svg}" +ET.register_namespace("", SVG[1:-1]) + + +def system_font(monospace=False, bold=False): + fonts = Path(os.environ.get("WINDIR", "C:/Windows")) / "Fonts" + candidates = ( + [fonts / ("consolab.ttf" if bold else "consola.ttf"), + Path("/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf")] + if monospace else + [fonts / ("msyhbd.ttc" if bold else "msyh.ttc"), + Path("/System/Library/Fonts/PingFang.ttc"), + Path("/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc")] + ) + for path in candidates: + if path.exists(): + return path + raise RuntimeError("Set --sans-font and --mono-font to installed fonts supporting the artwork's text.") + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--sans-font", type=Path) + parser.add_argument("--mono-font", type=Path) + args = parser.parse_args() + node = shutil.which("node") + cli = DESKTOP / "node_modules/@tauri-apps/cli/tauri.js" + if not node or not cli.exists(): + raise RuntimeError("Install Node and run pnpm install --frozen-lockfile in desktop/ first.") + + with tempfile.TemporaryDirectory(prefix="rmic-brand-") as temporary: + scratch = Path(temporary) + + def render(root, size): + source = scratch / "source.svg" + ET.ElementTree(root).write(source, encoding="utf-8", xml_declaration=True) + subprocess.run([node, str(cli), "icon", str(source), "--output", str(scratch), + "--png", str(size)], cwd=DESKTOP, check=True, capture_output=True) + with Image.open(scratch / f"{size}x{size}.png") as image: + return image.convert("RGBA") + + original = ET.parse(ICONS / "icon.svg").getroot() + images = {} + for size in (16, 20, 24, 32, 48, 64, 128, 256, 512, 1024): + root = copy.deepcopy(original) + scale = 0.97 if size <= 48 else 0.88 if size <= 128 else 0.82 + group = root.find(f"{SVG}g") + group.set("transform", group.get("transform").replace("scale(0.82)", f"scale({scale})")) + images[size] = render(root, size) + for filename, size in (("32x32.png", 32), ("128x128.png", 128), + ("128x128@2x.png", 256), ("icon.png", 512)): + images[size].save(ICONS / filename) + + def png(size): + stream = io.BytesIO() + images[size].save(stream, format="PNG") + return stream.getvalue() + + # Supply every ICO size separately, preserving optical scaling at 16–48px. + entries, payloads = [], [] + sizes = (16, 20, 24, 32, 48, 64, 128, 256) + offset = 6 + 16 * len(sizes) + for size in sizes: + data = png(size) + entries.append(struct.pack("I", 8 + len(data)) + data) + body = b"".join(chunks) + (ICONS / "icon.icns").write_bytes(b"icns" + struct.pack(">I", 8 + len(body)) + body) + + for name in ("header", "sidebar"): + root = ET.parse(INSTALLER / f"{name}.svg").getroot() + width, height = int(root.get("width")), int(root.get("height")) + text = [] + for element in list(root): + if element.tag == f"{SVG}text": + text.append(element) + root.remove(element) + elif element.tag == f"{SVG}image": + # Installer art may reference the unframed original mark. + # Preserve its own viewBox instead of replacing every image + # with the square application icon. + source = (INSTALLER / element.get("href")).resolve() + logo = ET.parse(source).getroot() + for attr in ("x", "y", "width", "height"): + logo.set(attr, element.get(attr)) + logo.set("preserveAspectRatio", "xMidYMid meet") + index = list(root).index(element) + root.remove(element) + root.insert(index, logo) + edge = max(width, height) + root.set("width", str(edge)) + root.set("height", str(edge)) + root.set("viewBox", f"0 0 {edge} {edge}") + factor = 4 + image = render(root, edge * factor) + draw = ImageDraw.Draw(image) + for element in text: + mono = element.get("font-family") == "monospace" + bold = element.get("font-weight") == "700" + font_path = (args.mono_font if mono else args.sans_font) or system_font(mono, bold) + font = ImageFont.truetype(str(font_path), round(float(element.get("font-size")) * factor)) + draw.text((float(element.get("x")) * factor, float(element.get("y")) * factor), + element.text, font=font, fill=element.get("fill"), anchor="ls") + image = image.crop((0, 0, width * factor, height * factor)).convert("RGB") + image.resize((width, height), Image.Resampling.LANCZOS).save(INSTALLER / f"{name}.png") + # MUI scales these to the dialog's font/DPI. Supply 2x bitmaps so + # Windows does not have to enlarge the raster text on modern screens. + image.resize((width * 2, height * 2), Image.Resampling.LANCZOS).save(INSTALLER / f"{name}.bmp") + print("Generated rounded PNG/ICO/ICNS icons and 24-bit NSIS header/sidebar artwork.") + + +if __name__ == "__main__": + main() diff --git a/desktop/scripts/prepare-windows-bundle.ps1 b/desktop/scripts/prepare-windows-bundle.ps1 new file mode 100644 index 0000000..b4bcae2 --- /dev/null +++ b/desktop/scripts/prepare-windows-bundle.ps1 @@ -0,0 +1,137 @@ +# Windows uses the executable's integrity label when creating its process. A Low +# label inherited from a sandboxed workspace prevents NSIS from writing to TEMP, +# before .onInit or any installer hook can run. +[CmdletBinding()] +param( + [string]$OutputDir, + [switch]$CheckProcessOnly, + [switch]$CheckOnly +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version Latest + +# whoami's group names are localized; the mandatory-label SID is stable. +$groups = (& whoami.exe /groups) -join "`n" +if ($LASTEXITCODE -ne 0 -or $groups -notmatch 'S-1-16-(\d+)') { + throw 'Cannot determine the Windows process integrity level.' +} +if ([int]$Matches[1] -lt 8192) { + throw 'Windows packaging requires Medium integrity or higher. Start the terminal / CI runner outside the Low integrity sandbox. Redirecting TEMP or changing directory write permissions does not fix executable integrity labels.' +} +if ($CheckProcessOnly) { return } + +if (-not ('RmicBundleIntegrity' -as [type])) { + $compilerOptions = @{} + if ($PSVersionTable.PSEdition -eq 'Desktop') { + # Framework CodeDOM otherwise tries to label its private temp directory + # High when an admin token has been capped at Medium by an exe label. + $parameters = New-Object System.CodeDom.Compiler.CompilerParameters + $parameters.ReferencedAssemblies.Add('System.dll') | Out-Null + $parameters.TempFiles = New-Object System.CodeDom.Compiler.TempFileCollection([IO.Path]::GetTempPath(), $false) + $compilerOptions.CompilerParameters = $parameters + } + Add-Type @compilerOptions -TypeDefinition @' +using System; +using System.ComponentModel; +using System.Runtime.InteropServices; + +public static class RmicBundleIntegrity { + [DllImport("advapi32.dll", CharSet = CharSet.Unicode)] + private static extern uint GetNamedSecurityInfoW(string name, int type, uint info, + out IntPtr owner, out IntPtr group, out IntPtr dacl, out IntPtr sacl, out IntPtr sd); + [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern bool ConvertSecurityDescriptorToStringSecurityDescriptorW( + IntPtr sd, uint revision, uint info, out IntPtr text, out uint length); + [DllImport("kernel32.dll")] + private static extern IntPtr LocalFree(IntPtr memory); + + public static string ReadLabel(string path) { + // LABEL_SECURITY_INFORMATION reads only the label, without requiring the + // SeSecurityPrivilege needed to read an entire SACL (Get-Acl -Audit). + IntPtr owner, group, dacl, sacl, sd, text = IntPtr.Zero; + uint error = GetNamedSecurityInfoW(path, 1, 0x10, out owner, out group, + out dacl, out sacl, out sd); + if (error != 0) throw new Win32Exception((int)error, path); + try { + uint length; + if (!ConvertSecurityDescriptorToStringSecurityDescriptorW(sd, 1, 0x10, + out text, out length)) throw new Win32Exception(Marshal.GetLastWin32Error()); + return Marshal.PtrToStringUni(text); + } finally { + if (text != IntPtr.Zero) LocalFree(text); + LocalFree(sd); + } + } +} +'@ +} + +function Assert-MediumIntegrity([string]$Path) { + $label = [RmicBundleIntegrity]::ReadLabel($Path) + # An absent label is Medium. Windows may render known SIDs as SDDL aliases. + if ($label -match ';(LW|UN|S-1-16-(\d+))\)') { + if ($Matches[1] -in @('LW', 'UN') -or [int]$Matches[2] -lt 8192) { + throw "Low / Untrusted integrity label on $Path. Run prepare-windows-bundle.ps1 from a normal Windows terminal before distributing this artifact." + } + } +} + +$hostOutputDir = $null +if (-not $OutputDir) { + # Ask Cargo so CARGO_TARGET_DIR and Cargo's target-dir setting are respected. + $manifest = Join-Path $PSScriptRoot '../src-tauri/Cargo.toml' + $metadata = & cargo +stable metadata --no-deps --format-version 1 --manifest-path $manifest + if ($LASTEXITCODE -ne 0) { throw 'Cannot resolve the Cargo output directory.' } + $target = $env:TAURI_ENV_TARGET_TRIPLE + if (-not $target) { $target = 'x86_64-pc-windows-msvc' } + $profile = if ($env:TAURI_ENV_DEBUG -eq 'true') { 'debug' } else { 'release' } + $targetDir = ($metadata | ConvertFrom-Json).target_directory + $OutputDir = Join-Path $targetDir "$target/$profile" + # Cross-target Cargo builds also run host build scripts from target/. + # Old Low executables there can fail before the bundling hook is reached. + $hostOutputDir = Join-Path $targetDir $profile +} +$OutputDir = [IO.Path]::GetFullPath($OutputDir) + +# Limit changes to build outputs. Do not relabel the workspace, TEMP, user data, +# or DACLs, and do not request elevation for the installer. +$directories = @( + $OutputDir + (Join-Path $OutputDir 'bundle') + (Join-Path $OutputDir 'bundle/nsis') + (Join-Path $OutputDir 'nsis') +) +if ($hostOutputDir) { $directories = @($hostOutputDir) + $directories } +if (Test-Path -LiteralPath (Join-Path $OutputDir 'nsis')) { + $directories += @(Get-ChildItem -LiteralPath (Join-Path $OutputDir 'nsis') -Directory -Recurse | + Select-Object -ExpandProperty FullName) +} +foreach ($directory in $directories) { + if (-not $CheckOnly) { + New-Item -ItemType Directory -Force -Path $directory | Out-Null + & icacls.exe $directory /setintegritylevel '(OI)(CI)M' | Out-Null + if ($LASTEXITCODE -ne 0) { throw "Cannot set Medium integrity on $directory" } + } + Assert-MediumIntegrity $directory +} + +$executables = @(Get-ChildItem -LiteralPath $OutputDir -Filter '*.exe' -File) +foreach ($directory in @('nsis', 'bundle/nsis')) { + $executables += @(Get-ChildItem -LiteralPath (Join-Path $OutputDir $directory) -Filter '*.exe' -File -Recurse) +} +if ($hostOutputDir -and (Test-Path -LiteralPath (Join-Path $hostOutputDir 'build'))) { + $executables += @(Get-ChildItem -LiteralPath (Join-Path $hostOutputDir 'build') -Filter '*.exe' -File -Recurse) +} +foreach ($executable in $executables) { + if (-not $CheckOnly) { + # Also replace explicit Low labels left by an earlier Low integrity build. + & icacls.exe $executable.FullName /setintegritylevel M | Out-Null + if ($LASTEXITCODE -ne 0) { throw "Cannot set Medium integrity on $($executable.FullName)" } + } + Assert-MediumIntegrity $executable.FullName +} +if ($CheckOnly -and -not (Get-ChildItem -LiteralPath (Join-Path $OutputDir 'bundle/nsis') -Filter '*.exe' -File)) { + throw "No NSIS installer found in $OutputDir/bundle/nsis." +} +Write-Host "Windows bundle integrity verified: $OutputDir ($($executables.Count) executables)." diff --git a/desktop/scripts/test-windows-bundle.ps1 b/desktop/scripts/test-windows-bundle.ps1 new file mode 100644 index 0000000..aafee44 --- /dev/null +++ b/desktop/scripts/test-windows-bundle.ps1 @@ -0,0 +1,158 @@ +# Integration regression: actual Windows labels, child process tokens, and an +# NSIS bootstrap that writes to TEMP and exits without installing anything. +[CmdletBinding()] +param( + [string]$NsisCompiler = (Join-Path $env:LOCALAPPDATA 'tauri/NSIS/makensis.exe') +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version Latest +$prepare = Join-Path $PSScriptRoot 'prepare-windows-bundle.ps1' +& $prepare -CheckProcessOnly +if (-not (Test-Path -LiteralPath $NsisCompiler)) { throw "NSIS compiler not found: $NsisCompiler" } + +function Assert([bool]$Condition, [string]$Message) { + if (-not $Condition) { throw $Message } +} + +$testId = [Guid]::NewGuid().ToString('N') +$tempRoot = [IO.Path]::GetFullPath([IO.Path]::GetTempPath()) +$fixture = Join-Path $tempRoot "rmic bundle test $testId" +$probeFile = Join-Path $tempRoot "rmic-nsis-temp-$testId.txt" +$installer = Join-Path $fixture 'bundle/nsis/probe-setup.exe' +$main = Join-Path $fixture 'cam-desktop.exe' +try { + New-Item -ItemType Directory -Force -Path (Join-Path $fixture 'bundle/nsis'), (Join-Path $fixture 'nsis/x64') | Out-Null + Copy-Item -LiteralPath (Join-Path $env:WINDIR 'System32/whoami.exe') -Destination $main + $accessBefore = (Get-Acl -LiteralPath $main).Sddl + + # A small real NSIS executable exercises its early TEMP validation and + # plugin extraction without touching app files, registry, or shortcuts. + $source = Join-Path $fixture 'probe.nsi' + @" +Unicode true +Name "RMIC temporary directory probe" +OutFile "$($installer.Replace('$', '$$'))" +RequestExecutionLevel user +SilentInstall silent +Section + InitPluginsDir + FileOpen `$0 "`$TEMP\rmic-nsis-temp-$testId.txt" w + IfErrors failed + FileWrite `$0 "NSIS TEMP writable" + FileClose `$0 + SetErrorLevel 0 + Quit +failed: + SetErrorLevel 3 +SectionEnd +"@ | Set-Content -LiteralPath $source -Encoding UTF8 + & $NsisCompiler /V2 $source + Assert ($LASTEXITCODE -eq 0) 'Cannot compile the NSIS TEMP probe.' + + & icacls.exe $fixture /setintegritylevel '(OI)(CI)L' | Out-Null + Assert ($LASTEXITCODE -eq 0) 'Cannot create a Low integrity fixture.' + & icacls.exe $main /setintegritylevel L | Out-Null + Assert ($LASTEXITCODE -eq 0) 'Cannot create an explicit Low executable label.' + $before = (& $main /groups) -join "`n" + Assert ($LASTEXITCODE -eq 0 -and $before -match 'S-1-16-4096') 'Low executable did not start with a Low token.' + + $rejected = $false + try { & $prepare -OutputDir $fixture -CheckOnly } catch { + if ($_.Exception.Message -notmatch 'Low / Untrusted') { throw } + $rejected = $true + } + Assert $rejected 'Read-only artifact verification accepted a Low label.' + Assert ([RmicBundleIntegrity]::ReadLabel($installer) -match ';LW\)') 'Read-only verification changed the installer.' + + # A Low process must fail before it tries to modify any output labels. + $lowShell = Join-Path $fixture 'low-shell.exe' + Copy-Item -LiteralPath (Join-Path $env:WINDIR 'System32/WindowsPowerShell/v1.0/powershell.exe') -Destination $lowShell + # Windows PowerShell 5 treats redirected native stderr as ErrorRecord objects. + # This command is expected to fail, so collect its diagnostic before asserting. + try { + $ErrorActionPreference = 'Continue' + $lowOutput = (& $lowShell -NoProfile -ExecutionPolicy Bypass -File $prepare -CheckProcessOnly 2>&1) -join "`n" + } finally { + $ErrorActionPreference = 'Stop' + } + Assert ($LASTEXITCODE -ne 0 -and $lowOutput -match 'requires Medium integrity') 'Low packaging process was not rejected.' + + & $prepare -OutputDir $fixture + & $prepare -OutputDir $fixture -CheckOnly + & $prepare -OutputDir $fixture + $after = (& $main /groups) -join "`n" + Assert ($LASTEXITCODE -eq 0 -and $after -match 'S-1-16-(\d+)' -and [int]$Matches[1] -ge 8192) 'Repaired executable still starts below Medium integrity.' + Assert ((Get-Acl -LiteralPath $main).Sddl -eq $accessBefore) 'Repair changed the executable DACL.' + + # The repaired shell now starts at Medium even from an elevated test runner. + # Verify that repairing owned Low outputs does not require elevation. + $mediumFixture = Join-Path $fixture 'medium repair' + New-Item -ItemType Directory -Path $mediumFixture | Out-Null + & icacls.exe $mediumFixture /setintegritylevel '(OI)(CI)L' | Out-Null + Assert ($LASTEXITCODE -eq 0) 'Cannot prepare the Medium-process repair fixture.' + $mediumOutput = (& $lowShell -NoProfile -ExecutionPolicy Bypass -File $prepare -OutputDir $mediumFixture 2>&1) -join "`n" + Assert ($LASTEXITCODE -eq 0) "Repair failed at Medium integrity: $mediumOutput" + Assert ([RmicBundleIntegrity]::ReadLabel($mediumFixture) -match ';ME\)') 'Medium process did not repair the output label.' + + $probe = Start-Process -FilePath $installer -ArgumentList '/S' -PassThru -WindowStyle Hidden + try { + Assert ($probe.WaitForExit(15000)) 'NSIS TEMP probe timed out.' + Assert ($probe.ExitCode -eq 0) "NSIS TEMP probe failed: $($probe.ExitCode)" + Assert ((Get-Content -LiteralPath $probeFile -Raw) -eq 'NSIS TEMP writable') 'NSIS could not write to the normal TEMP directory.' + } finally { + if (-not $probe.HasExited) { $probe.Kill(); $probe.WaitForExit() } + $probe.Dispose() + } + + $emptyOutput = Join-Path $fixture 'empty' + & $prepare -OutputDir $emptyOutput + $rejected = $false + try { & $prepare -OutputDir $emptyOutput -CheckOnly } catch { + if ($_.Exception.Message -notmatch 'No NSIS installer') { throw } + $rejected = $true + } + Assert $rejected 'Artifact verification accepted missing installers.' + + # Exercise automatic Cargo output discovery, debug target selection and the + # separate host build-script directory, without invoking a real Rust build. + $savedEnvironment = @{} + foreach ($name in @('CARGO_TARGET_DIR', 'TAURI_ENV_TARGET_TRIPLE', 'TAURI_ENV_DEBUG')) { + $savedEnvironment[$name] = @{ + Exists = Test-Path -LiteralPath "Env:$name" + Value = [Environment]::GetEnvironmentVariable($name, 'Process') + } + } + try { + $env:CARGO_TARGET_DIR = Join-Path $fixture 'cargo cache' + $env:TAURI_ENV_TARGET_TRIPLE = 'x86_64-pc-windows-msvc' + $env:TAURI_ENV_DEBUG = 'true' + $hostBuildDir = Join-Path $env:CARGO_TARGET_DIR 'debug/build/probe' + New-Item -ItemType Directory -Force -Path $hostBuildDir | Out-Null + $hostScript = Join-Path $hostBuildDir 'build-script-build.exe' + Copy-Item -LiteralPath $main -Destination $hostScript + & icacls.exe $env:CARGO_TARGET_DIR /setintegritylevel '(OI)(CI)L' | Out-Null + Assert ($LASTEXITCODE -eq 0) 'Cannot create Low host build outputs.' + & $prepare + Assert ([RmicBundleIntegrity]::ReadLabel($hostScript) -match ';ME\)') 'Host build script was not repaired.' + $targetOutput = Join-Path $env:CARGO_TARGET_DIR 'x86_64-pc-windows-msvc/debug/bundle/nsis' + Assert (Test-Path -LiteralPath $targetOutput) 'Cargo target directory or debug profile was ignored.' + } finally { + foreach ($name in $savedEnvironment.Keys) { + if ($savedEnvironment[$name].Exists) { + Set-Item -LiteralPath "Env:$name" -Value $savedEnvironment[$name].Value + } else { + Remove-Item -LiteralPath "Env:$name" -ErrorAction SilentlyContinue + } + } + } + Write-Host 'PASS: Low token reproduction, process guard, read-only rejection, label repair, unchanged DACL, repeat repair, NSIS TEMP bootstrap, missing artifacts, custom Cargo output and host build scripts.' +} finally { + # Only delete this test's uniquely named fixture, after checking its absolute path. + $resolvedFixture = [IO.Path]::GetFullPath($fixture) + if ($resolvedFixture.StartsWith($tempRoot.TrimEnd('\') + '\', [StringComparison]::OrdinalIgnoreCase) -and + (Split-Path -Leaf $resolvedFixture) -eq "rmic bundle test $testId") { + if (Test-Path -LiteralPath $resolvedFixture) { Remove-Item -LiteralPath $resolvedFixture -Recurse -Force } + } + if (Test-Path -LiteralPath $probeFile) { Remove-Item -LiteralPath $probeFile -Force } +} diff --git a/desktop/src-tauri/icons/128x128.png b/desktop/src-tauri/icons/128x128.png index e1e21f5a83022f9d6112a7ff35313df67570407d..204c42de0f2758d55bf25e39516226411437dcf5 100644 GIT binary patch literal 2869 zcmV-53(E9~P) zPjFMm9mjwBkdZvdMq_iW?Vg%834d-(5NNYbXKTI!{T#Fb<`2oT!N?-?_;^!DlP)9%}Sdi%L# zBE-|8-*04~NGnm@{B7qc}!%O9y!N2*ZF|B3(%m>I4T zauFIDj{Efr+yXF$*AxQB60zpr@_Ga=0VI;!x`CE106+)#01W}<3)b6(``^xa{X3S| zHztxT9{?@gFviyxI~3E>jmG4*-w5*n=<**HmoJzEFJurhmxwjJT`eS#s>Xkuzd-?Z z3Ll^$kZK{`(EOU42$&(j7(e{r#Kj4Ww&WIo?e@*guMZIvmoahoE`UU`<(P^2^#j_n zG1+?3Qx5R7)WdAwP;U_Hwek{ig9or<#cG{zs7Gk&LU}&0K>&qfe!$fEbxp@p8&`&a z)p|ewZ`0S0K({cqdDq(7!7~ql$}q;Se{35UAN5vvfW~CY|BL{l;|1ce=I>*J$o2q< zrq*6#{OEwTE<9Pb_ioq%z|9=02W1GBHJjTZAhD%|2K@O34JfQE5zB7;7$OPU-og!> zst00FMXB4u-Mh*@-=Gw zKzBZy{~P?|^`A<6ek46W|9gi+VSEI=)ZRUBfGi^C0nqT@eEkK4iF7&x&pp3O%Cln- zL1emAnPE#tMG!d;VAx0`JwO;q0fhs_N6=P!V*md=D+ZThn`?fq@c`s(d6s%t$LsRIvXFE`fv=Y z8Mhj>B!N~vCw>Rs`330C-aT)+E=tXMi0#u23E!Vzw|#(gCd1Y7J3liGZEfGHd`>z8 zhYlYVJi4;a$go4eY-}@hmEz1q@K8JnY2tq#*L4oSLs#c3@R#dew$0w@E^#&5n}fUR3A+pAZu{tDojx;DacILWf%MZ+%;j=+$dQQ=fQJR8(UBp~Wg&)# zb7!XmkL7+b0;mGc>d$ZAbS(2&hc;LVq|EKzelatQ5IrJ=u{T65=aawM~~>$ zQ8XSvz&e4`tUf<;+Ob23g8JbLyR=zXFdo1oV~h-+HLKBUJ;xWw6P9G#WSiTdf_O>v4e>iiEd= zH_9nim7y&Z0yuZ}6w?4s%dH~et;yRt#i}~AX)gfQ@hJqGE;3`IpPKv}r&v{nwonLw z^@XyQTSdZKlXr27Rds07UI4h<$}#}!sFf)E)a2(l#i}y2X)gdj%dH~et;vsaidAK3 z3xxo9ms>@`Ta%}Jh*f21(_R3)%dMi}t;tVtidAK33xxo9ms>@`Ta)kbu{S_vXw!aA zAn$UkNJMtBl8HY)&Fr4mT-OgD{O&+FS5MK{|$085WSYbKc<8(V`Egd`^kD_^jbsLFN z0R(Zn$L(?@-kMz3qi9~i@7nE$rUFj_@z}Gd0ac?snd3dCjkEte<0em0;AhDG{Q%Z& zB!LUS?P^rn|8She|NQC;$JvZE`N6&;pn^NM=K{F}OvH~_S+bT}WwAcqt86#3K#vsE z6>#|7*BZ)d5`d~q8e_idcC!<1T|ya%_%SQrA;9e_^&r5^-bwxV`p@?FC>c}FJNv7a zt15nfSc(8Xx%@lkikl%=SU+YZEd;nNw;J^O{bAuAAgC=Xzlpz=h9Jg&-@iK$PWb3Dt(%MfR7&L%< zR9N}0mup8*Jl51p0Pad1mq9vc!$d>V0PD}00>FGA-q74_L=axkc4))(SwGjFz-J;b zYXzYLZC1_r_WQg(Fp+FI1{6LJGCD&53E$E&Z*S!wk=)h|v~DH~d|{A8L0Ei}?W~1oehb#F{s>ce$P+Vjzj8)?PwkpXnO} zm*C-geqs5$i#0zB1Y_q3Q0fLsI)Fe20lL$K3V*E5aI%2AcX0zJ?&0H!?_T&np&+|U Tk2!NFVPvD2^mC`=rv>n(W6E0 zy|>Y?@BIVrU1yzh)_T_YE=}f741Q>qSO~VU@?D8eXS|y`ZwYShVVF{XlqCK(XYhKF!)`!+ z-tj`Q?~39t5*Pj`gyvEhP|P^8<%a#Wdp5-e0=8ZYUT6KtOm4u{)$yqE9?RX4|rVr;TJkt&KEy> zLxB)R3t#|z>rEy4@bJ2?SYP*%qQmszLe9X4Fj&j!GP<6T8x$fT=Xx?(*J^o5`65*W zLrWwN#E8Zi6bmWDU0;?Czkwj+%>iW)F~lM1(0JstCaWJp#H7P79ULMucYgeFZ#H*= zxj)&^J&2i3T`ff{I9wtS6O-N==+7U83$df+2LKohDM@^}yAx)_O|czI=l;0l6$>2f zDZ5i{R;TFyJ{YB>>-_R%^iXX^#*0Z(4Nl`9GksvyC^QA5qz()Qvf&C-QRbzFW_MWs z(HjK6cLU&_nZ~>C;G>&%XllT8YEbo~9bp0JsNd=p8J=<}KXBnK9QvJ|#2Ui``Nc<# zmw>leh(1EI*A=MaSSyW})2qwD3EN+v;sNX{-=}fjraqT}k+h!@CPmVwSc?FXpaAqY z`>I_kN>^6RpVloGz7Z%x+h-C$JHvFjj6%S9&~6G28tt!kO$=!;*$!kU&1WdIXgc4U zZ0&!2#NU2G1&G2sk{@{6G2<8=sX_3RiP~ila!l6`frXJpa{>SkHq?P;dpx>$-}xyX zHhJ}>s7O2*{bS4-ie*XU0Ib6fn2Ws;eEh(M{B1NTKn0IXbgI;IchD_o@dmhW4Mq#C zw$2L#`T*sv00Wv|^Yg6iHG$iYS{8*y!vQd$4y^ITWyW*_WB_;oE}I&*g>4fZPQ->V z*VF9Oh)vXcAej*Z{uz~@)4Y~w-|)0)fPOGHjZ7mBhe(;S-6_CCO=Gi#nidzpwU!${ z6~SgO@IQ^my}4M9M^7#M+`#bXduoF_3*~s9ugBTD1p2z>4a7 z+Wenoxwrt1bogT)3C&xh@Vx7pX~&N1sTpSLL&L|P4PPF$wN)G#v;OzrhqawwD@93( zbL}=7Ks}omE|%%-=j-~eepWnX;Jv0OO2xRB^SbyOf)^!g(D?QSBW96XoJ>dc!J5V8 z;&NLUscDABCnQ%I!xdLeIdd;A;WBuFcx=?n}I ze$SI)kbk=p&yFW;;@z6x8*fyAn;vuED0?HRB3`uxi%7|O4*|e7E_!QmyJr4pI~^hm zdLCD2tob&Jl1&e7vnmwU;shyIh-!F*Lx2@r0QQ5z7C*!b4&YN3-JoR?c$4`OI^9TJ z8GW#6fgx}i>j#k+q;wijk+04uR|@$-`F$wxbG?hx&k4gT`}fG?^{s0y*x<1RYos=A z91A~+363t!G2$o|sB^kHK|M+1Y{3E8ri)|4S{kQ~mG(9L$cmMqMO@Q?M!ppT!hOS*!f+)shLg zJz7wyXfPMjtLbG!qYZlpaulSzHb5$(@?L5eOVpx8#xh6SABTqM5YJ+$d_#(gR?Z&E z*{ayZKw@@fUMRUv&D80;OS$k(n_^Kocv9}ybyG_1$k_)60ngQ*M#1K%-$+Iz@NC}QU9Q6adFSp;<`9(

strRRWX` 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 diff --git a/desktop/src-tauri/icons/128x128@2x.png b/desktop/src-tauri/icons/128x128@2x.png index d4ee6cabd4e8bebec00bd2f80023b9bf8253434d..337987fe3c95c5c12e1ec76301c4a4106ae97f2e 100644 GIT binary patch literal 5419 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 delta 1414 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