Changed: Launch upgrade script from 7z or ZIP archives if present, see #279

This commit is contained in:
kervala 2016-09-20 17:40:14 +02:00
parent c98bf6f44f
commit ba8357bb61
2 changed files with 17 additions and 6 deletions

View file

@ -553,9 +553,11 @@ void COperationDialog::extractDownloadedClient()
m_currentOperation = tr("Extract client files required by server %1").arg(server.name); m_currentOperation = tr("Extract client files required by server %1").arg(server.name);
m_currentOperationProgressFormat = tr("Extracting %1..."); m_currentOperationProgressFormat = tr("Extracting %1...");
QString destinationDirectory = server.getDirectory();
CFilesExtractor extractor(this); CFilesExtractor extractor(this);
extractor.setSourceFile(config->getInstallationDirectory() + "/" + config->expandVariables(server.clientDownloadFilename)); extractor.setSourceFile(config->getInstallationDirectory() + "/" + config->expandVariables(server.clientDownloadFilename));
extractor.setDestinationDirectory(server.getDirectory()); extractor.setDestinationDirectory(destinationDirectory);
if (extractor.exec()) if (extractor.exec())
{ {
@ -564,6 +566,8 @@ void COperationDialog::extractDownloadedClient()
{ {
} }
launchUpgradeScript(destinationDirectory, server.clientFilename);
emit done(); emit done();
} }
@ -652,7 +656,14 @@ void COperationDialog::extractBnpClient()
extractor.setDestinationDirectory(destinationDirectory); extractor.setDestinationDirectory(destinationDirectory);
extractor.exec(); 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 #ifdef Q_OS_WIN
upgradeScript += "bat"; upgradeScript += "bat";
@ -665,9 +676,9 @@ void COperationDialog::extractBnpClient()
QProcess process; QProcess process;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("RYZOM_CLIENT", QDir::toNativeSeparators(destinationDirectory + "/" + server.clientFilename)); env.insert("RYZOM_CLIENT", QDir::toNativeSeparators(directory + "/" + executable));
env.insert("UNPACKPATH", QDir::toNativeSeparators(destinationDirectory + "/unpack")); env.insert("UNPACKPATH", QDir::toNativeSeparators(directory + "/unpack"));
env.insert("ROOTPATH", QDir::toNativeSeparators(destinationDirectory)); env.insert("ROOTPATH", QDir::toNativeSeparators(directory));
env.insert("STARTUPPATH", ""); env.insert("STARTUPPATH", "");
process.setProcessEnvironment(env); process.setProcessEnvironment(env);
@ -694,7 +705,6 @@ void COperationDialog::extractBnpClient()
} }
} }
emit done();
} }
void COperationDialog::copyInstaller() void COperationDialog::copyInstaller()

View file

@ -132,6 +132,7 @@ protected:
virtual bool operationShouldStop(); virtual bool operationShouldStop();
void renamePartFile(); void renamePartFile();
void launchUpgradeScript(const QString &directory, const QString &executable);
// hacks to prevent an infinite loop // hacks to prevent an infinite loop
void acceptDelayed(); void acceptDelayed();