From c816a26647ca0537709f0d15cdd550feea4de109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 28 Dec 2013 22:32:45 +0100 Subject: Set permissions for the updater binary after updating it. --- MultiMC.cpp | 7 ++++++- logic/updater/DownloadUpdateTask.cpp | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/MultiMC.cpp b/MultiMC.cpp index 110accc2..cf626fc7 100644 --- a/MultiMC.cpp +++ b/MultiMC.cpp @@ -528,7 +528,12 @@ void MultiMC::installUpdates(const QString &updateFilesDir, bool restartOnFinish QLOG_INFO() << "Running updater with command" << updaterBinary << args.join(" "); - QProcess::startDetached(updaterBinary, args); + QFile::setPermissions(updaterBinary, (QFileDevice::Permission) 0755); + if(!QProcess::startDetached(updaterBinary, args)) + { + QLOG_ERROR() << "Failed to start the updater process!"; + return; + } // Now that we've started the updater, quit MultiMC. MMC->quit(); diff --git a/logic/updater/DownloadUpdateTask.cpp b/logic/updater/DownloadUpdateTask.cpp index 0b09ad2a..9282c4d8 100644 --- a/logic/updater/DownloadUpdateTask.cpp +++ b/logic/updater/DownloadUpdateTask.cpp @@ -412,6 +412,7 @@ DownloadUpdateTask::processFileLists(NetJob *job, if (isUpdater) { download->setProperty("finalPath", entry.path); + download->setProperty("finalPerms", entry.mode); connect(download.get(), &MD5EtagDownload::succeeded, this, &DownloadUpdateTask::directDeployFile); } } @@ -549,11 +550,16 @@ void DownloadUpdateTask::directDeployFile(const int index) { Md5EtagDownloadPtr download = std::dynamic_pointer_cast(m_filesNetJob->operator[](index)); const QString finalPath = download->property("finalPath").toString(); + bool ok = true; + int finalMode = download->property("finalPerms").toInt(&ok); + if(!ok) + finalMode = 0755; QLOG_INFO() << "Replacing" << finalPath << "with" << download->m_output_file.fileName(); if (QFile::remove(finalPath)) { if (download->m_output_file.copy(finalPath)) { + QFile::setPermissions(finalPath, (QFileDevice::Permission) finalMode); return; } } -- cgit v1.2.3