forked from markus/S_New4
change getExePath to function + ...
This commit is contained in:
parent
2a76c4c10e
commit
f2f9a37a64
@ -134,7 +134,7 @@ int PageManager::downLoadToFile(std::string filePath, std::string url)
|
|||||||
curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, false);
|
curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, false);
|
||||||
|
|
||||||
/* disable progress meter, set to 0L to enable and disable debug output */
|
/* disable progress meter, set to 0L to enable and disable debug output */
|
||||||
curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, true);
|
curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, false);
|
||||||
|
|
||||||
/* send all data to this function */
|
/* send all data to this function */
|
||||||
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
|
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
|
||||||
@ -345,6 +345,31 @@ size_t PageManager::getDate()
|
|||||||
static_cast<double>(tm_now->tm_mon +1) * 30.43685 + tm_now->tm_mday);
|
static_cast<double>(tm_now->tm_mon +1) * 30.43685 + tm_now->tm_mday);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string PageManager::getExePath()
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
|
||||||
|
char buff[PATH_MAX];
|
||||||
|
ssize_t len = ::readlink("/proc/self/exe", buff, sizeof(buff)-1);
|
||||||
|
if (len == -1) {
|
||||||
|
perror("Readlink proc self exe failed");
|
||||||
|
return "";
|
||||||
|
} else {
|
||||||
|
buff[len] = '\0';
|
||||||
|
return std::string(buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#ifdef _WIN32
|
||||||
|
wchar_t buffer[MAX_PATH + 1];
|
||||||
|
GetModuleFileName( nullptr, buffer, MAX_PATH );
|
||||||
|
std::wstring wstr(buffer);
|
||||||
|
return std::string(wstr.begin(), wstr.end());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int PageManager::writeToFile(std::string path, std::string text)
|
int PageManager::writeToFile(std::string path, std::string text)
|
||||||
{
|
{
|
||||||
if(path == "")
|
if(path == "")
|
||||||
|
@ -43,6 +43,7 @@ public:
|
|||||||
std::string grep(std::string text, std::string substring, bool IgnoreCaseSensetifity = false);
|
std::string grep(std::string text, std::string substring, bool IgnoreCaseSensetifity = false);
|
||||||
std::string upper_string(const std::string& str);
|
std::string upper_string(const std::string& str);
|
||||||
size_t getDate();
|
size_t getDate();
|
||||||
|
std::string getExePath();
|
||||||
|
|
||||||
int writeToFile(std::string path, std::string text);
|
int writeToFile(std::string path, std::string text);
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ int ProgramManager::start(Settings *settings)
|
|||||||
return 174;
|
return 174;
|
||||||
}
|
}
|
||||||
|
|
||||||
//settings->modus = UPDATE_MODUS;
|
settings->modus = UPDATE_MODUS;
|
||||||
|
|
||||||
|
|
||||||
switch (settings->modus) {
|
switch (settings->modus) {
|
||||||
@ -975,7 +975,7 @@ int ProgramManager::updateModus(Settings *settings)
|
|||||||
|
|
||||||
if( (html = pageManager.getServerRequest(settings->VersionFileUrl).html) == "-1") {
|
if( (html = pageManager.getServerRequest(settings->VersionFileUrl).html) == "-1") {
|
||||||
if(settings->debugMode)
|
if(settings->debugMode)
|
||||||
std::cerr << "Download newst Version file failed" << std::endl;
|
std::cerr << "Download newst Version failed" << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
html = pageManager.replace(html, "\r", "");
|
html = pageManager.replace(html, "\r", "");
|
||||||
@ -983,18 +983,16 @@ int ProgramManager::updateModus(Settings *settings)
|
|||||||
|
|
||||||
// Get newst Version
|
// Get newst Version
|
||||||
std::stringstream strstream(html+ "\n");
|
std::stringstream strstream(html+ "\n");
|
||||||
std::string neusteVersion, dieseVersion;
|
std::string neusteVersion;
|
||||||
std::getline(strstream, neusteVersion);
|
std::getline(strstream, neusteVersion);
|
||||||
if( !isNumber( (neusteVersion = pageManager.replace(neusteVersion, ".", "")) ) ) {
|
if( !isNumber( (pageManager.replace(neusteVersion, ".", "")) ) ) {
|
||||||
std::cout << " => Error: Gedownloadete neuste Version ist ungültig: '" << neusteVersion << "'" << std::endl;
|
std::cout << " => Error: Gedownloadete neuste Version ist ungültig: '" << neusteVersion << "'" << std::endl;
|
||||||
return 2;
|
return 2;
|
||||||
} else {
|
|
||||||
dieseVersion = pageManager.replace(settings->version, ".", "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "Neueste Version: " << neusteVersion << " diese Version " << dieseVersion << std::endl;
|
std::cout << "Neueste Version: " << neusteVersion << " diese Version " << settings->version << std::endl;
|
||||||
|
|
||||||
if(neusteVersion <= dieseVersion) {
|
if(pageManager.replace(neusteVersion, ".", "") <= pageManager.replace(settings->version, ".", "")) {
|
||||||
std::cout << " => INFO: Du benützt bereits die neuste Release-Version." << std::endl;
|
std::cout << " => INFO: Du benützt bereits die neuste Release-Version." << std::endl;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1009,9 +1007,9 @@ int ProgramManager::updateModus(Settings *settings)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::cout << "Mache das Programm ausführbar..." << std::endl;
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
chmod(downloadedFilePath.c_str(), S_IRWXU);
|
std::cout << "Mache das Programm ausführbar..." << std::endl;
|
||||||
|
chmod(downloadedFilePath.c_str(), S_IRWXU);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::cout << "Überprüfe funktionalität der neuen Version..." << std::endl;
|
std::cout << "Überprüfe funktionalität der neuen Version..." << std::endl;
|
||||||
@ -1021,22 +1019,11 @@ int ProgramManager::updateModus(Settings *settings)
|
|||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string exePath = pageManager.getExePath();
|
||||||
std::string exePath;
|
if(exePath == "") {
|
||||||
#ifdef __linux__
|
std::cout << "getExepath failed" << std::endl;
|
||||||
char result[PATH_MAX + 1];
|
|
||||||
if(readlink("/proc/self/exe", result, PATH_MAX) == -1) {
|
|
||||||
perror("Readlink failed");
|
|
||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
exePath = result;
|
|
||||||
#endif
|
|
||||||
#ifdef _WIN32
|
|
||||||
wchar_t buffer[MAX_PATH + 1];
|
|
||||||
GetModuleFileName( nullptr, buffer, MAX_PATH );
|
|
||||||
std::wstring wstr(buffer);
|
|
||||||
exePath = std::string(wstr.begin(), wstr.end());
|
|
||||||
#endif
|
|
||||||
|
|
||||||
std::cout << "Ersetzte jetzige Version mit neuer Version des Programms..." << std::endl;
|
std::cout << "Ersetzte jetzige Version mit neuer Version des Programms..." << std::endl;
|
||||||
|
|
||||||
@ -1048,7 +1035,7 @@ int ProgramManager::updateModus(Settings *settings)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::cout << "Update Erfolgreich ausgeführt." << std::endl;
|
std::cout << "Update Erfolgreich ausgeführt:" << settings->version << " -> " << neusteVersion << std::endl;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user