diff options
-rw-r--r-- | src/libs/installer/metadatajob.cpp | 1 | ||||
-rw-r--r-- | src/libs/installer/metadatajob_p.h | 10 |
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 |