148 lines
4.6 KiB
Markdown
148 lines
4.6 KiB
Markdown
# 任务15:ZIP包构建器
|
||
|
||
## 任务描述
|
||
实现跨平台的ZIP压缩包构建器,负责生成ZIP格式的安装包。ZIP包构建器将处理文件压缩、目录结构组织、安装脚本集成等功能,确保生成的ZIP包能够在多种平台上使用,并提供简单的安装和卸载功能。
|
||
|
||
## 实现步骤
|
||
|
||
1. 创建ZIP包构建器:
|
||
- 在`internal/builder/package/zip`包中创建`builder.go`文件
|
||
- 定义ZIPBuilder结构体,实现PackageBuilder接口:
|
||
```go
|
||
type ZIPBuilder struct {
|
||
tempDir string
|
||
platformAdapter platform.PlatformAdapter
|
||
resourceMgr resource.ResourceManager
|
||
logger log.Logger
|
||
}
|
||
```
|
||
- 实现构造函数:
|
||
```go
|
||
func NewZIPBuilder(platformAdapter platform.PlatformAdapter, resourceMgr resource.ResourceManager, logger log.Logger) (*ZIPBuilder, error) {
|
||
tempDir, err := resourceMgr.CreateTempDir("zip-builder")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return &ZIPBuilder{
|
||
tempDir: tempDir,
|
||
platformAdapter: platformAdapter,
|
||
resourceMgr: resourceMgr,
|
||
logger: logger,
|
||
}, nil
|
||
}
|
||
```
|
||
|
||
2. 实现构建方法:
|
||
- 实现Build方法,构建ZIP安装包
|
||
- 验证构建目标和配置
|
||
- 准备构建环境
|
||
- 创建临时目录结构
|
||
- 组织文件和目录
|
||
- 生成安装和卸载脚本
|
||
- 创建ZIP文件
|
||
- 处理构建结果
|
||
|
||
3. 实现目录结构创建:
|
||
- 创建createDirectoryStructure方法,创建ZIP包目录结构
|
||
- 组织应用文件和目录
|
||
- 创建安装脚本目录
|
||
- 创建文档和元数据目录
|
||
|
||
4. 实现文件和目录处理:
|
||
- 创建处理文件和目录的方法
|
||
- 复制文件到正确的位置
|
||
- 处理文件权限
|
||
- 支持符号链接(如果平台支持)
|
||
|
||
5. 实现安装脚本生成:
|
||
- 创建generateInstallScripts方法,生成安装和卸载脚本
|
||
- 根据目标平台生成不同的脚本(.bat、.sh等)
|
||
- 集成用户提供的安装前后脚本
|
||
- 处理脚本执行权限
|
||
|
||
6. 实现ZIP文件创建:
|
||
- 创建createZipFile方法,创建ZIP文件
|
||
- 使用Go标准库的archive/zip包
|
||
- 支持不同的压缩级别
|
||
- 处理大文件和特殊文件
|
||
|
||
7. 实现平台特定处理:
|
||
- 根据目标平台调整文件路径分隔符
|
||
- 处理不同平台的文件权限
|
||
- 支持Windows和Unix风格的行尾
|
||
- 创建平台特定的启动器
|
||
|
||
8. 实现元数据生成:
|
||
- 创建generateMetadata方法,生成包元数据
|
||
- 包含应用信息、版本、依赖等
|
||
- 支持自定义元数据
|
||
- 生成清单文件
|
||
|
||
## 单元测试要求
|
||
|
||
1. 测试构建方法:
|
||
- 验证构建流程
|
||
- 测试配置验证
|
||
- 测试环境准备
|
||
- 测试构建结果处理
|
||
|
||
2. 测试目录结构创建:
|
||
- 验证目录结构创建
|
||
- 测试应用文件和目录组织
|
||
- 测试安装脚本目录
|
||
- 测试文档和元数据目录
|
||
|
||
3. 测试文件和目录处理:
|
||
- 验证文件和目录处理
|
||
- 测试文件权限
|
||
- 测试符号链接处理
|
||
|
||
4. 测试安装脚本生成:
|
||
- 验证安装脚本生成
|
||
- 测试不同平台的脚本
|
||
- 测试用户脚本集成
|
||
- 测试脚本执行权限
|
||
|
||
5. 测试ZIP文件创建:
|
||
- 验证ZIP文件创建
|
||
- 测试不同的压缩级别
|
||
- 测试大文件和特殊文件处理
|
||
|
||
6. 测试平台特定处理:
|
||
- 验证路径分隔符调整
|
||
- 测试文件权限处理
|
||
- 测试行尾处理
|
||
- 测试启动器创建
|
||
|
||
7. 测试元数据生成:
|
||
- 验证元数据生成
|
||
- 测试应用信息和版本
|
||
- 测试自定义元数据
|
||
- 测试清单文件
|
||
|
||
## 依赖关系
|
||
|
||
- 依赖任务01(项目初始化)
|
||
- 依赖任务02(日志系统实现)
|
||
- 依赖任务03(错误处理框架)
|
||
- 依赖任务04(资源管理器实现)
|
||
- 依赖任务05(配置模型定义)
|
||
- 依赖任务09(平台适配接口定义)
|
||
- 依赖任务10(Windows平台适配器)和任务11(Linux平台适配器)
|
||
- 被任务19(默认构建协调器)依赖
|
||
|
||
## 完成标准
|
||
|
||
1. ZIPBuilder实现了所有PackageBuilder接口方法
|
||
2. 构建方法能够成功生成ZIP安装包
|
||
3. 目录结构创建功能正常工作
|
||
4. 文件和目录处理功能正常工作
|
||
5. 安装脚本生成功能正常工作
|
||
6. ZIP文件创建功能正常工作
|
||
7. 平台特定处理功能正常工作
|
||
8. 元数据生成功能正常工作
|
||
9. 所有单元测试通过
|
||
10. 代码符合项目的Go语言开发规范
|
||
11. 生成的ZIP包能够在多种平台上使用
|
||
12. 支持所有需求文档中的ZIP相关功能 |