diff --git a/code/ryzom/tools/client/ryzom_installer/res/ryzom_installer.ini b/code/ryzom/tools/client/ryzom_installer/res/ryzom_installer.ini index f82e707c9..7ce0988d5 100644 --- a/code/ryzom/tools/client/ryzom_installer/res/ryzom_installer.ini +++ b/code/ryzom/tools/client/ryzom_installer/res/ryzom_installer.ini @@ -1,7 +1,10 @@ -version=2 +version=3 [common] installation_directory= +installer_filename_windows=ryzom_installer_qt_r.exe +installer_filename_osx=RyzomInstaller.app/Contents/MacOS/RyzomInstaller +installer_filename_linux=ryzom_installer_qt [product] name=Ryzom @@ -31,9 +34,6 @@ client_filename_old_windows=client_ryzom_rd.exe configuration_filename_windows=ryzom_configuration_qt_r.exe configuration_filename_osx=Ryzom.app/Contents/MacOS/RyzomConfiguration configuration_filename_linux=ryzom_configuration_qt -installer_filename_windows=ryzom_installer_qt_r.exe -installer_filename_osx=RyzomInstaller.app/Contents/MacOS/RyzomInstaller -installer_filename_linux=ryzom_installer_qt comments= [server_1] @@ -54,9 +54,6 @@ client_filename_old_windows=client_ryzom_rd.exe configuration_filename_windows=ryzom_configuration_qt_r.exe configuration_filename_osx=Ryzom.app/Contents/MacOS/RyzomConfiguration configuration_filename_linux=ryzom_configuration_qt -installer_filename_windows=ryzom_installer_qt_r.exe -installer_filename_osx=RyzomInstaller.app/Contents/MacOS/RyzomInstaller -installer_filename_linux=ryzom_installer_qt comments=Test server [profiles] diff --git a/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp b/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp index 8a52a6af7..c3eaf3d64 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp @@ -82,6 +82,18 @@ bool CConfigFile::load(const QString &filename) m_installationDirectory = settings.value("installation_directory").toString(); m_use64BitsClient = settings.value("use_64bits_client", true).toBool(); m_shouldUninstallOldClient = settings.value("should_uninstall_old_client", true).toBool(); + + if (!useDefaultValues) + { +#if defined(Q_OS_WIN) + m_installerFilename = settings.value("installer_filename_windows").toString(); +#elif defined(Q_OS_MAC) + m_installerFilename = settings.value("installer_filename_osx").toString(); +#else + m_installerFilename = settings.value("installer_filename_linux").toString(); +#endif + } + settings.endGroup(); if (!useDefaultValues) @@ -129,6 +141,9 @@ bool CConfigFile::load(const QString &filename) settings.endGroup(); } + // save file with new values + if (useDefaultValues) save(); + return !m_servers.isEmpty(); } @@ -144,6 +159,15 @@ bool CConfigFile::save() const settings.setValue("installation_directory", m_installationDirectory); settings.setValue("use_64bits_client", m_use64BitsClient); settings.setValue("should_uninstall_old_client", m_shouldUninstallOldClient); + +#if defined(Q_OS_WIN) + settings.setValue("installer_filename_windows", m_installerFilename); +#elif defined(Q_OS_MAC) + settings.setValue("installer_filename_osx", m_installerFilename); +#else + settings.setValue("installer_filename_linux", m_installerFilename); +#endif + settings.endGroup(); settings.beginGroup("product"); @@ -686,10 +710,7 @@ bool CConfigFile::shouldCreateMenuShortcut() const bool CConfigFile::shouldCopyInstaller() const { - const CProfile &p = getProfile(); - const CServer &s = getServer(p.server); - - QString installerDst = getInstallationDirectory() + "/" + s.installerFilename; + QString installerDst = getInstallationDirectory() + "/" + m_installerFilename; // if installer not found in installation directory, extract it from BNP if (!QFile::exists(installerDst)) return true; diff --git a/code/ryzom/tools/client/ryzom_installer/src/configfile.h b/code/ryzom/tools/client/ryzom_installer/src/configfile.h index 6a8600f05..d83103726 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/configfile.h +++ b/code/ryzom/tools/client/ryzom_installer/src/configfile.h @@ -116,6 +116,8 @@ public: bool uninstallingOldClient() const; void setUninstallingOldClient(bool on) const; + QString getInstallerFilename() const { return m_installerFilename; } + QString expandVariables(const QString &str) const; QString getClientArch() const; @@ -155,6 +157,7 @@ private: QString m_srcDirectory; bool m_use64BitsClient; bool m_shouldUninstallOldClient; + QString m_installerFilename; QString m_language; QString m_defaultConfigPath; diff --git a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp index 529afa8d6..d61d3f8af 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp @@ -735,15 +735,12 @@ void COperationDialog::copyInstaller() { CConfigFile *config = CConfigFile::getInstance(); - // default server - const CServer &server = config->getServer(); - m_currentOperation = tr("Copying installer to new location..."); QString destinationDirectory = config->getInstallationDirectory(); // rename old client to installer - QString newInstallerFilename = server.installerFilename; + QString newInstallerFilename = config->getInstallerFilename(); if (!newInstallerFilename.isEmpty()) { @@ -944,14 +941,10 @@ bool COperationDialog::createAddRemoveEntry() { CConfigFile *config = CConfigFile::getInstance(); - const CServer &server = config->getServer(); + QString newInstallerFilename = config->getInstallerFilename(); - QString oldInstallerFilename = server.clientFilenameOld; - QString newInstallerFilename = server.installerFilename; - - if (!oldInstallerFilename.isEmpty() && !newInstallerFilename.isEmpty()) + if (!newInstallerFilename.isEmpty()) { - QString oldInstallerFullPath = config->getSrcServerDirectory() + "/" + oldInstallerFilename; QString newInstallerFullPath = config->getInstallationDirectory() + "/" + newInstallerFilename; if (QFile::exists(newInstallerFullPath)) @@ -959,7 +952,6 @@ bool COperationDialog::createAddRemoveEntry() #ifdef Q_OS_WIN QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Ryzom", QSettings::NativeFormat); - QStringList versionTokens = QString(RYZOM_VERSION).split('.'); QString nativeFullPath = QDir::toNativeSeparators(newInstallerFullPath); settings.setValue("Comments", ""); @@ -994,14 +986,10 @@ bool COperationDialog::updateAddRemoveEntry() { CConfigFile *config = CConfigFile::getInstance(); - const CServer &server = config->getServer(); + QString newInstallerFilename = config->getInstallerFilename(); - QString oldInstallerFilename = server.clientFilenameOld; - QString newInstallerFilename = server.installerFilename; - - if (!oldInstallerFilename.isEmpty() && !newInstallerFilename.isEmpty()) + if (!newInstallerFilename.isEmpty()) { - QString oldInstallerFullPath = config->getSrcServerDirectory() + "/" + oldInstallerFilename; QString newInstallerFullPath = config->getInstallationDirectory() + "/" + newInstallerFilename; if (QFile::exists(newInstallerFullPath)) diff --git a/code/ryzom/tools/client/ryzom_installer/src/server.cpp b/code/ryzom/tools/client/ryzom_installer/src/server.cpp index 6ce9bf6b8..88932fa0c 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/server.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/server.cpp @@ -40,17 +40,14 @@ void CServer::loadFromSettings(const QSettings &settings) clientFilename = settings.value("client_filename_windows").toString(); clientFilenameOld = settings.value("client_filename_old_windows").toString(); configurationFilename = settings.value("configuration_filename_windows").toString(); - installerFilename = settings.value("installer_filename_windows").toString(); #elif defined(Q_OS_MAC) clientFilename = settings.value("client_filename_osx").toString(); clientFilenameOld = settings.value("client_filename_old_osx").toString(); configurationFilename = settings.value("configuration_filename_osx").toString(); - installerFilename = settings.value("installer_filename_osx").toString(); #else clientFilename = settings.value("client_filename_linux").toString(); clientFilenameOld = settings.value("client_filename_old_linux").toString(); configurationFilename = settings.value("configuration_filename_linux").toString(); - installerFilename = settings.value("installer_filename_linux").toString(); #endif comments = settings.value("comments").toString(); } @@ -71,17 +68,14 @@ void CServer::saveToSettings(QSettings &settings) const settings.setValue("client_filename_windows", clientFilename); settings.setValue("client_filename_old_windows", clientFilenameOld); settings.setValue("configuration_filename_windows", configurationFilename); - settings.setValue("installer_filename_windows", installerFilename); #elif defined(Q_OS_MAC) settings.setValue("client_filename_osx", clientFilename); settings.setValue("client_filename_old_osx", clientFilenameOld); settings.setValue("configuration_filename_osx", configurationFilename); - settings.setValue("installer_filename_osx", installerFilename); #else settings.setValue("client_filename_linux", clientFilename); settings.setValue("client_filename_old_linux", clientFilenameOld); settings.setValue("configuration_filename_linux", configurationFilename); - settings.setValue("installer_filename_linux", installerFilename); #endif settings.setValue("comments", comments); } diff --git a/code/ryzom/tools/client/ryzom_installer/src/server.h b/code/ryzom/tools/client/ryzom_installer/src/server.h index 61c788c4d..33fbbb49e 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/server.h +++ b/code/ryzom/tools/client/ryzom_installer/src/server.h @@ -41,7 +41,6 @@ public: QString clientFilename; QString clientFilenameOld; QString configurationFilename; - QString installerFilename; QString comments; void loadFromSettings(const QSettings &settings);