feat: 删除旧的发布工作流,添加新的发布工作流,重构更新逻辑以支持跨平台重启

This commit is contained in:
ryan
2026-03-10 23:02:51 +08:00
parent fbc27e9d5d
commit 6fe9ad4af6
5 changed files with 189 additions and 114 deletions
@@ -0,0 +1,27 @@
//go:build !windows
package updater
import (
"fmt"
"os"
"syscall"
)
func replaceAndRestart(execPath string, tmpPath string) error {
backupPath := execPath + ".bak"
os.Remove(backupPath)
if err := os.Rename(execPath, backupPath); err != nil {
os.Remove(tmpPath)
return fmt.Errorf("backup current binary: %w", err)
}
if err := os.Rename(tmpPath, execPath); err != nil {
os.Rename(backupPath, execPath)
return fmt.Errorf("replace binary: %w", err)
}
os.Remove(backupPath)
if err := syscall.Exec(execPath, os.Args, os.Environ()); err != nil {
return fmt.Errorf("exec restart: %w", err)
}
return fmt.Errorf("unreachable after exec")
}