summaryrefslogtreecommitdiffstats
path: root/logic/updater/DownloadUpdateTask.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'logic/updater/DownloadUpdateTask.cpp')
-rw-r--r--logic/updater/DownloadUpdateTask.cpp6
1 files changed, 6 insertions, 0 deletions
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<MD5EtagDownload>(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;
}
}