From 7ea160b6b56dcc05c6c593225f6db6764e621295 Mon Sep 17 00:00:00 2001 From: ArvinLovegood Date: Wed, 9 Jul 2025 09:03:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(update):=E4=BC=98=E5=8C=96=E8=BD=AF?= =?UTF-8?q?=E4=BB=B6=E6=9B=B4=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 增加对操作系统类型的判断,非 Windows 系统不执行更新 - 优化更新版本信息的传递方式 -重构代码,提高可读性和可维护性 --- app.go | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/app.go b/app.go index 98303c9..d690dda 100644 --- a/app.go +++ b/app.go @@ -113,12 +113,6 @@ func (a *App) CheckUpdate() { } logger.SugaredLogger.Infof("releaseVersion:%+v", releaseVersion.TagName) if releaseVersion.TagName != Version { - go runtime.EventsEmit(a.ctx, "newsPush", map[string]any{ - "time": "发现新版本:" + releaseVersion.TagName, - "isRed": false, - "source": "go-stock", - "content": fmt.Sprintf("当前版本:%s, 最新版本:%s,开始下载...", Version, releaseVersion.TagName), - }) tag := &models.Tag{} _, err = resty.New().R(). @@ -141,6 +135,12 @@ func (a *App) CheckUpdate() { return } + go runtime.EventsEmit(a.ctx, "newsPush", map[string]any{ + "time": "发现新版本:" + releaseVersion.TagName, + "isRed": false, + "source": "go-stock", + "content": fmt.Sprintf("当前版本:%s, 最新版本:%s,开始下载...", Version, releaseVersion.TagName), + }) downloadUrl := fmt.Sprintf("https://github.com/ArvinLovegood/go-stock/releases/download/%s/go-stock-windows-amd64.exe", releaseVersion.TagName) resp, err := resty.New().R().Get(downloadUrl) if err != nil { @@ -153,16 +153,17 @@ func (a *App) CheckUpdate() { return } body := resp.Body() - // 验证下载文件的哈希值 - //hash := sha256.Sum256(body) - //actualSHA256 := hex.EncodeToString(hash[:]) - //logger.SugaredLogger.Infof("actualSHA256: %s", actualSHA256) - //if actualSHA256 != releaseVersion.Commit.Sha { - // logger.SugaredLogger.Errorf("下载文件sha256校验失败") - // logger.SugaredLogger.Errorf("actualSHA256: %s Commit-Sha:%s", actualSHA256, releaseVersion.Commit.Sha) - // return - //} - // 使用go-update库进行更新 + + if len(body) < 1024 { + go runtime.EventsEmit(a.ctx, "newsPush", map[string]any{ + "time": "新版本:" + releaseVersion.TagName, + "isRed": true, + "source": "go-stock", + "content": "新版本下载失败,请前往 https://github.com/ArvinLovegood/go-stock/releases 手动下载替换文件。", + }) + return + } + err = update.Apply(bytes.NewReader(body), update.Options{}) if err != nil { logger.SugaredLogger.Error("更新失败: ", err.Error())