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

4.6 KiB
Raw Permalink Blame History

任务15ZIP包构建器

任务描述

实现跨平台的ZIP压缩包构建器负责生成ZIP格式的安装包。ZIP包构建器将处理文件压缩、目录结构组织、安装脚本集成等功能确保生成的ZIP包能够在多种平台上使用并提供简单的安装和卸载功能。

实现步骤

  1. 创建ZIP包构建器

    • internal/builder/package/zip包中创建builder.go文件
    • 定义ZIPBuilder结构体实现PackageBuilder接口
      type ZIPBuilder struct {
          tempDir         string
          platformAdapter platform.PlatformAdapter
          resourceMgr     resource.ResourceManager
          logger          log.Logger
      }
      
    • 实现构造函数:
      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相关功能