mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-22 03:46:53 +02:00
Remove leftover update workspace folders on launcher startup (#1782)
* Remove leftover update workspace folders on launcher startup Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Skip recently active update workspaces during cleanup Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Keep update workspaces for an hour before cleanup so Windows downloads are not removed --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: nmzik <Nmzik@mail.ru>
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
#include <QAbstractButton>
|
||||
#include <QApplication>
|
||||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QDir>
|
||||
@@ -96,7 +97,27 @@ bool UpdateChecker::IsSupported() {
|
||||
|
||||
void UpdateChecker::ShowPreviousResult(QWidget* parent) {
|
||||
const auto directory = InstallDirectory();
|
||||
QFile result(QDir(directory).filePath(QStringLiteral(".kyty-update-result")));
|
||||
if (!directory.isEmpty()) {
|
||||
// The helper cannot delete its own executable on Windows, so its workspace is
|
||||
// removed by the next launcher start.
|
||||
const QDir install(directory);
|
||||
for (const auto& name:
|
||||
install.entryList({QStringLiteral(".kyty-update-??????")},
|
||||
QDir::Dirs | QDir::Hidden | QDir::NoSymLinks | QDir::NoDotAndDotDot)) {
|
||||
QDir workspace(install.filePath(name));
|
||||
QDateTime newest = QFileInfo(workspace.path()).lastModified();
|
||||
for (const auto& entry: workspace.entryInfoList(QDir::Files | QDir::Dirs | QDir::Hidden |
|
||||
QDir::NoDotAndDotDot)) {
|
||||
newest = qMax(newest, entry.lastModified());
|
||||
}
|
||||
// A workspace touched recently may belong to a running download or helper. Windows
|
||||
// lists a file still being downloaded with a stale time, so allow a generous margin.
|
||||
if (newest.secsTo(QDateTime::currentDateTime()) > 60 * 60) {
|
||||
workspace.removeRecursively();
|
||||
}
|
||||
}
|
||||
}
|
||||
QFile result(QDir(directory).filePath(QStringLiteral(".kyty-update-result")));
|
||||
if (directory.isEmpty() || !result.open(QIODevice::ReadOnly)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user