55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
package models
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"regexp"
|
|
"runtime"
|
|
|
|
"github.com/beego/beego/v2/client/httplib"
|
|
"github.com/beego/beego/v2/core/logs"
|
|
)
|
|
|
|
var version = "2021081301"
|
|
var AppName = "xdd"
|
|
var pname = regexp.MustCompile(`/([^/\s]+)`).FindStringSubmatch(os.Args[0])[1]
|
|
|
|
func initVersion() {
|
|
if Config.Version != "" {
|
|
version = Config.Version
|
|
}
|
|
logs.Info("检查更新" + version)
|
|
value, err := httplib.Get(GhProxy + "https://raw.githubusercontent.com/cdle/xdd/main/models/version.go").String()
|
|
if err != nil {
|
|
logs.Info("更新User-Agent失败")
|
|
} else {
|
|
name := AppName + "_" + runtime.GOOS + "_" + runtime.GOARCH
|
|
if match := regexp.MustCompile(`var version = "(\d{10})"`).FindStringSubmatch(value); len(match) != 0 {
|
|
if match[1] > version {
|
|
logs.Warn("版本过低,下载更新")
|
|
rsp, err := httplib.Get(GhProxy + "https://github.com/cdle/jd_study/releases/download/main/" + name).Response()
|
|
if err != nil {
|
|
logs.Warn("无法下载更新")
|
|
return
|
|
}
|
|
filename := ExecPath + "/." + pname
|
|
f, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)
|
|
if err != nil {
|
|
logs.Warn("无法创建更新临时文件:%v"+filename, err)
|
|
return
|
|
}
|
|
_, err = io.Copy(f, rsp.Body)
|
|
f.Close()
|
|
if err != nil {
|
|
logs.Warn("下载更新失败")
|
|
return
|
|
}
|
|
if err := os.Rename(filename, ExecPath+"/"+pname); err != nil {
|
|
logs.Warn("移动临时更新文件失败")
|
|
}
|
|
Daemon()
|
|
}
|
|
}
|
|
}
|
|
}
|