# 任务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相关功能