diff --git a/code/ryzom/tools/client/ryzom_installer/res/resources.qrc b/code/ryzom/tools/client/ryzom_installer/res/resources.qrc
index 50fb5825f..31622b6c1 100644
--- a/code/ryzom/tools/client/ryzom_installer/res/resources.qrc
+++ b/code/ryzom/tools/client/ryzom_installer/res/resources.qrc
@@ -4,6 +4,7 @@
ryzom.ico
+ ryzom_installer.png
template.desktop
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 04400fbce..e18a58d19 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=
[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/mainwindow.cpp b/code/ryzom/tools/client/ryzom_installer/src/mainwindow.cpp
index 04c665197..822570fec 100644
--- a/code/ryzom/tools/client/ryzom_installer/src/mainwindow.cpp
+++ b/code/ryzom/tools/client/ryzom_installer/src/mainwindow.cpp
@@ -245,13 +245,15 @@ void CMainWindow::onUninstall()
components = dialog.getSelectedCompenents();
}
- COperationDialog dialog;
-
- dialog.setOperation(OperationUninstall);
- dialog.setUninstallComponents(components);
-
- if (dialog.exec())
{
+ COperationDialog dialog(this);
+
+ dialog.setOperation(OperationUninstall);
+ dialog.setUninstallComponents(components);
+
+ if (dialog.exec())
+ {
+ }
}
}
diff --git a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp
index 529afa8d6..7391ec148 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())
{
@@ -774,14 +771,9 @@ void COperationDialog::copyInstaller()
// create menu directory if defined
QString path = config->getMenuDirectory();
- if (!path.isEmpty())
+ if (!path.isEmpty() && !QDir().mkpath(path))
{
- QDir dir;
-
- if (!dir.mkpath(path))
- {
- qDebug() << "Unable to create directory" << path;
- }
+ qDebug() << "Unable to create directory" << path;
}
// create installer link in menu
@@ -944,14 +936,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,18 +947,13 @@ 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", "");
+ settings.setValue("Comments", config->getProductComments());
settings.setValue("DisplayIcon", nativeFullPath + ",0");
settings.setValue("DisplayName", QApplication::applicationName());
- settings.setValue("DisplayVersion", RYZOM_VERSION);
- settings.setValue("EstimatedSize", getDirectorySize(config->getInstallationDirectory(), true));
settings.setValue("InstallDate", QDateTime::currentDateTime().toString("Ymd"));
settings.setValue("InstallLocation", config->getInstallationDirectory());
- settings.setValue("MajorVersion", versionTokens[0].toInt());
- settings.setValue("MinorVersion", versionTokens[1].toInt());
settings.setValue("NoModify", 0);
settings.setValue("NoRemove", 0);
settings.setValue("NoRepair", 0);
@@ -985,6 +968,8 @@ bool COperationDialog::createAddRemoveEntry()
}
}
+ updateAddRemoveEntry();
+
emit done();
return true;
@@ -994,24 +979,23 @@ 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))
{
#ifdef Q_OS_WIN
QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Ryzom", QSettings::NativeFormat);
- QStringList versionTokens = QApplication::applicationVersion().split('.');
- settings.setValue("DisplayVersion", QApplication::applicationVersion());
- settings.setValue("EstimatedSize", getDirectorySize(config->getInstallationDirectory(), true));
+ QString version = QApplication::applicationVersion();
+
+ 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());
#endif
@@ -1028,8 +1012,6 @@ bool COperationDialog::deleteAddRemoveEntry()
settings.remove("");
#endif
- emit done();
-
return true;
}
@@ -1205,7 +1187,7 @@ void COperationDialog::deleteComponentsInstaller()
// reset it once it's done
m_removeComponents.installer = false;
- emit onProgressSuccess(1);
+ emit success(1);
emit done();
}
@@ -1240,7 +1222,7 @@ void COperationDialog::deleteComponentsDownloadedFiles()
// reset it once it's done
m_removeComponents.downloadedFiles = false;
- emit onProgressSuccess(1);
+ emit success(1);
emit done();
}
diff --git a/code/ryzom/tools/client/ryzom_installer/src/profile.cpp b/code/ryzom/tools/client/ryzom_installer/src/profile.cpp
index 58bde85df..45800a203 100644
--- a/code/ryzom/tools/client/ryzom_installer/src/profile.cpp
+++ b/code/ryzom/tools/client/ryzom_installer/src/profile.cpp
@@ -99,16 +99,28 @@ void CProfile::createShortcuts() const
{
QString shortcut = getClientDesktopShortcutFullPath();
+ // make sure directory exists
+ QDir().mkpath(CConfigFile::getInstance()->getDesktopDirectory());
+
// create desktop shortcut
- createShortcut(shortcut, name, exe, profileArguments, icon, workingDir);
+ if (!createShortcut(shortcut, name, exe, profileArguments, icon, workingDir))
+ {
+ qDebug() << "Unable to create desktop directory";
+ }
}
if (menuShortcut)
{
QString shortcut = getClientMenuShortcutFullPath();
+ // make sure directory exists
+ QDir().mkpath(CConfigFile::getInstance()->getMenuDirectory());
+
// create menu shortcut
- createShortcut(shortcut, name, exe, profileArguments, icon, workingDir);
+ if (!createShortcut(shortcut, name, exe, profileArguments, icon, workingDir))
+ {
+ qDebug() << "Unable to create shortcut for client in menu";
+ }
}
}
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);
diff --git a/code/ryzom/tools/client/ryzom_installer/src/uninstalldialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/uninstalldialog.cpp
index bfba57840..1330a16bf 100644
--- a/code/ryzom/tools/client/ryzom_installer/src/uninstalldialog.cpp
+++ b/code/ryzom/tools/client/ryzom_installer/src/uninstalldialog.cpp
@@ -265,7 +265,24 @@ void CUninstallDialog::updateSizes()
}
// downloaded files
- qint64 bytes = getDirectorySize(config->getInstallationDirectory(), false);
+ qint64 bytes = 0;
+
+ QDir dir(config->getInstallationDirectory());
+
+ QStringList filters;
+
+ filters << "*.log";
+ filters << "*.7z";
+ filters << "*.bnp";
+ filters << "*.zip";
+ filters << "*.part";
+
+ QFileInfoList downloadedFiles = dir.entryInfoList(filters, QDir::Files);
+
+ foreach(const QFileInfo &info, downloadedFiles)
+ {
+ bytes += info.size();
+ }
emit updateSize(m_downloadedFilesIndex, qBytesToHumanReadable(bytes));
diff --git a/code/ryzom/tools/client/ryzom_installer/src/utils.cpp b/code/ryzom/tools/client/ryzom_installer/src/utils.cpp
index a35210588..6c61e0f8f 100644
--- a/code/ryzom/tools/client/ryzom_installer/src/utils.cpp
+++ b/code/ryzom/tools/client/ryzom_installer/src/utils.cpp
@@ -229,9 +229,6 @@ bool resolveShortcut(const QWidget &window, const QString &shortcut, QString &pa
// Handle success
path = QDir::fromNativeSeparators(qFromWide(szGotPath));
}
- else
- {
- }
}
}
}