From 4917d25fc94d4d9a37172814a2be40454dc81511 Mon Sep 17 00:00:00 2001 From: Markus Date: Tue, 15 Oct 2019 19:32:27 +0200 Subject: [PATCH] =?UTF-8?q?=C3=BCberarbeitete=20update=20function=20(=20mi?= =?UTF-8?q?t=20l=C3=B6schen=20der=20dateien=20(bei=20windows=20n=C3=B6tig)?= =?UTF-8?q?=20und=20verschieben=20der=20exe=20datei=20(f=C3=BCr=20windows?= =?UTF-8?q?=20n=C3=B6tig))?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parameterManager.h | 2 +- programManager.cpp | 63 ++++++++++++++++++++++++++++------------------ 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/parameterManager.h b/parameterManager.h index f68dda3..f10ff43 100644 --- a/parameterManager.h +++ b/parameterManager.h @@ -60,7 +60,7 @@ struct Settings { proxy_ip = "127.0.0.1", languages = "GerDub,GerSub,Eng", genaueHoster = "", - version = "3.2.8", + version = "3.3.0", defaultFileVersion="1.6", outputFilePath = "", default_checkPath = "", diff --git a/programManager.cpp b/programManager.cpp index a872d26..ea58b60 100644 --- a/programManager.cpp +++ b/programManager.cpp @@ -970,12 +970,13 @@ int ProgramManager::updateModus(Settings *settings) std::cout << " => INFO: Suche nach der neusten Version..." << std::endl; std::string html = pageManager.getServerRequest(settings->VersionFileUrl).html; - if( html == "-1" ) { + if( html == "-1" || html == "") { + // Wenn debug mode print error if(settings->debugMode) std::cerr << " => Error: Download newst Version failed." << std::endl; - return 1; - } else if ( html == "" ) { - std::cout << " => Error: Das herunterladen der neusten Version ist fehlgeschlagen." << std::endl; + // no error output in pagemanager => print error + else if(html == "") + std::cout << " => Error: Das herunterladen der neusten Version ist fehlgeschlagen." << std::endl; return 1; } else { html = pageManager.replace(html, "\r", ""); @@ -991,6 +992,7 @@ int ProgramManager::updateModus(Settings *settings) return 2; } + //Gib Versionenunterschie aus std::cout << " => INFO: Jetzige Version: '" << settings->version << "' - Neueste Version: '" << neusteVersion << "'" << std::endl; //Print INFOs @@ -1008,20 +1010,25 @@ int ProgramManager::updateModus(Settings *settings) return 0; } + //lege pfad zum speichern fest + std::string downloadedFilePath = settings->cacheDir + "NeusteVersion" + ((settings->pathSymbol == '\\') ? ".exe" : ""); + //wenn dort schon eine datei existiert, lösche diese + std::cout << " => INFO: Lösche Download-Datei, fallst bereits eine vorhanden ist..." << std::endl; + if(fileExists(downloadedFilePath)) { + if(remove(downloadedFilePath.c_str()) != 0) { + perror((" => Error: Das löschen der Datei '" + downloadedFilePath + "' ist fehlgeschlagen").c_str()); + return 13; + } else if (settings->debugMode) { + std::cout << " => DEBUG: Erfolgreich alte gedownloadete Datei '" << downloadedFilePath << "' gelöscht." << std::endl; + } + } //Download new Version of Program std::cout << " => INFO: Lade neue Version herunter..." << std::endl; - std::string downloadedFilePath = settings->cacheDir + "NeusteVersion" + ((settings->pathSymbol == '\\') ? ".exe" : ""); - if(fileExists(downloadedFilePath)) - if(remove(downloadedFilePath.c_str()) != 0) { - perror("Failed to remove existing file"); - return 13; - } - if( pageManager.downLoadToFile(downloadedFilePath, settings->ProgrammFileUrl) != 0) { - std::cerr << "\n => Error: Download new Version failed." << std::endl; + std::cout << "\n => Error: Das herunterladen der neuen Version ist fehlgeschlagen." << std::endl; return 3; } std::cout << std::endl; @@ -1043,34 +1050,40 @@ int ProgramManager::updateModus(Settings *settings) return 5; } - //ersezte alte version mit neuer + //find exePath heraus std::string exePath = pageManager.getExePath(); if(exePath == "") { std::cout << " => Error: Function getExepath() ist fehlgeschlagen." << std::endl; return 6; } -#ifdef _WIN32 - std::cout << " => INFO: Verschiebe alte Version..." << std::endl; - if(fileExists(settings->cacheDir + "oldVersion.exe")) { - if(remove( (settings->cacheDir + "oldVersion.exe").c_str() ) != 0) { - perror("Failed to remove existing file"); + //lege pfad für alte version fest + std::string oldVersionPah = settings->cacheDir + "oldVersion" + ((settings->pathSymbol == '\\') ? ".exe" : ""); + + //lösche falls vorhanden altes backup + std::cout << " => INFO: Lösche alte Nofall Version falls vorhanden..." << std::endl; + if(fileExists(oldVersionPah)) { + if(remove( oldVersionPah.c_str() ) != 0) { + perror((" => Error: Das löschen der Datei '" + oldVersionPah + "' ist fehlgeschlagen.").c_str()); return 14; + } else if (settings->debugMode) { + std::cout << " => DEBUG: Erfolgreich Notfall Version '" << oldVersionPah << "' gelöscht." << std::endl; } } - if(rename(exePath.c_str(), (settings->cacheDir + "oldVersion.exe").c_str() ) != 0) { - perror(("Mv '" + exePath + "' -> '" + settings->cacheDir + "oldVersion.exe' failed").c_str()); + + //verschiebe neue jetzige version zu backup + std::cout << " => INFO: Verschiebe alte Version für Notfälle zu: '" << oldVersionPah << "'." << std::endl; + + if(rename(exePath.c_str(), oldVersionPah.c_str() ) != 0) { + perror((" => Error das Verschieben von '" + exePath + "' -> '" + oldVersionPah + "' ist fehlgeschlagen").c_str()); return 7; } -#endif - - - + //verschibe neue Version std::cout << " => INFO: Ersetzte alte Version mit neuer Version des Programms..." << std::endl; if(rename(downloadedFilePath.c_str(), exePath.c_str() ) != 0) { - perror(("Mv '" + downloadedFilePath + "' -> '" + exePath + "' failed").c_str()); + perror((" => Error: Das Verschieben von '" + downloadedFilePath + "' nach '" + exePath + "' ist fehlgeschlagen").c_str()); return 7; } else { std::cout << " => INFO: Erfolgreich verschoben und ersetzt:\n '"