⚡ InstallWithProgress
执行带进度回调、自动重试与上下文取消的智能安装。
何时使用
当你需要在命令行/界面展示安装进度、安装失败自动重试、或允许用户中途取消安装时使用。这是功能最完整的安装入口。🚀
签名
go
func (si *SmartInstaller) InstallWithProgress() (*InstallResult, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
| 无(显式) | — | 行为由 NewSmartInstaller(options) 传入的 InstallOptions 决定 |
返回值
*InstallResult:包含Success、ComposerPath、Version、PHPVersion、Method、Duration、Stages等字段。✅error:安装过程中的错误(已重试MaxRetries次仍失败时返回)。⚠️
示例
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/installer"
)
func main() {
opts := installer.DefaultInstallOptions()
opts.ProgressCallback = func(p installer.InstallProgress) {
fmt.Printf("[%s] %s (%d%%)\n", p.Stage, p.Message, p.Percent)
}
si := installer.NewSmartInstaller(opts)
result, err := si.InstallWithProgress()
if err != nil {
log.Fatalf("安装失败: %v", err)
}
fmt.Printf("Composer %s 安装成功,路径: %s\n", result.Version, result.ComposerPath)
}进阶
- 安装阶段由
InstallStage常量表示,如StageCheckingPHP、StageDownloading、StageVerifying、StageCompleted。📊 - 通过
InstallOptions.Context可随时取消安装;MaxRetries/RetryDelay控制重试策略。🔄 - 若只需"确保已安装",更便捷的入口是
EnsureComposerInstalled。🎯 - 设置
SkipVerification可跳过安装后验证以加快流程。⚡