mirror of
https://github.com/LHY0125/PathEditor.git
synced 2026-06-30 02:25:55 +08:00
feat: 重写为 Tauri + React + TypeScript (v4.0)
完全移除旧 C+IUP 代码,改用 Tauri 2.x + React 19 + TypeScript + Rust 技术栈重写。 功能与 v3.1 完全等价: - React 前端:Tailwind CSS 4、Zustand 状态管理、i18next 国际化 - Rust 后端:winreg 注册表读写、Win32 API FFI 调用 - 核心逻辑:StringList、UndoRedoManager、PathManager、Import/Export - 深色模式、中英文切换、键盘快捷键、合并预览 - 66 个 Vitest 单元测试 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,148 +1,99 @@
|
||||
# Path Editor (系统环境变量编辑器)
|
||||
# PathEditor v4.0
|
||||
|
||||
* Path Editor 是一个专为 Windows 用户设计的系统环境变量(PATH)管理工具。它基于原生 C 语言和 IUP 图形库开发,旨在替代 Windows 自带的简陋编辑界面。
|
||||
* 相比系统自带的编辑器,Path Editor 提供了更加直观的双视图(系统/用户变量)界面、智能的路径有效性检测、自动备份机制以及便捷的拖拽操作,让环境变量的管理变得安全、高效且轻松。无论您是开发者还是系统管理员,它都是您配置开发环境的得力助手。
|
||||
Windows 系统环境变量 (PATH) 编辑器,基于 Tauri 2.x + React 19 + TypeScript + Rust 构建。
|
||||
|
||||
## ✨ 功能特点
|
||||
## 功能
|
||||
|
||||
* **🛡️ 安全第一**:
|
||||
* **自动备份**:每次保存前自动备份,支持自定义备份目录(默认 `%APPDATA%/PathEditor/backups/`)。
|
||||
* **只读模式**:非管理员运行时自动切换到只读模式,防止误操作。
|
||||
* **权限检测**:智能检测当前运行权限。
|
||||
- 查看和编辑系统/用户 PATH 环境变量
|
||||
- 新建、编辑、删除、上移、下移路径条目
|
||||
- 一键清理无效和重复路径
|
||||
- 完整撤销/重做支持(最多 50 步)
|
||||
- 导入/导出 JSON、CSV、TXT 三种格式
|
||||
- 深色模式 / 浅色模式切换
|
||||
- 中英文界面切换
|
||||
- 合并预览(同时查看系统 + 用户路径)
|
||||
- 搜索过滤
|
||||
- 文件夹拖拽添加
|
||||
- 注册表备份
|
||||
|
||||
* **📑 双视图管理**:
|
||||
* 完美支持 **System (系统变量)** 和 **User (用户变量)** 的分离查看与编辑。
|
||||
* 清晰的 Tab 标签页切换。
|
||||
## 运行
|
||||
|
||||
* **🔴 智能诊断与维护**:
|
||||
* **无效路径高亮**:自动检测路径是否存在,不存在的显示为红色。
|
||||
* **重复路径高亮**:自动检测重复项,重复的显示为橙色。
|
||||
* **一键清理**:智能移除所有无效和重复的路径,保持环境整洁。
|
||||
需要管理员权限才能编辑系统 PATH(非管理员自动进入只读模式)。
|
||||
|
||||
* **📂 高效交互**:
|
||||
* **拖拽支持**:直接将文件夹拖入窗口即可添加(支持管理员模式下的 UIPI 穿透)。
|
||||
* **实时搜索**:顶部搜索框支持不区分大小写的实时过滤查找。
|
||||
* **快捷键**:支持 Delete 键快速删除选中项。
|
||||
```bash
|
||||
# 安装依赖
|
||||
npm install
|
||||
|
||||
* **🔄 导入导出**:
|
||||
* **导出备份**:将 PATH 导出为 JSON 文件,方便备份和迁移。
|
||||
* **导入恢复**:从 JSON 文件导入路径配置。
|
||||
* **格式兼容**:支持旧版 TXT 格式导入。
|
||||
# 开发模式(热更新)
|
||||
npx tauri dev
|
||||
|
||||
* **🌍 多语言支持**:
|
||||
* 内置中文和英文界面,支持运行时切换。
|
||||
* 基于 gettext 国际化框架,易于扩展其他语言。
|
||||
# 构建安装包
|
||||
npx tauri build
|
||||
```
|
||||
|
||||
* **便捷管理**:
|
||||
* ➕ **新建**:添加新路径到列表。
|
||||
* 📂 **浏览**:直接从文件资源管理器选择目录添加。
|
||||
* ✏️ **编辑**:双击或点击按钮修改现有路径。
|
||||
* 🗑️ **删除**:移除不需要的路径。
|
||||
* ⬆️⬇️ **排序**:上移/下移调整路径优先级。
|
||||
## 技术栈
|
||||
|
||||
* **轻量级**:原生 C 语言编写,无臃肿依赖,运行速度极快。
|
||||
| 层 | 技术 |
|
||||
|---|---|
|
||||
| 前端框架 | React 19 + TypeScript |
|
||||
| UI 样式 | Tailwind CSS 4 |
|
||||
| 状态管理 | Zustand |
|
||||
| 国际化 | i18next |
|
||||
| 桌面框架 | Tauri 2.x |
|
||||
| 后端语言 | Rust |
|
||||
| 测试 | Vitest (前端) |
|
||||
| 构建 | Vite |
|
||||
|
||||
## 🛠️ 架构与二次开发
|
||||
## 架构
|
||||
|
||||
本项目注重代码的模块化和可维护性,采用了经典的 **MVC 分层架构**,非常适合作为 C 语言桌面程序开发的参考:
|
||||
```
|
||||
src/ # React 前端
|
||||
├── core/ # 纯逻辑(StringList、撤销/重做、路径管理、导入导出)
|
||||
├── store/ # Zustand 状态管理
|
||||
├── components/ # UI 组件(列表、工具栏、对话框)
|
||||
├── hooks/ # 自定义 Hooks(键盘快捷键、路径验证)
|
||||
├── i18n/ # 中英文翻译
|
||||
└── config/ # UI 参数配置
|
||||
|
||||
* **分层设计**:
|
||||
* `src/core/` (Model): 核心数据与业务逻辑,完全脱离 UI 框架(无任何 `<iup.h>` 依赖)。
|
||||
* `src/ui/` (View): 负责界面布局与组件的纯视觉展示。
|
||||
* `src/controller/` (Controller): 负责连接用户交互与底层数据,已按功能拆分为 6 个模块:
|
||||
* `callbacks.c` - 辅助函数与上下文管理
|
||||
* `callbacks_basic.c` - 基础 CRUD 操作(新建、编辑、浏览、删除)
|
||||
* `callbacks_nav.c` - 导航操作(上移、下移、清理)
|
||||
* `callbacks_search.c` - 搜索过滤与拖拽
|
||||
* `callbacks_io.c` - 导入导出
|
||||
* `callbacks_sys.c` - 系统操作(保存、取消、帮助、语言切换)
|
||||
* `src/utils/` (Utils): 纯粹的底层工具类封装(系统级调用、字符串处理)。
|
||||
* **热配置系统**:所有 UI 参数(窗口大小、按钮文本、布局间距等)均通过 `lua/config.lua` 配置,修改无需重新编译即可生效。
|
||||
* **国际化支持**:基于 gettext 框架,支持中英文运行时切换,语言文件位于 `locale/` 目录。
|
||||
* **清晰的应用状态**:摒弃了脆弱的全局变量模式,采用 `AppContext` 统一管理应用运行时的上下文状态,通过指针传递,安全可靠。
|
||||
* **开发工具库**:
|
||||
* 统一错误码系统 (`utils/error_code.h`) - 11 种细分错误码
|
||||
* 安全字符串函数 (`utils/safe_string.h`)
|
||||
* 字符串列表封装 (`utils/string_ext.h`) - 带访问器函数的安全动态数组
|
||||
* 日志系统 (`utils/logger.h`) - 支持 DEBUG/INFO/WARN/ERROR 四个级别
|
||||
* 控件名称常量 (`utils/ui_constants.h`) - 集中管理所有 IUP 控件名称
|
||||
src-tauri/ # Rust 后端
|
||||
└── src/commands/
|
||||
├── registry.rs # 注册表读写
|
||||
├── system.rs # 权限检测、路径验证、环境变量展开、系统广播
|
||||
└── backup.rs # 注册表备份
|
||||
```
|
||||
|
||||
## 📦 下载与安装
|
||||
## 快捷键
|
||||
|
||||
您可以从 [Releases](https://github.com/LHY0125/PathEditor/releases) 页面下载最新的安装包 (`PathEditorSetup.exe`)。
|
||||
| 快捷键 | 功能 |
|
||||
|--------|------|
|
||||
| Ctrl+N | 新建路径 |
|
||||
| Ctrl+S | 保存 |
|
||||
| Ctrl+Z | 撤销 |
|
||||
| Ctrl+Y | 重做 |
|
||||
| Ctrl+F | 搜索 |
|
||||
| Delete | 删除选中 |
|
||||
| F1 | 帮助 |
|
||||
|
||||
安装完成后,请**以管理员身份运行**程序以确保能够保存对系统环境变量的修改。
|
||||
## 开发
|
||||
|
||||
## 🛠️ 构建指南
|
||||
```bash
|
||||
# 前端测试
|
||||
npm test
|
||||
|
||||
如果您想从源码构建本项目,请按照以下步骤操作:
|
||||
# 前端测试(监听模式)
|
||||
npm run test:watch
|
||||
|
||||
### 环境要求
|
||||
# Rust 后端检查
|
||||
cd src-tauri && cargo check
|
||||
|
||||
* Windows 操作系统
|
||||
* GCC 编译器 (推荐 MinGW-w64)
|
||||
* CMake 工具 (推荐使用 CMake 构建)
|
||||
* IUP 库 (已包含在 `libs` 目录下)
|
||||
* Inno Setup 6 (仅打包需要)
|
||||
# Rust 后端测试
|
||||
cd src-tauri && cargo test
|
||||
```
|
||||
|
||||
### 编译步骤 (推荐使用 CMake)
|
||||
## 许可证
|
||||
|
||||
本项目已迁移至 CMake 构建系统,支持生成更标准的构建文件并集成到各大 IDE。
|
||||
MIT License
|
||||
|
||||
1. 克隆仓库:
|
||||
## 作者
|
||||
|
||||
```bash
|
||||
git clone https://github.com/LHY0125/PathEditor.git
|
||||
cd PathEditor
|
||||
```
|
||||
|
||||
2. 使用 CMake 配置和编译:
|
||||
|
||||
```bash
|
||||
# 生成构建系统 (以 MinGW 为例)
|
||||
cmake -B build -G "MinGW Makefiles"
|
||||
|
||||
# 编译项目
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
3. 运行:
|
||||
编译成功后,可执行文件位于 `build/PathEditor.exe`。
|
||||
|
||||
### 打包 (可选)
|
||||
|
||||
本项目使用 Inno Setup 生成安装包。
|
||||
|
||||
1. 确保已安装 [Inno Setup 6](https://jrsoftware.org/isdl.php)。
|
||||
2. 运行根目录下的 `build_installer.bat` 脚本。
|
||||
3. 生成的安装包将位于 `dist/dist/PathEditorSetup.exe`。
|
||||
|
||||
## 📝 使用说明
|
||||
|
||||
1. **启动**:右键点击程序图标,选择“以管理员身份运行”。
|
||||
2. **查看**:程序启动后会自动加载当前的系统 PATH 变量。
|
||||
* **红色**条目表示路径不存在。
|
||||
* **橙色**条目表示路径重复。
|
||||
3. **搜索**:在顶部输入关键词可快速筛选。
|
||||
4. **修改**:
|
||||
* 拖拽文件夹到列表可直接添加。
|
||||
* 使用右侧按钮栏进行常规操作。
|
||||
* 点击“一键清理”可自动删除无效和重复项。
|
||||
5. **保存**:操作完成后,务必点击底部的【确定】按钮保存更改。
|
||||
6. **生效**:保存后,某些正在运行的程序可能需要重启才能识别新的环境变量。CMD 或 PowerShell 窗口需要重新打开。
|
||||
|
||||
## 👤 作者信息
|
||||
|
||||
* **作者**:LHY
|
||||
* **邮箱**:<3364451258@qq.com>
|
||||
* **GitHub**:[https://github.com/LHY0125/PathEditor](https://github.com/LHY0125/PathEditor)
|
||||
|
||||
如果您觉得这个工具对您有帮助,请给我的 GitHub 仓库点个 Star ⭐️!
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
本项目基于 MIT 许可证开源,您可以在遵守许可证条款的前提下自由使用、修改和分发本项目的代码。
|
||||
|
||||
详细信息请参阅 [LICENSE](LICENSE) 文件。
|
||||
|
||||
Copyright © 2026 LHY. All Rights Reserved.
|
||||
刘航宇 — [GitHub](https://github.com/LHY0125/PathEditor)
|
||||
|
||||
Reference in New Issue
Block a user