Files
GameServerManager/docs/7z-support.md
yxsj245 dad00c3215 Update version to 3.12.0 and adjust download sources for Java, Zip-Tools, and PTY
- Updated Docker image tags in GitHub Actions workflow to 3.12.0.
- Changed version display in AboutProjectPage to 3.12.0.
- Updated download URLs for Java 8, 11, 17, 21, and 25 in EnvironmentManagerPage.
- Modified 7z and Zip-Tools integration documentation to reflect changes in download strategy.
- Removed dual-source download strategy for Zip-Tools and PTY, now exclusively using GitHub Releases.
- Updated unit tests for 7z download logic to reflect changes in download strategy.
- Adjusted JavaManager to accept custom archive file names for downloads.
- Updated SchedulerManager to use a new remote URL for game list.
- Refactored environment route to provide sponsor download URLs for Java.
2026-07-21 10:20:42 +08:00

130 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 7z 压缩格式支持说明
## 概述
项目在现有 Zip-Tools 集成基础上,新增了 7z`.7z`格式的压缩和解压支持。7z 格式以高压缩率著称,适合需要更小体积的场景。
与现有的 `file_zip` 工具不同7z 功能由独立的 7z 二进制文件提供(来自 [MCSManager/Zip-Tools](https://github.com/MCSManager/Zip-Tools) 项目),是标准的 7-Zip 命令行工具,需要单独下载和管理。
## 支持的操作
| 操作 | 说明 |
|------|------|
| 压缩 | 将文件/文件夹压缩为 `.7z` 格式 |
| 解压 | 解压 `.7z` 格式的压缩包 |
| 在线部署 | 支持 `.7z` 格式的游戏服务端文件自动解压 |
## 使用方式
### 前端压缩
1. 在文件管理器中选择需要压缩的文件或文件夹
2. 右键菜单 → 压缩
3. 在压缩格式下拉列表中选择 **7Z (高压缩率)**
4. 点击确认开始压缩
> **注意**7z 格式不支持自定义压缩级别,选择 7z 格式时压缩级别选项会自动禁用。
### 前端解压
1. 在文件管理器中找到 `.7z` 文件
2. 右键菜单 → 解压
3. 选择解压目标路径
4. 点击确认开始解压
### 在线部署
在线部署模块已支持 `.7z` 格式的游戏服务端文件。系统会根据下载文件的扩展名自动选择解压方式:
- `.7z` 文件 → 使用 7z 工具解压
- `.zip` 文件 → 使用 file_zip 工具解压
无需额外配置,部署流程与之前一致。
## 7z 二进制文件管理
### 自动下载机制
服务端启动时会自动检测 7z 二进制文件是否存在:
- **已存在**:跳过下载,记录日志 `7z 已就绪`
- **不存在**:自动从 GitHub Releases 下载对应平台的二进制文件
- **下载失败**记录警告日志但不阻塞服务启动7z 相关功能降级为不可用
### 下载地址
运行时从 GitHub Releases 下载:
- `https://github.com/MCSManager/Zip-Tools/releases/latest/download/`
### 存放位置
7z 二进制文件与 `file_zip` 存放在同一目录,使用多路径尝试策略查找:
1. `{项目根目录}/data/lib/` — 打包后环境
2. `{项目根目录}/server/data/lib/` — 开发环境
### 手动放置二进制文件(离线环境)
如果服务器无法访问外部网络,可以手动下载并放置二进制文件:
1. 从 [Zip-Tools Releases](https://github.com/MCSManager/Zip-Tools/releases/latest) 下载对应平台的 7z 二进制文件
2. 将文件放置到 `server/data/lib/``data/lib/` 目录下
3. Linux/macOS 平台需要设置可执行权限:`chmod 755 7z_linux_x64`
## 支持的平台和架构
| 操作系统 | CPU 架构 | 二进制文件名 |
|---------|---------|-------------|
| Windows | x64 | `7z_win32_x64.exe` |
| Windows | ARM64 | `7z_win32_arm64.exe` |
| Linux | x64 | `7z_linux_x64` |
| Linux | ARM64 | `7z_linux_arm64` |
| Linux | ia32 | `7z_linux_386` |
| Linux | ARM | `7z_linux_arm` |
| macOS | x64 | `7z_darwin_x64` |
| macOS | ARM64 | `7z_darwin_arm64` |
> **注意**7z 的命名规则与 `file_zip` 不同。`file_zip` 中 darwin/x64 映射为 `amd64`,而 7z 直接使用 `x64`。
## 打包和部署
### 打包脚本
打包脚本(`scripts/package.js`)在构建时会自动从 GitHub Releases 下载目标平台的 7z 二进制文件并内置到产物中,与 `file_zip` 的下载流程并列执行,确保用户部署后无需额外下载。
### Docker 镜像
Dockerfile 在构建阶段会根据目标架构(`TARGETARCH`)自动下载对应的 7z 二进制文件:
- `amd64` → 下载 `7z_linux_x64`
- `arm64` → 下载 `7z_linux_arm64`
下载后自动设置可执行权限chmod 755容器启动后 7z 功能开箱即用。
## 7z 命令行参数格式
7z 使用标准的 7-Zip 命令行参数,与 `file_zip``-mode` 参数格式完全不同:
### 解压
```bash
7z x {压缩包路径} -o{目标目录}
```
> 注意:`-o` 和目标目录之间**没有空格**,这是 7z 的标准格式。
### 压缩
```bash
7z a {输出文件路径} {文件1} {文件2} ...
```
## 注意事项
1. **压缩级别**7z 压缩不支持通过命令行参数自定义压缩级别,使用默认压缩级别
2. **下载失败不阻塞启动**7z 二进制文件下载失败不会阻止服务启动,仅 7z 相关功能不可用,其他功能正常运行
3. **独立管理**7z 和 file_zip 的生命周期完全独立,互不影响。即使 7z 不可用ZIP 格式的压缩解压仍正常工作
4. **现有格式不受影响**ZIP、TAR、TAR.GZ、TAR.XZ 等现有格式的处理逻辑保持不变
5. **文件格式识别**:前端文件管理器已支持识别 `.7z` 文件为压缩文件,右键菜单会自动显示解压选项