Jelajahi Sumber

Added retry max exit error func

Toby Chui 3 tahun lalu
induk
melakukan
73dafb2dac
2 mengubah file dengan 25 tambahan dan 4 penghapusan
  1. TEMPAT SAMPAH
      launcher.exe
  2. 25 4
      main.go

TEMPAT SAMPAH
launcher.exe


+ 25 - 4
main.go

@@ -2,6 +2,7 @@ package main
 
 import (
 	"fmt"
+	"log"
 	"net/http"
 	"os"
 	"os/exec"
@@ -17,11 +18,12 @@ import (
 */
 
 const (
-	launcherVersion = "1.0"
+	launcherVersion   = "1.0"
+	restoreRetryCount = 3 //The number of retry before restore old version, if not working after restoreRetryCount + 1 launcher will exit
 )
 
 var (
-	arozosRunning bool = false
+	norestart bool = false
 )
 
 func main() {
@@ -33,6 +35,17 @@ func main() {
 	//Check if updates exists. If yes, overwrite it
 	updateIfExists(binaryName)
 
+	//Check launch paramter for norestart
+	for _, arg := range os.Args[1:] {
+		if arg == "-h" || arg == "-help" {
+			//help argument, do not restart
+			norestart = true
+		} else if arg == "-version" || arg == "-v" {
+			//version argument, no restart
+			norestart = true
+		}
+	}
+
 	//Register the binary start path
 	cmd := exec.Command(binaryName, os.Args[1:]...)
 	cmd.Stdout = os.Stdout
@@ -54,20 +67,28 @@ func main() {
 		startTime := time.Now().Unix()
 		cmd.Run()
 		endTime := time.Now().Unix()
+
+		if norestart {
+			return
+		}
 		if endTime-startTime < 3 {
 			//Less than 3 seconds, shd be crashed. Add to retry counter
 			fmt.Println("[LAUNCHER] ArozOS Crashed. Restarting in 3 seconds... ")
 			retryCounter++
 		} else {
 			fmt.Println("[LAUNCHER] ArozOS Exited. Restarting in 3 seconds... ")
+			retryCounter = 0
 		}
 
 		time.Sleep(3 * time.Second)
 
-		if retryCounter > 3 {
+		if retryCounter > restoreRetryCount+1 {
+			//Fail to start. Exit program
+			log.Fatal("Unable to start ArozOS. Exiting to OS")
+			return
+		} else if retryCounter > restoreRetryCount {
 			//Restore from old version of the binary
 			restoreOldArozOS()
-			retryCounter = 0
 		} else {
 			updateIfExists(binaryName)
 		}