mirror of
https://github.com/GSManagerXZ/GameServerManager.git
synced 2026-09-09 09:28:20 +08:00
- 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.
130 lines
4.6 KiB
Markdown
130 lines
4.6 KiB
Markdown
# 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` 文件为压缩文件,右键菜单会自动显示解压选项
|