v3.2.8: fix missing removing file before rename in windows

This commit is contained in:
Markus 2019-10-14 19:49:53 +02:00
parent a9f80ec4d1
commit 42f66b673f
2 changed files with 28 additions and 3 deletions

View File

@ -60,7 +60,7 @@ struct Settings {
proxy_ip = "127.0.0.1",
languages = "GerDub,GerSub,Eng",
genaueHoster = "",
version = "3.2.7",
version = "3.2.8",
defaultFileVersion="1.6",
outputFilePath = "",
default_checkPath = "",

View File

@ -1008,15 +1008,23 @@ int ProgramManager::updateModus(Settings *settings)
return 0;
}



//Download new Version of Program
std::cout << " => INFO: Lade neue Version herunter..." << std::endl;

std::string downloadedFilePath = settings->cacheDir + "NeusteVersion" + ((settings->pathSymbol == '\\') ? ".exe" : "");
if( pageManager.downLoadToFile(downloadedFilePath, settings->ProgrammFileUrl) != 0) {
std::cerr << " => Error: Download new Version failed." << std::endl;
return 3;
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;
return 3;
} std::cout << std::endl;


//Make ist executable for test execution
#ifdef __linux__
@ -1042,6 +1050,23 @@ int ProgramManager::updateModus(Settings *settings)
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");
return 14;
}
}
if(rename(exePath.c_str(), (settings->cacheDir + "oldVersion.exe").c_str() ) != 0) {
perror(("Mv '" + exePath + "' -> '" + settings->cacheDir + "oldVersion.exe' failed").c_str());
return 7;
}

#endif



std::cout << " => INFO: Ersetzte alte Version mit neuer Version des Programms..." << std::endl;

if(rename(downloadedFilePath.c_str(), exePath.c_str() ) != 0) {