main.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "net/http"
  6. "os"
  7. "errors"
  8. "os/exec"
  9. "path/filepath"
  10. "runtime"
  11. "strings"
  12. "time"
  13. )
  14. func main(){
  15. res, err := http.Get("https://kptyun.cn/file/PrconsoleV2.4.exe")
  16. if err != nil {
  17. panic(err)
  18. }
  19. if res.StatusCode != 200{
  20. fmt.Println("更新文件不存在或网络错误")
  21. time.Sleep(3*time.Second)
  22. return
  23. }
  24. fmt.Println("更新中....")
  25. res.Header.Get("Content-Disposition")
  26. CurrentPath,err := GetCurrentPath()
  27. if err != nil {
  28. fmt.Println(err)
  29. return
  30. }
  31. err =os.Rename(CurrentPath+"PrconsoleV2.4.exe",CurrentPath+"PrconsoleV2.4.exe"+time.Now().Format("20060102150405"))
  32. f, err := os.Create(CurrentPath+"PrconsoleV2.4.exe")
  33. if err != nil {
  34. fmt.Println(err)
  35. return
  36. }
  37. _,err =io.Copy(f, res.Body)
  38. if err!= nil{
  39. fmt.Println(err)
  40. return
  41. }
  42. fmt.Println("更新成功")
  43. time.Sleep(3*time.Second)
  44. }
  45. func GetCurrentPath() (string, error) {
  46. file, err := exec.LookPath(os.Args[0])
  47. if err != nil {
  48. return "", err
  49. }
  50. path, err := filepath.Abs(file)
  51. if err != nil {
  52. return "", err
  53. }
  54. //fmt.Println("path111:", path)
  55. if runtime.GOOS == "windows" {
  56. path = strings.Replace(path, "\\", "/", -1)
  57. }
  58. //fmt.Println("path222:", path)
  59. i := strings.LastIndex(path, "/")
  60. if i < 0 {
  61. return "", errors.New(`Can't find "/" or "\".`)
  62. }
  63. //fmt.Println("path333:", path)
  64. return string(path[0 : i+1]), nil
  65. }