本项目是面向中国矿业大学校园网认证场景的 Windows 桌面自动登录客户端,基于 Tauri 1.x + Rust + 原生 HTML/CSS/JavaScript 实现。当前正式版本为 1.21.2,并已定为最后一个稳定版本。
应用聚焦于校园网认证的常用流程,提供后台驻留、开机自动登录、断线检测、计划任务自启动等能力;1.21.2 起不再继续推进后续功能开发。
如需查看更完整的实现原理,可阅读 tech.md。
功能概览
- 支持学号 / 密码 / 运营商登录,支持移动、电信、联通和纯校园网接入。
- 支持检测当前在线状态、手动登录、手动注销。
- 检测到已有其他账号在线时,会先提示“顶号确认”,而不是直接强制下线对方。
- 支持 Windows 开机后台自动登录,底层使用计划任务
CampusNetworkAutoLogin,启动参数为--hidden。 - 隐藏启动自动登录带短时重试逻辑;网络刚起时会继续重试,但检测到其他账号在线时不会自动顶号。
- 支持后台自动监控网络状态,默认每
15秒检测一次,最小支持5秒。 - 支持自定义校园网认证地址,兼容
10.2.5.251、http://10.2.5.251、http://10.2.5.251:801这类输入。 - 校园网检测、登录、注销请求会绕过 Windows 系统代理,减少 Clash 系统代理等场景下的误判。
- 主窗口关闭后默认隐藏到系统托盘,不直接退出进程;托盘支持“显示主界面 / 静默登录 / 静默注销 / 完全退出”。
- 支持单实例运行,重复打开时会唤起已有窗口并给出通知。
- 设置页仍保留“检查更新”和“测试版”按钮占位,但当前版本已不再开放这两项功能。
- 设置页支持还原本地配置,并同步删除开机自启计划任务。
运行环境
- Windows 10/11
- Node.js 18+
- Rust 工具链
- Visual Studio C++ Build Tools
使用与开发
开发运行
npm install
npm run tauri dev
该方式适用于本地开发、界面调试和功能验证,不需要 updater 私钥。
前端静态资源直接位于 src/,Tauri 的 devPath / distDir 也都指向这个目录。
普通构建
npm run tauri build
构建完成后,安装包和 updater 产物会输出到 src-tauri/target/release/bundle/nsis/。
构建与密钥说明
- 本地开发运行
npm run tauri dev不需要 updater 密钥。 - 按当前仓库配置直接执行
npm run tauri build时,通常需要提供 updater 私钥和私钥密码,因为打包目标包含updater签名产物。 - 当前 updater 公钥已经写入
src-tauri/tauri.conf.json,一般不需要额外手动提供公钥文件;真正敏感且必须保管好的是私钥和私钥密码。 - 如果仅用于本地测试,且不需要自动更新签名,可临时移除
src-tauri/tauri.conf.json中的updater打包目标后再执行构建。 - 如果要发布正式版或测试版,并保留客户端自动更新能力,则必须使用同一套 updater 私钥签名;否则客户端会因为验签不一致而无法安装更新。
- beta 发布脚本
scripts/publish-beta.ps1也依赖TAURI_PRIVATE_KEY与TAURI_KEY_PASSWORD,可通过环境变量或脚本引导输入提供。
生成新的 updater 密钥
如需为新的发布通道生成一套 updater 密钥,可执行:
npx tauri signer generate -w .keysupdater.key
该命令会生成私钥文件,并在终端输出对应的公钥。
如需在非交互模式下直接指定密码,可执行:
npx tauri signer generate -w .keysupdater.key -p "你的私钥密码" --ci
生成后请完成以下配置:
- 将生成的公钥写入
src-tauri/tauri.conf.json的tauri.updater.pubkey。 - 在构建前设置
TAURI_PRIVATE_KEY与TAURI_KEY_PASSWORD环境变量。 - 使用同一套私钥对对应发布通道的更新包持续签名。
示例:
$env:TAURI_PRIVATE_KEY = Get-Content .keysupdater.key -Raw
$env:TAURI_KEY_PASSWORD = "你的私钥密码"
npm run tauri build
发布注意事项
- 如果需要延续当前项目既有用户的自动更新链路,不应重新生成新的 updater 密钥,而应继续使用原有私钥;否则旧版本客户端将无法验证新的更新包。
- 只有在建立新的分发渠道、独立维护新的更新体系时,才适合生成新的 updater 密钥。
- 发布前请同时检查
src-tauri/Cargo.toml、src-tauri/tauri.conf.json、updater.json、updater-beta.json中的版本号、下载地址和签名信息是否一致。 - 如需维护测试通道,建议使用
scripts/publish-beta.ps1统一处理构建、签名和updater-beta.json更新。
项目结构
src/
index.html 主界面与各类覆盖层
renderer.js 前端交互、状态轮询、最终稳定版提示
styles.css 主窗口样式
src-tauri/
src/app.rs Tauri 启动、托盘、窗口生命周期、单实例
src/commands.rs 前端 invoke 命令出口
src/models.rs 共享数据结构
src/services/
config.rs 配置读写、计划任务自启动同步
portal.rs 校园网检测、登录、注销
system.rs 通知与系统能力
scripts/
publish-beta.ps1 beta 通道发布辅助脚本
tech.md 项目技术实现说明
配置与行为说明
- 本地配置会保存学号、密码、运营商、检测频率、自启动等信息。
- 设置页每次打开都会重新从后端读取配置,避免前端显示与磁盘状态不一致。
- 若已开启开机后台自动登录,但系统里的计划任务缺失、指向旧路径或参数异常,应用会在启动后提示修复。
1.21.2已收口为最终稳定版,设置页里的“检查更新”和“测试版”按钮只保留位置与提示,不再执行实际更新流程。- 根目录
updater.json仍是历史正式通道元数据文件;若未来只为兼容旧客户端而补发最终安装包,需要在生成真实安装产物后再同步它。
已知限制
- 当前重点支持 Windows 桌面端。
- 本地配置中的密码仍为明文保存。
- “绕过代理”当前主要覆盖 Windows 系统代理场景;如果使用的是 Clash TUN 一类网络层接管,校园网请求仍可能失败。
- 若后续仅为兼容旧版本升级链路而补发
1.21.2安装包,仍需手动同步updater.json的版本、下载地址和签名信息。
发布备注
- 当前正式代码版本为
1.21.2,并作为最后一个稳定版本收口。 - beta 通道辅助脚本位于
scripts/publish-beta.ps1。 - 实际发布时请同时检查
src-tauri/Cargo.toml、src-tauri/tauri.conf.json、updater.json、updater-beta.json的版本与下载地址是否一致。
协议声明
本项目仅供学习与交流 Tauri / Rust 技术栈使用,请遵守中国矿业大学校园网相关规定。
基于 MIT License 开源。