mirror of
https://github.com/ArvinLovegood/go-stock.git
synced 2025-07-19 00:00:09 +08:00
feat(update):实现软件自动更新功能
- 新增自动检查和下载最新版本的功能 - 使用 go-update 库进行软件更新 - 增加新版本推送通知和更新结果通知 - 优化错误处理和日志记录
This commit is contained in:
parent
e90727773f
commit
a66f2156f1
@ -57,6 +57,7 @@
|
|||||||
| 不再强制依赖Chrome浏览器 | ✅ | 默认使用edge浏览器抓取新闻资讯 |
|
| 不再强制依赖Chrome浏览器 | ✅ | 默认使用edge浏览器抓取新闻资讯 |
|
||||||
|
|
||||||
## 👀 更新日志
|
## 👀 更新日志
|
||||||
|
### 2025.07.08 实现软件自动更新功能
|
||||||
### 2025.07.07 卡片添加迷你分时图
|
### 2025.07.07 卡片添加迷你分时图
|
||||||
### 2025.07.05 MacOs支持
|
### 2025.07.05 MacOs支持
|
||||||
### 2025.07.01 AI分析集成工具函数,AI分析将更加智能
|
### 2025.07.01 AI分析集成工具函数,AI分析将更加智能
|
||||||
|
45
app.go
45
app.go
@ -1,9 +1,11 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/inconshreveable/go-update"
|
||||||
"go-stock/backend/data"
|
"go-stock/backend/data"
|
||||||
"go-stock/backend/db"
|
"go-stock/backend/db"
|
||||||
"go-stock/backend/logger"
|
"go-stock/backend/logger"
|
||||||
@ -111,6 +113,13 @@ func (a *App) CheckUpdate() {
|
|||||||
}
|
}
|
||||||
logger.SugaredLogger.Infof("releaseVersion:%+v", releaseVersion.TagName)
|
logger.SugaredLogger.Infof("releaseVersion:%+v", releaseVersion.TagName)
|
||||||
if releaseVersion.TagName != Version {
|
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{}
|
tag := &models.Tag{}
|
||||||
_, err = resty.New().R().
|
_, err = resty.New().R().
|
||||||
SetResult(tag).
|
SetResult(tag).
|
||||||
@ -118,6 +127,7 @@ func (a *App) CheckUpdate() {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
releaseVersion.Tag = *tag
|
releaseVersion.Tag = *tag
|
||||||
}
|
}
|
||||||
|
|
||||||
commit := &models.Commit{}
|
commit := &models.Commit{}
|
||||||
_, err = resty.New().R().
|
_, err = resty.New().R().
|
||||||
SetResult(commit).
|
SetResult(commit).
|
||||||
@ -125,8 +135,41 @@ func (a *App) CheckUpdate() {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
releaseVersion.Commit = *commit
|
releaseVersion.Commit = *commit
|
||||||
}
|
}
|
||||||
|
//sha:= commit.Sha
|
||||||
|
resp, err := resty.New().R().Get(fmt.Sprintf("https://github.com/ArvinLovegood/go-stock/releases/download/%s/go-stock-windows-amd64.exe", releaseVersion.TagName))
|
||||||
|
if err != nil {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
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库进行更新
|
||||||
|
err = update.Apply(bytes.NewReader(body), update.Options{})
|
||||||
|
if err != nil {
|
||||||
|
logger.SugaredLogger.Error("更新失败: ", err.Error())
|
||||||
go runtime.EventsEmit(a.ctx, "updateVersion", releaseVersion)
|
go runtime.EventsEmit(a.ctx, "updateVersion", releaseVersion)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
go runtime.EventsEmit(a.ctx, "newsPush", map[string]any{
|
||||||
|
"time": "新版本:" + releaseVersion.TagName,
|
||||||
|
"isRed": true,
|
||||||
|
"source": "go-stock",
|
||||||
|
"content": "版本更新完成,下次重启软件生效.",
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
go.mod
1
go.mod
@ -13,6 +13,7 @@ require (
|
|||||||
github.com/go-ego/gse v0.80.3
|
github.com/go-ego/gse v0.80.3
|
||||||
github.com/go-resty/resty/v2 v2.16.2
|
github.com/go-resty/resty/v2 v2.16.2
|
||||||
github.com/go-toast/toast v0.0.0-20190211030409-01e6764cf0a4
|
github.com/go-toast/toast v0.0.0-20190211030409-01e6764cf0a4
|
||||||
|
github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf
|
||||||
github.com/robertkrimen/otto v0.5.1
|
github.com/robertkrimen/otto v0.5.1
|
||||||
github.com/robfig/cron/v3 v3.0.1
|
github.com/robfig/cron/v3 v3.0.1
|
||||||
github.com/samber/lo v1.49.1
|
github.com/samber/lo v1.49.1
|
||||||
|
2
go.sum
2
go.sum
@ -57,6 +57,8 @@ github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbu
|
|||||||
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
|
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf h1:WfD7VjIE6z8dIvMsI4/s+1qr5EL+zoIGev1BQj1eoJ8=
|
||||||
|
github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf/go.mod h1:hyb9oH7vZsitZCiBt0ZvifOrB+qc8PS5IiilCIb87rg=
|
||||||
github.com/jackmordaunt/icns/v3 v3.0.1 h1:xxot6aNuGrU+lNgxz5I5H0qSeCjNKp8uTXB1j8D4S3o=
|
github.com/jackmordaunt/icns/v3 v3.0.1 h1:xxot6aNuGrU+lNgxz5I5H0qSeCjNKp8uTXB1j8D4S3o=
|
||||||
github.com/jackmordaunt/icns/v3 v3.0.1/go.mod h1:5sHL59nqTd2ynTnowxB/MDQFhKNqkK8X687uKNygaSQ=
|
github.com/jackmordaunt/icns/v3 v3.0.1/go.mod h1:5sHL59nqTd2ynTnowxB/MDQFhKNqkK8X687uKNygaSQ=
|
||||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck=
|
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck=
|
||||||
|
Loading…
x
Reference in New Issue
Block a user