From 2bc6ae97568f9c9e522c4a64988cb325eb4d25ec Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 11 Oct 2024 19:53:28 +0100 Subject: [PATCH 1/2] Prevent directories from being removed on instance update Signed-off-by: TheKodeToad --- launcher/InstanceCreationTask.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/launcher/InstanceCreationTask.cpp b/launcher/InstanceCreationTask.cpp index 9c17dfc9f..d89a00d6c 100644 --- a/launcher/InstanceCreationTask.cpp +++ b/launcher/InstanceCreationTask.cpp @@ -42,11 +42,11 @@ void InstanceCreationTask::executeTask() setStatus(tr("Removing old conflicting files...")); qDebug() << "Removing old files"; - for (auto path : m_files_to_remove) { + for (const QString& path : m_files_to_remove) { if (!QFile::exists(path)) continue; qDebug() << "Removing" << path; - if (!FS::deletePath(path)) { + if (!QFile::remove(path)) { qCritical() << "Couldn't remove the old conflicting files."; emitFailed(tr("Failed to remove old conflicting files.")); return; @@ -55,5 +55,4 @@ void InstanceCreationTask::executeTask() } emitSucceeded(); - return; } From 72cfad8fee7f81d85df7389ab9e32294d13a4707 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 11 Oct 2024 21:35:13 +0100 Subject: [PATCH 2/2] Continue deleting before failing Signed-off-by: TheKodeToad --- launcher/InstanceCreationTask.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/launcher/InstanceCreationTask.cpp b/launcher/InstanceCreationTask.cpp index d89a00d6c..3e7b3142f 100644 --- a/launcher/InstanceCreationTask.cpp +++ b/launcher/InstanceCreationTask.cpp @@ -38,6 +38,8 @@ void InstanceCreationTask::executeTask() // files scheduled to, and we'd better not let the user abort in the middle of it, since it'd // put the instance in an invalid state. if (shouldOverride()) { + bool deleteFailed = false; + setAbortable(false); setStatus(tr("Removing old conflicting files...")); qDebug() << "Removing old files"; @@ -45,13 +47,19 @@ void InstanceCreationTask::executeTask() for (const QString& path : m_files_to_remove) { if (!QFile::exists(path)) continue; + qDebug() << "Removing" << path; + if (!QFile::remove(path)) { - qCritical() << "Couldn't remove the old conflicting files."; - emitFailed(tr("Failed to remove old conflicting files.")); - return; + qCritical() << "Could not remove" << path; + deleteFailed = true; } } + + if (deleteFailed) { + emitFailed(tr("Failed to remove old conflicting files.")); + return; + } } emitSucceeded();