🎨 自动更新下载安装包时优先使用 GitHub Releases Fix https://github.com/siyuan-note/siyuan/issues/6435
This commit is contained in:
parent
1fa2140bc3
commit
b87a6cd57d
1 changed files with 31 additions and 14 deletions
|
@ -62,12 +62,12 @@ func getNewVerInstallPkgPath() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
downloadPkgURL, checksum, err := getUpdatePkg()
|
||||
if nil != err || "" == downloadPkgURL || "" == checksum {
|
||||
downloadPkgURLs, checksum, err := getUpdatePkg()
|
||||
if nil != err || 1 > len(downloadPkgURLs) || "" == checksum {
|
||||
return ""
|
||||
}
|
||||
|
||||
pkg := path.Base(downloadPkgURL)
|
||||
pkg := path.Base(downloadPkgURLs[0])
|
||||
ret := filepath.Join(util.TempDir, "install", pkg)
|
||||
localChecksum, _ := sha256Hash(ret)
|
||||
if checksum != localChecksum {
|
||||
|
@ -92,21 +92,32 @@ func checkDownloadInstallPkg() {
|
|||
checkDownloadInstallPkgLock.Lock()
|
||||
defer checkDownloadInstallPkgLock.Unlock()
|
||||
|
||||
downloadPkgURL, checksum, err := getUpdatePkg()
|
||||
if nil != err || "" == downloadPkgURL || "" == checksum {
|
||||
downloadPkgURLs, checksum, err := getUpdatePkg()
|
||||
if nil != err || 1 > len(downloadPkgURLs) || "" == checksum {
|
||||
return
|
||||
}
|
||||
|
||||
downloadInstallPkg(downloadPkgURL, checksum)
|
||||
msgId := util.PushMsg(Conf.Language(103), 60*1000*10)
|
||||
succ := false
|
||||
for _, downloadPkgURL := range downloadPkgURLs {
|
||||
err = downloadInstallPkg(downloadPkgURL, checksum)
|
||||
if nil == err {
|
||||
succ = true
|
||||
break
|
||||
|
||||
}
|
||||
}
|
||||
if !succ {
|
||||
util.PushUpdateMsg(msgId, Conf.Language(104), 7000)
|
||||
}
|
||||
}
|
||||
|
||||
func getUpdatePkg() (downloadPkgURL, checksum string, err error) {
|
||||
func getUpdatePkg() (downloadPkgURLs []string, checksum string, err error) {
|
||||
result, err := util.GetRhyResult(false)
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
installPkgSite := result["installPkg"].(string)
|
||||
ver := result["ver"].(string)
|
||||
if isVersionUpToDate(ver) {
|
||||
return
|
||||
|
@ -125,13 +136,20 @@ func getUpdatePkg() (downloadPkgURL, checksum string, err error) {
|
|||
suffix = "linux.AppImage"
|
||||
}
|
||||
pkg := "siyuan-" + ver + "-" + suffix
|
||||
downloadPkgURL = installPkgSite + "siyuan/" + pkg
|
||||
|
||||
url := "https://github.com/siyuan-note/siyuan/releases/download/v" + ver + "/" + pkg
|
||||
downloadPkgURLs = append(downloadPkgURLs, url)
|
||||
url = "https://ghproxy.com/" + url
|
||||
downloadPkgURLs = append(downloadPkgURLs, url)
|
||||
url = "https://release.b3log.org/siyuan/" + pkg
|
||||
downloadPkgURLs = append(downloadPkgURLs, url)
|
||||
|
||||
checksums := result["checksums"].(map[string]interface{})
|
||||
checksum = checksums[pkg].(string)
|
||||
return
|
||||
}
|
||||
|
||||
func downloadInstallPkg(pkgURL, checksum string) {
|
||||
func downloadInstallPkg(pkgURL, checksum string) (err error) {
|
||||
if "" == pkgURL || "" == checksum {
|
||||
return
|
||||
}
|
||||
|
@ -145,22 +163,20 @@ func downloadInstallPkg(pkgURL, checksum string) {
|
|||
}
|
||||
}
|
||||
|
||||
err := os.MkdirAll(filepath.Join(util.TempDir, "install"), 0755)
|
||||
err = os.MkdirAll(filepath.Join(util.TempDir, "install"), 0755)
|
||||
if nil != err {
|
||||
logging.LogErrorf("create temp install dir failed: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
logging.LogInfof("downloading install package [%s]", pkgURL)
|
||||
msgId := util.PushMsg(Conf.Language(103), 60*1000*10)
|
||||
client := req.C().SetTLSHandshakeTimeout(7 * time.Second).SetTimeout(10 * time.Minute)
|
||||
callback := func(info req.DownloadInfo) {
|
||||
//logging.LogDebugf("downloading install package [%s %.2f%%]", pkgURL, float64(info.DownloadedSize)/float64(info.Response.ContentLength)*100.0)
|
||||
}
|
||||
_, err = client.R().SetOutputFile(savePath).SetDownloadCallback(callback).Get(pkgURL)
|
||||
if nil != err {
|
||||
logging.LogErrorf("download install package failed: %s", err)
|
||||
util.PushUpdateMsg(msgId, Conf.Language(104), 7000)
|
||||
logging.LogErrorf("download install package [%s] failed: %s", pkgURL, err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -170,6 +186,7 @@ func downloadInstallPkg(pkgURL, checksum string) {
|
|||
return
|
||||
}
|
||||
logging.LogInfof("downloaded install package [%s] to [%s]", pkgURL, savePath)
|
||||
return
|
||||
}
|
||||
|
||||
func sha256Hash(filename string) (ret string, err error) {
|
||||
|
|
Loading…
Add table
Reference in a new issue