docs.rs failed to build win-rar-0.1.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
WinRAR
一款基于 Tauri 2 + React 构建的 Windows 原生压缩解压工具,支持 ZIP、7z、RAR、TAR 等主流格式的压缩与解压。
为什么选择 WinRAR?
- 多格式支持 — ZIP、7z、RAR、TAR、TAR.GZ、TAR.BZ2、TAR.XZ 一站式覆盖
- 原生性能 — 基于 Tauri 2 框架,Rust 后端 + WebView 前端,安装包小、启动快、内存占用低
- 安全可靠 — 内置 Zip Slip 路径遍历攻击防护,所有解压路径均经过安全校验
- 加密保护 — 支持 ZIP/7z 密码加密压缩与解压,AES-256 加密算法
- 右键集成 — 注册 Windows 右键菜单,右键即可"用 WinRAR 打开"或"解压到当前目录"
- 拖放操作 — 拖入压缩文件自动解压,拖入普通文件自动进入压缩模式
- 选择性解压 — 支持勾选部分文件单独解压,无需解压整个归档
- 实时进度 — 解压/压缩过程实时显示进度百分比和当前文件
- 分卷压缩 — 支持自定义分卷大小(如 100MB、1GB)
- 密码重试 — 解压加密文件时支持最多 3 次密码重试,无需重新操作
功能概览
| 功能 | ZIP | 7z | RAR | TAR | TAR.GZ | TAR.BZ2 | TAR.XZ |
|---|---|---|---|---|---|---|---|
| 解压 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 压缩 | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ | ✅ |
| 密码加密 | ✅ | ✅ | - | - | - | - | - |
| 选择性解压 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
⚠️ RAR 压缩需要系统安装 WinRAR(自动检测)
快速开始
环境要求
- Node.js >= 18
- Rust >= 1.70(推荐通过 rustup 安装)
- Windows 10/11
安装依赖
# 安装前端依赖
# Rust 依赖会在首次构建时自动安装
开发模式
启动后即可在开发窗口中调试应用,前端热更新,后端修改自动重编译。
构建发布
构建产物位于 src-tauri/target/release/bundle/,包含 MSI 安装包和 NSIS 安装包。
使用说明
解压文件
- 点击"打开"按钮或拖放压缩文件到窗口
- 浏览归档内文件列表,可勾选需要解压的文件
- 点击"解压"按钮,选择输出目录
- 如文件加密,会弹出密码输入框(最多重试 3 次)
压缩文件
- 点击"压缩"按钮或拖放普通文件到窗口
- 在压缩对话框中设置:
- 归档格式(ZIP / 7z / TAR.GZ / TAR.BZ2 / TAR.XZ / TAR / RAR)
- 输出路径
- 密码(可选)
- 压缩级别(仅存储 / 最快 / 快速 / 标准 / 较好 / 最佳)
- 分卷大小(可选,如
100m、1g)
- 点击"确定"开始压缩
右键菜单
安装后自动注册 Windows 右键菜单:
- 压缩文件右键 → 用 WinRAR 打开 / 解压到当前目录
- 文件夹右键 → 添加到压缩包...
二次开发
项目结构
win-rar/
├── src/ # 前端(React + TypeScript)
│ ├── App.tsx # 主应用组件
│ ├── types.ts # 类型定义
│ ├── main.tsx # 入口
│ └── components/
│ ├── CompressDialog.tsx # 压缩对话框
│ ├── FileList.tsx # 文件列表
│ ├── DropZone.tsx # 拖放区域
│ ├── ContextMenu.tsx # 右键菜单
│ ├── ProgressBar.tsx # 进度条
│ └── SettingsDialog.tsx # 设置对话框
├── src-tauri/ # 后端(Rust + Tauri)
│ ├── src/
│ │ ├── lib.rs # 应用入口与初始化
│ │ ├── main.rs # 主函数
│ │ ├── shell.rs # Windows 右键菜单注册
│ │ ├── archive/ # 压缩格式引擎
│ │ │ ├── types.rs # 公共类型与安全工具
│ │ │ ├── zip_engine.rs # ZIP 引擎
│ │ │ ├── rar_engine.rs # RAR 引擎
│ │ │ ├── sevenz_engine.rs # 7z 引擎
│ │ │ └── tar_engine.rs # TAR 系列引擎
│ │ ├── commands/ # Tauri 命令
│ │ │ ├── archive.rs # 压缩/解压命令
│ │ │ ├── system.rs # 系统对话框命令
│ │ │ └── shell.rs # 右键菜单命令
│ │ └── async_ops/ # 异步任务管理
│ ├── Cargo.toml # Rust 依赖
│ └── tauri.conf.json # Tauri 配置
├── package.json
└── README.md
添加新格式支持
- 在
src-tauri/src/archive/下创建新引擎文件(如zstd_engine.rs) - 实现
list()和extract()函数,遵循现有引擎的接口模式 - 在
types.rs的ArchiveFormat枚举中添加新格式 - 在
commands/archive.rs的extract_archive和compress_files中添加匹配分支 - 前端
types.ts中同步添加格式类型
添加新 Tauri 命令
- 在
src-tauri/src/commands/下实现命令函数,添加#[tauri::command]宏 - 在
lib.rs的invoke_handler中注册 - 前端通过
invoke("command_name", { args })调用
技术栈
| 层级 | 技术 |
|---|---|
| 框架 | Tauri 2 |
| 前端 | React 18 + TypeScript + Vite |
| 后端 | Rust |
| ZIP | zip |
| RAR | unrar-ng |
| 7z | sevenz-rust |
| TAR | tar + flate2 + bzip2 + xz2 |
Bug 反馈
如果发现 Bug,请发送邮件至 gyfinjava@163.com,邮件中请包含:
- 操作系统版本
- 复现步骤
- 期望行为与实际行为
- 相关截图或错误日志
定制开发与技术服务
如需定制开发或技术服务,请通过邮箱联络:gyfinjava@163.com
开源协议
本项目基于 MIT 协议 开源。
Copyright (c) 北京锋通科技有限公司 — 郭玉峰、吴琼