From f65883296b1ed8b671c2690303c7d4be11933a78 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 16 Oct 2016 17:26:05 +0200 Subject: [PATCH] Changed: Use getInstallerInstalledFilePath() to get installed Installer full path --HG-- branch : develop --- .../client/ryzom_installer/src/configfile.cpp | 9 ++- .../client/ryzom_installer/src/configfile.h | 4 +- .../ryzom_installer/src/operationdialog.cpp | 81 +++++++++---------- 3 files changed, 44 insertions(+), 50 deletions(-) diff --git a/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp b/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp index 20accba68..94feeed9f 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp @@ -756,12 +756,15 @@ QString CConfigFile::getInstallerCurrentDirPath() const return QApplication::applicationDirPath(); } -QString CConfigFile::getInstallerOriginalFilePath() const +QString CConfigFile::getInstallerInstalledFilePath() const { - return getInstallerOriginalDirPath() + "/" + QFileInfo(QApplication::applicationFilePath()).fileName(); + // return an empty string, if no Installer filename in config + if (m_installerFilename.isEmpty()) return ""; + + return getInstallerInstalledDirPath() + "/" + m_installerFilename; } -QString CConfigFile::getInstallerOriginalDirPath() const +QString CConfigFile::getInstallerInstalledDirPath() const { return m_installationDirectory; } diff --git a/code/ryzom/tools/client/ryzom_installer/src/configfile.h b/code/ryzom/tools/client/ryzom_installer/src/configfile.h index d83103726..89aa6ce0a 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/configfile.h +++ b/code/ryzom/tools/client/ryzom_installer/src/configfile.h @@ -124,8 +124,8 @@ public: QString getInstallerCurrentFilePath() const; QString getInstallerCurrentDirPath() const; - QString getInstallerOriginalFilePath() const; - QString getInstallerOriginalDirPath() const; + QString getInstallerInstalledFilePath() const; + QString getInstallerInstalledDirPath() const; QString getInstallerMenuShortcutFullPath() const; QString getInstallerDesktopShortcutFullPath() const; diff --git a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp index 9fc47dde3..2d592ef6e 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp @@ -727,13 +727,12 @@ void COperationDialog::copyInstaller() QString destinationDirectory = config->getInstallationDirectory(); // rename old client to installer - QString newInstallerFilename = config->getInstallerFilename(); - if (!newInstallerFilename.isEmpty()) - { - QString oldInstallerFullPath = QApplication::applicationFilePath(); - QString newInstallerFullPath = config->getInstallationDirectory() + "/" + newInstallerFilename; + QString oldInstallerFullPath = QApplication::applicationFilePath(); + QString newInstallerFullPath = config->getInstallerInstalledFilePath(); + if (!newInstallerFullPath.isEmpty()) + { // always copy new installers CFilesCopier copier(this); copier.setIncludeFilter(config->getInstallerRequiredFiles()); @@ -931,36 +930,31 @@ bool COperationDialog::createAddRemoveEntry() { CConfigFile *config = CConfigFile::getInstance(); - QString newInstallerFilename = config->getInstallerFilename(); + QString newInstallerFullPath = config->getInstallerInstalledFilePath(); - if (!newInstallerFilename.isEmpty()) + if (!newInstallerFullPath.isEmpty() && QFile::exists(newInstallerFullPath)) { - QString newInstallerFullPath = config->getInstallationDirectory() + "/" + newInstallerFilename; - - if (QFile::exists(newInstallerFullPath)) - { #ifdef Q_OS_WIN - QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Ryzom", QSettings::NativeFormat); - - QString nativeFullPath = QDir::toNativeSeparators(newInstallerFullPath); - - settings.setValue("Comments", config->getProductComments()); - settings.setValue("DisplayIcon", nativeFullPath + ",0"); - settings.setValue("DisplayName", QApplication::applicationName()); - settings.setValue("InstallDate", QDateTime::currentDateTime().toString("Ymd")); - settings.setValue("InstallLocation", config->getInstallationDirectory()); - settings.setValue("NoModify", 0); - settings.setValue("NoRemove", 0); - settings.setValue("NoRepair", 0); - if (!config->getProductPublisher().isEmpty()) settings.setValue("Publisher", config->getProductPublisher()); - settings.setValue("QuietUninstallString", nativeFullPath + " -u -s"); - settings.setValue("UninstallString", nativeFullPath + " -u"); - if (!config->getProductUpdateUrl().isEmpty()) settings.setValue("URLUpdateInfo", config->getProductUpdateUrl()); - if (!config->getProductAboutUrl().isEmpty()) settings.setValue("URLInfoAbout", config->getProductAboutUrl()); - if (!config->getProductHelpUrl().isEmpty()) settings.setValue("HelpLink", config->getProductHelpUrl()); - // ModifyPath + QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Ryzom", QSettings::NativeFormat); + + QString nativeFullPath = QDir::toNativeSeparators(newInstallerFullPath); + + settings.setValue("Comments", config->getProductComments()); + settings.setValue("DisplayIcon", nativeFullPath + ",0"); + settings.setValue("DisplayName", QApplication::applicationName()); + settings.setValue("InstallDate", QDateTime::currentDateTime().toString("Ymd")); + settings.setValue("InstallLocation", config->getInstallationDirectory()); + settings.setValue("NoModify", 0); + settings.setValue("NoRemove", 0); + settings.setValue("NoRepair", 0); + if (!config->getProductPublisher().isEmpty()) settings.setValue("Publisher", config->getProductPublisher()); + settings.setValue("QuietUninstallString", nativeFullPath + " -u -s"); + settings.setValue("UninstallString", nativeFullPath + " -u"); + if (!config->getProductUpdateUrl().isEmpty()) settings.setValue("URLUpdateInfo", config->getProductUpdateUrl()); + if (!config->getProductAboutUrl().isEmpty()) settings.setValue("URLInfoAbout", config->getProductAboutUrl()); + if (!config->getProductHelpUrl().isEmpty()) settings.setValue("HelpLink", config->getProductHelpUrl()); + // ModifyPath #endif - } } updateAddRemoveEntry(); @@ -974,27 +968,24 @@ bool COperationDialog::updateAddRemoveEntry() { CConfigFile *config = CConfigFile::getInstance(); - QString newInstallerFilename = config->getInstallerFilename(); + QString newInstallerFullPath = config->getInstallerInstalledFilePath(); - if (!newInstallerFilename.isEmpty()) + if (!newInstallerFullPath.isEmpty() && QFile::exists(newInstallerFullPath)) { - QString newInstallerFullPath = config->getInstallationDirectory() + "/" + newInstallerFilename; + QString newInstallerFilename = config->getInstallerFilename(); - if (QFile::exists(newInstallerFullPath)) - { #ifdef Q_OS_WIN - QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Ryzom", QSettings::NativeFormat); + QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Ryzom", QSettings::NativeFormat); - QString version = QApplication::applicationVersion(); + QString version = QApplication::applicationVersion(); - settings.setValue("DisplayVersion", version); - settings.setValue("EstimatedSize", (quint32)(getDirectorySize(config->getInstallationDirectory(), true) / 1024)); // size if in KiB + settings.setValue("DisplayVersion", version); + settings.setValue("EstimatedSize", (quint32)(getDirectorySize(config->getInstallationDirectory(), true) / 1024)); // size if in KiB - QStringList versionTokens = version.split('.'); - settings.setValue("MajorVersion", versionTokens[0].toInt()); - settings.setValue("MinorVersion", versionTokens[1].toInt()); + QStringList versionTokens = version.split('.'); + settings.setValue("MajorVersion", versionTokens[0].toInt()); + settings.setValue("MinorVersion", versionTokens[1].toInt()); #endif - } } return true; @@ -1161,7 +1152,7 @@ void COperationDialog::deleteComponentsInstaller() dir.removeRecursively(); } - path = config->getInstallerOriginalDirPath(); + path = config->getInstallerInstalledDirPath(); QStringList files = config->getInstallerRequiredFiles(); foreach(const QString &file, files)