From b2ee99c91be6312082280c3528049ce0a35539a5 Mon Sep 17 00:00:00 2001 From: LHY0125 <3364451258@qq.com> Date: Mon, 16 Mar 2026 18:20:55 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E3=80=81=E5=AE=89=E8=A3=85=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E5=8F=8A=E5=B8=AE=E5=8A=A9=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新 README.md,添加详细的项目说明、功能特点、安装与构建指南 - 修改 Inno Setup 安装脚本中的发布者、URL 及源文件路径 - 在帮助对话框中添加作者信息和项目 GitHub 链接 - 调整 .gitignore,不再忽略 .exe 文件,新增对 .ps1 文件的忽略 --- .gitignore | 5 ++- README.md | 82 +++++++++++++++++++++++++++++++++++++++++++++ bin/PathEditor.exe | Bin 0 -> 77239 bytes dist/installer.iss | 10 +++--- src/callbacks.c | 7 +++- 5 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 bin/PathEditor.exe diff --git a/.gitignore b/.gitignore index 8c7c222..7d97e76 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ /.trae/ /.vscode/ /build/ -*.exe + *.o *.obj *.pdb @@ -17,3 +17,6 @@ Desktop.ini # 忽略dist目录 /dist/ + +# 忽略.ps1文件 +*.ps1 diff --git a/README.md b/README.md index e69de29..48e8c1a 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,82 @@ +# Path Editor (系统环境变量编辑器) + +一个简单、轻量级的 Windows 系统环境变量(PATH)编辑器,基于 C 语言和 IUP 图形库开发。 + +## ✨ 功能特点 + +* **可视化编辑**:直观地查看和管理系统 PATH 环境变量。 +* **安全操作**:必须以管理员身份运行才能保存更改,防止误操作。 +* **便捷管理**: + * ➕ **新建**:添加新路径到列表。 + * 📂 **浏览**:直接从文件资源管理器选择目录添加。 + * ✏️ **编辑**:修改现有路径。 + * 🗑️ **删除**:移除不需要的路径。 + * ⬆️⬇️ **排序**:上移/下移调整路径优先级。 +* **轻量级**:原生 C 语言编写,运行速度快,占用资源少。 + +## 📦 下载与安装 + +您可以从 [Releases](https://github.com/LHY0125/PathEditor/releases) 页面下载最新的安装包 (`PathEditorSetup.exe`)。 + +安装完成后,请**以管理员身份运行**程序以确保能够保存对系统环境变量的修改。 + +## 🛠️ 构建指南 + +如果您想从源码构建本项目,请按照以下步骤操作: + +### 环境要求 + +* Windows 操作系统 +* GCC 编译器 (推荐 MinGW-w64) +* Make 工具 +* IUP 库 (已包含在 `libs` 目录下) + +### 编译步骤 + +1. 克隆仓库: + + ```bash + git clone https://github.com/LHY0125/PathEditor.git + cd PathEditor + ``` + +2. 编译项目: + + ```bash + mingw32-make + ``` + +3. 运行: + 编译成功后,可执行文件位于 `bin/PathEditor.exe`。 + +### 打包 (可选) + +本项目使用 Inno Setup 生成安装包。 + +1. 确保已安装 [Inno Setup 6](https://jrsoftware.org/isdl.php)。 +2. 编译项目生成 exe 文件。 +3. 使用 Inno Setup 编译 `dist/installer.iss` 脚本。 + +## 📝 使用说明 + +1. **启动**:右键点击程序图标,选择“以管理员身份运行”。 +2. **查看**:程序启动后会自动加载当前的系统 PATH 变量。 +3. **修改**:使用右侧按钮栏进行添加、删除、移动等操作。 +4. **保存**:操作完成后,务必点击底部的【确定】按钮保存更改。 +5. **生效**:保存后,某些正在运行的程序可能需要重启才能识别新的环境变量。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. diff --git a/bin/PathEditor.exe b/bin/PathEditor.exe new file mode 100644 index 0000000000000000000000000000000000000000..f371b0b6f0311f48bc3961a9988424f69d25c5dc GIT binary patch literal 77239 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 G