summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/installer/metadatajob.cpp1
-rw-r--r--src/libs/installer/metadatajob_p.h10
2 files changed, 8 insertions, 3 deletions
diff --git a/src/libs/installer/metadatajob.cpp b/src/libs/installer/metadatajob.cpp
index 659648e1a..4bb2b99de 100644
--- a/src/libs/installer/metadatajob.cpp
+++ b/src/libs/installer/metadatajob.cpp
@@ -620,6 +620,7 @@ void MetadataJob::metadataTaskFinished()
}
UnzipArchiveTask *task = new UnzipArchiveTask(result.target(),
item.value(TaskRole::UserRole).toString());
+ task->setRemoveArchive(true);
QFutureWatcher<void> *watcher = new QFutureWatcher<void>();
m_unzipTasks.insert(watcher, qobject_cast<QObject*> (task));
diff --git a/src/libs/installer/metadatajob_p.h b/src/libs/installer/metadatajob_p.h
index 2456a971e..ef18b2982 100644
--- a/src/libs/installer/metadatajob_p.h
+++ b/src/libs/installer/metadatajob_p.h
@@ -62,10 +62,12 @@ class UnzipArchiveTask : public AbstractTask<void>
public:
UnzipArchiveTask(const QString &arcive, const QString &target)
- : m_archive(arcive), m_targetDir(target)
+ : m_archive(arcive), m_targetDir(target), m_removeArchive(false)
{}
QString target() { return m_targetDir; }
QString archive() { return m_archive; }
+ void setRemoveArchive(bool remove) { m_removeArchive = remove; }
+
void doTask(QFutureInterface<void> &fi) override
{
fi.reportStarted();
@@ -87,9 +89,10 @@ public:
fi.reportException(UnzipArchiveException(MetadataJob::tr("Error while extracting "
"archive \"%1\": %2").arg(QDir::toNativeSeparators(m_archive), archive->errorString())));
}
- // Don't need the archive anymore
+
archive->close();
- QFile::remove(m_archive);
+ if (m_removeArchive)
+ QFile::remove(m_archive);
fi.reportFinished();
}
@@ -97,6 +100,7 @@ public:
private:
QString m_archive;
QString m_targetDir;
+ bool m_removeArchive;
};
} // namespace QInstaller