installerbuilder/tasks/task15-ZIP包构建器.md

148 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.

# 任务15ZIP包构建器
## 任务描述
实现跨平台的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平台适配接口定义
- 依赖任务10Windows平台适配器和任务11Linux平台适配器
- 被任务19默认构建协调器依赖
## 完成标准
1. ZIPBuilder实现了所有PackageBuilder接口方法
2. 构建方法能够成功生成ZIP安装包
3. 目录结构创建功能正常工作
4. 文件和目录处理功能正常工作
5. 安装脚本生成功能正常工作
6. ZIP文件创建功能正常工作
7. 平台特定处理功能正常工作
8. 元数据生成功能正常工作
9. 所有单元测试通过
10. 代码符合项目的Go语言开发规范
11. 生成的ZIP包能够在多种平台上使用
12. 支持所有需求文档中的ZIP相关功能