From b4f1f0868c01628051d9b645fe45ef644a3aec04 Mon Sep 17 00:00:00 2001 From: kervala Date: Tue, 20 Sep 2016 17:40:14 +0200 Subject: [PATCH] Changed: Launch upgrade script from 7z or ZIP archives if present, see #279 --HG-- branch : develop --- .../ryzom_installer/src/operationdialog.cpp | 22 ++++++++++++++----- .../ryzom_installer/src/operationdialog.h | 1 + 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp index 86d9cbfbf..23ba8c761 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp @@ -553,9 +553,11 @@ void COperationDialog::extractDownloadedClient() m_currentOperation = tr("Extract client files required by server %1").arg(server.name); m_currentOperationProgressFormat = tr("Extracting %1..."); + QString destinationDirectory = server.getDirectory(); + CFilesExtractor extractor(this); extractor.setSourceFile(config->getInstallationDirectory() + "/" + config->expandVariables(server.clientDownloadFilename)); - extractor.setDestinationDirectory(server.getDirectory()); + extractor.setDestinationDirectory(destinationDirectory); if (extractor.exec()) { @@ -564,6 +566,8 @@ void COperationDialog::extractDownloadedClient() { } + launchUpgradeScript(destinationDirectory, server.clientFilename); + emit done(); } @@ -652,7 +656,14 @@ void COperationDialog::extractBnpClient() extractor.setDestinationDirectory(destinationDirectory); extractor.exec(); - QString upgradeScript = destinationDirectory + "/upgd_nl."; + launchUpgradeScript(destinationDirectory, server.clientFilename); + + emit done(); +} + +void COperationDialog::launchUpgradeScript(const QString &directory, const QString &executable) +{ + QString upgradeScript = directory + "/upgd_nl."; #ifdef Q_OS_WIN upgradeScript += "bat"; @@ -665,9 +676,9 @@ void COperationDialog::extractBnpClient() QProcess process; QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); - env.insert("RYZOM_CLIENT", QDir::toNativeSeparators(destinationDirectory + "/" + server.clientFilename)); - env.insert("UNPACKPATH", QDir::toNativeSeparators(destinationDirectory + "/unpack")); - env.insert("ROOTPATH", QDir::toNativeSeparators(destinationDirectory)); + env.insert("RYZOM_CLIENT", QDir::toNativeSeparators(directory + "/" + executable)); + env.insert("UNPACKPATH", QDir::toNativeSeparators(directory + "/unpack")); + env.insert("ROOTPATH", QDir::toNativeSeparators(directory)); env.insert("STARTUPPATH", ""); process.setProcessEnvironment(env); @@ -694,7 +705,6 @@ void COperationDialog::extractBnpClient() } } - emit done(); } void COperationDialog::copyInstaller() diff --git a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.h b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.h index d2172815c..52acee110 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.h +++ b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.h @@ -132,6 +132,7 @@ protected: virtual bool operationShouldStop(); void renamePartFile(); + void launchUpgradeScript(const QString &directory, const QString &executable); // hacks to prevent an infinite loop void acceptDelayed();