5.0 KiB
5.0 KiB
任务12:MSI包构建器
任务描述
实现Windows MSI安装包的构建器,负责生成Windows平台的MSI安装包。MSI包构建器将处理MSI文件的生成、安装脚本集成、文件和目录结构创建等功能,确保生成的MSI安装包符合Windows安装标准。
实现步骤
-
定义包构建器接口:
- 在
internal/builder/package包中创建builder.go文件 - 定义PackageBuilder接口:
type PackageBuilder interface { // Build 构建安装包 Build(config *config.Config, target config.Target) (*BuildResult, error) // GetSupportedPlatforms 获取支持的平台 GetSupportedPlatforms() []string // GetSupportedPackageTypes 获取支持的包类型 GetSupportedPackageTypes() []string } - 定义BuildResult结构体:
type BuildResult struct { Target config.Target // 构建目标 OutputPath string // 输出文件路径 Success bool // 是否成功 Error error // 错误信息 BuildTime time.Duration // 构建时间 }
- 在
-
创建MSI包构建器:
- 在
internal/builder/package/msi包中创建builder.go文件 - 定义MSIBuilder结构体,实现PackageBuilder接口:
type MSIBuilder struct { tempDir string platformAdapter platform.PlatformAdapter resourceMgr resource.ResourceManager logger log.Logger wixPath string // WiX工具集路径 } - 实现构造函数:
func NewMSIBuilder(platformAdapter platform.PlatformAdapter, resourceMgr resource.ResourceManager, logger log.Logger) (*MSIBuilder, error) { tempDir, err := resourceMgr.CreateTempDir("msi-builder") if err != nil { return nil, err } wixPath, err := findWixToolset() if err != nil { return nil, err } return &MSIBuilder{ tempDir: tempDir, platformAdapter: platformAdapter, resourceMgr: resourceMgr, logger: logger, wixPath: wixPath, }, nil }
- 在
-
实现WiX工具集检测:
- 创建findWixToolset函数,检测WiX工具集安装
- 支持环境变量配置WiX路径
- 处理WiX工具集不存在的情况
-
实现构建方法:
- 实现Build方法,构建MSI安装包
- 验证构建目标和配置
- 准备构建环境
- 生成WiX源文件
- 编译WiX源文件生成MSI
- 处理构建结果
-
实现WiX源文件生成:
- 创建generateWixSource方法,生成WiX源文件(.wxs)
- 包含产品信息、目录结构、组件定义
- 支持自定义UI和对话框
- 集成安装前后脚本
-
实现文件和目录处理:
- 创建处理文件和目录的方法
- 生成文件和目录的WiX定义
- 处理文件权限和属性
- 支持快捷方式创建
-
实现安装脚本集成:
- 创建集成安装前后脚本的方法
- 支持自定义操作(Custom Action)
- 处理脚本执行结果
- 支持条件执行
-
实现升级支持:
- 添加升级GUID生成
- 支持主要升级和次要升级
- 处理版本比较和升级路径
- 支持卸载旧版本
单元测试要求
-
测试WiX工具集检测:
- 验证WiX工具集检测功能
- 测试环境变量配置
- 测试工具集不存在的处理
-
测试构建方法:
- 验证构建流程
- 测试配置验证
- 测试环境准备
- 测试构建结果处理
-
测试WiX源文件生成:
- 验证WiX源文件生成
- 测试产品信息和目录结构
- 测试组件定义
- 测试UI和对话框
-
测试文件和目录处理:
- 验证文件和目录处理
- 测试文件权限和属性
- 测试快捷方式创建
-
测试安装脚本集成:
- 验证脚本集成功能
- 测试自定义操作
- 测试脚本执行结果处理
- 测试条件执行
-
测试升级支持:
- 验证升级GUID生成
- 测试版本比较
- 测试升级路径
- 测试卸载旧版本
依赖关系
- 依赖任务01(项目初始化)
- 依赖任务02(日志系统实现)
- 依赖任务03(错误处理框架)
- 依赖任务04(资源管理器实现)
- 依赖任务05(配置模型定义)
- 依赖任务10(Windows平台适配器)
- 被任务19(默认构建协调器)依赖
完成标准
- PackageBuilder接口已定义并文档完善
- MSIBuilder实现了所有接口方法
- WiX工具集检测功能正常工作
- 构建方法能够成功生成MSI安装包
- WiX源文件生成功能正常工作
- 文件和目录处理功能正常工作
- 安装脚本集成功能正常工作
- 升级支持功能正常工作
- 所有单元测试通过
- 代码符合项目的Go语言开发规范
- 生成的MSI安装包符合Windows安装标准
- 支持所有需求文档中的MSI相关功能