forked from markus/S_New4
v4.3.4: fix updater for windows (Laufwerks übergreifen etc)
This commit is contained in:
parent
3d87e301cc
commit
f3a4878d2a
@ -50,10 +50,11 @@ static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#define WIN32_LEAN_AND_MEAN
|
//#define WIN32_LEAN_AND_MEAN
|
||||||
#define VC_EXTRALEAN
|
//#define VC_EXTRALEAN
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
@ -62,7 +63,12 @@ static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
|
|||||||
void PageManager::get_terminal_size(int& width) {
|
void PageManager::get_terminal_size(int& width) {
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
||||||
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
|
if( GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi) == 0 ) {
|
||||||
|
if ( debugMode )
|
||||||
|
std::cout << " => WARNING: GetConsoleScreenBufferInfo failed => Use 9999 as max Msg-Length" << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
width = (int)(csbi.dwSize.X);
|
width = (int)(csbi.dwSize.X);
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
struct winsize w;
|
struct winsize w;
|
||||||
@ -82,6 +88,9 @@ Reply PageManager::getServerRequest(std::string Url, bool useCookies, std::strin
|
|||||||
|
|
||||||
int width;
|
int width;
|
||||||
get_terminal_size(width);
|
get_terminal_size(width);
|
||||||
|
if(width <= 0)
|
||||||
|
width = 999999;
|
||||||
|
|
||||||
//info ausgabe
|
//info ausgabe
|
||||||
std::cout << ( "\33[2K\rLade: '" + std::string(Url).erase( (((width - 12) < (int)Url.length()) ? (width - 12) : Url.length() ) ) + "'..." + ((debugMode) ? "\n" : "" )) << std::flush;
|
std::cout << ( "\33[2K\rLade: '" + std::string(Url).erase( (((width - 12) < (int)Url.length()) ? (width - 12) : Url.length() ) ) + "'..." + ((debugMode) ? "\n" : "" )) << std::flush;
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#define UpdaterCloudUrlWithPath "https://cloud.obermui.de/s/tXz7SWdaPJ7TacZ/download?path=%2F&files="
|
#define UpdaterCloudUrlWithPath "https://cloud.obermui.de/s/tXz7SWdaPJ7TacZ/download?path=%2F&files="
|
||||||
#define SecondUpdaterCloudUrlWithPath "https://snew4.obermui.de/download?path=%2F&files="
|
#define SecondUpdaterCloudUrlWithPath "https://snew4.obermui.de/download?path=%2F&files="
|
||||||
#define VERSION "4.3.2"
|
#define VERSION "4.3.4"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1177,7 +1177,7 @@ int ProgramManager::updateModus(Settings *settings)
|
|||||||
//wenn dort schon eine datei existiert, lösche diese
|
//wenn dort schon eine datei existiert, lösche diese
|
||||||
std::cout << "\n => INFO: Bereinige Downloadpfad, falls alte Dateien vorhanden sind..." << std::endl;
|
std::cout << "\n => INFO: Bereinige Downloadpfad, falls alte Dateien vorhanden sind..." << std::endl;
|
||||||
if(fileExists(downloadedFilePath)) {
|
if(fileExists(downloadedFilePath)) {
|
||||||
if(remove(downloadedFilePath.c_str()) != 0) {
|
if(remove(downloadedFilePath.c_str()) != 0 || fileExists(downloadedFilePath) ) {
|
||||||
perror((" => Error: Das löschen der Datei '" + downloadedFilePath + "' ist fehlgeschlagen").c_str());
|
perror((" => Error: Das löschen der Datei '" + downloadedFilePath + "' ist fehlgeschlagen").c_str());
|
||||||
return 13;
|
return 13;
|
||||||
} else if (settings->debugMode) {
|
} else if (settings->debugMode) {
|
||||||
@ -1228,7 +1228,7 @@ int ProgramManager::updateModus(Settings *settings)
|
|||||||
//lösche falls vorhanden altes backup
|
//lösche falls vorhanden altes backup
|
||||||
std::cout << "\n => INFO: Lösche alte Nofall Version falls vorhanden..." << std::endl;
|
std::cout << "\n => INFO: Lösche alte Nofall Version falls vorhanden..." << std::endl;
|
||||||
if(fileExists(oldVersionPah)) {
|
if(fileExists(oldVersionPah)) {
|
||||||
if(remove( oldVersionPah.c_str() ) != 0) {
|
if(remove( oldVersionPah.c_str() ) != 0 || fileExists(oldVersionPah)) {
|
||||||
perror((" => Error: Das löschen der Datei '" + oldVersionPah + "' ist fehlgeschlagen.").c_str());
|
perror((" => Error: Das löschen der Datei '" + oldVersionPah + "' ist fehlgeschlagen.").c_str());
|
||||||
return 14;
|
return 14;
|
||||||
} else if (settings->debugMode) {
|
} else if (settings->debugMode) {
|
||||||
@ -1237,24 +1237,76 @@ int ProgramManager::updateModus(Settings *settings)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//verschiebe neue jetzige version zu backup
|
//verschiebe neue jetzige version zu backup
|
||||||
std::cout << " => INFO: Verschiebe alte Version für Notfälle zu: '" << oldVersionPah << "'." << std::endl;
|
std::cout << ((settings->colorless) ? ("") : "\033[92m") << " => INFO: Verschiebe alte Version für Notfälle zu: '" << oldVersionPah << "'." << ((settings->colorless) ? ("") : "\033[0m") << std::endl;
|
||||||
|
|
||||||
if(rename(exePath.c_str(), oldVersionPah.c_str() ) != 0) {
|
if(rename(exePath.c_str(), oldVersionPah.c_str() ) != 0) {
|
||||||
perror((" => Error das Verschieben von '" + exePath + "' -> '" + oldVersionPah + "' ist fehlgeschlagen").c_str());
|
perror((" => Error das Verschieben von '" + exePath + "' -> '" + oldVersionPah + "' ist fehlgeschlagen").c_str());
|
||||||
return 7;
|
return 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( fileExists(exePath) && fileExists(oldVersionPah) ) {
|
||||||
|
std::cout << ((settings->colorless) ? ("\n") : "\n\033[33m")
|
||||||
|
<< "!! => WARNUNG: --->Die Aktuelle Version konnte nicht verschoben, sondern nur kopiert werden! ( Z.: Operation Laufwerksübergreifend ? )\n"
|
||||||
|
<< " ==> Aktuelle Version umbenennen. (Die Datei kann danach gelöscht werden!) " << ((settings->colorless) ? ("") : "\033[0m") << std::endl;
|
||||||
|
if(fileExists(exePath + "_ALT")) {
|
||||||
|
std::cout << ((settings->colorless) ? ("") : "\033[33m") << " => WARNUNG: Es existiert bereits eine Datei mit dem Namen "
|
||||||
|
<< exePath + "_ALT" << ((settings->colorless) ? ("") : "\033[0m") << "\n" << "Diese Datei loeschen: (Nur Enter um fortzufahren): " << std::flush;
|
||||||
|
|
||||||
|
std::string inp;
|
||||||
|
std::getline(std::cin, inp);
|
||||||
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
if( inp != "" ) {
|
||||||
|
std::cout << "Abbruch..." << std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(remove( (exePath + "_ALT" ).c_str() ) != 0 || fileExists(exePath + "_ALT") ) {
|
||||||
|
perror((" => Error: Das löschen der Datei '" + exePath + "_ALT" + "' ist fehlgeschlagen.").c_str());
|
||||||
|
return 1144;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if( rename(exePath.c_str(), (exePath + "_ALT").c_str() ) != 0 || fileExists(exePath) ) {
|
||||||
|
perror(" => ERROR: Umbennen auch fehlgeschlagen");
|
||||||
|
return 2314;
|
||||||
|
} else {
|
||||||
|
std::cout << " -> Umbenennen erfolgreich => Fahre fort..." << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(fileExists(exePath)) {
|
||||||
|
std::cout << " => WARNUNG: Aktuelle Version existiert nach dem Verschieben immer noch!" << std::endl;
|
||||||
|
if(remove( exePath.c_str() ) != 0 || fileExists(exePath) ) {
|
||||||
|
perror((" => Error: Das löschen der aktuellen Version '" + exePath + "' ist fehlgeschlagen.").c_str());
|
||||||
|
return 114;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//verschibe neue Version
|
//verschibe neue Version
|
||||||
std::cout << " => INFO: Ersetzte alte Version mit neuer Version des Programms..." << std::endl;
|
std::cout << " => INFO: Ersetzte alte Version mit neuer Version des Programms..." << std::endl;
|
||||||
|
|
||||||
if(rename(downloadedFilePath.c_str(), exePath.c_str() ) != 0) {
|
if(rename(downloadedFilePath.c_str(), exePath.c_str() ) != 0) {
|
||||||
perror((" => Error: Das Verschieben von '" + downloadedFilePath + "' nach '" + exePath + "' ist fehlgeschlagen").c_str());
|
perror((" => Error: Das Verschieben von '" + downloadedFilePath + "' nach '" + exePath + "' ist fehlgeschlagen").c_str());
|
||||||
|
|
||||||
return 7;
|
return 7;
|
||||||
} else {
|
} else {
|
||||||
std::cout << " => INFO: Erfolgreich verschoben und ersetzt:\n '"
|
std::cout << " => INFO: Erfolgreich verschoben und ersetzt:\n '"
|
||||||
<< downloadedFilePath << "' -> '" << exePath << "'" << std::endl;
|
<< downloadedFilePath << "' -> '" << exePath << "'" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(fileExists(downloadedFilePath)) {
|
||||||
|
std::cout << " => WARNUNG: Download-Datei existiert nach dem Verschieben immer noch! Ist diese Operation vielleicht Laufwerksübergreifend? ( Falls ja, starten sie "
|
||||||
|
<< settings->programName << " ggf. von ihrem C:\\-Laufwerk." << std::endl;
|
||||||
|
|
||||||
|
if(remove( downloadedFilePath.c_str() ) != 0 || fileExists(downloadedFilePath) ) {
|
||||||
|
perror((" => Error: Das löschen der Downloaddatei '" + downloadedFilePath + "' ist fehlgeschlagen.").c_str());
|
||||||
|
return 118;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::cout << ((settings->colorless) ? ("") : "\033[92m") << "\n => Update Erfolgreich ausgeführt: '" << settings->version <<
|
std::cout << ((settings->colorless) ? ("") : "\033[92m") << "\n => Update Erfolgreich ausgeführt: '" << settings->version <<
|
||||||
"' -> '" << neusteVersion << "'" << ((settings->colorless) ? ("") : "\033[0m") << std::endl;
|
"' -> '" << neusteVersion << "'" << ((settings->colorless) ? ("") : "\033[0m") << std::endl;
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
../curl/
|
../src/curl/
|
||||||
|
Loading…
Reference in New Issue
Block a user