diff options
Diffstat (limited to 'src/libs/installer/installiconsoperation.cpp')
-rw-r--r-- | src/libs/installer/installiconsoperation.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/libs/installer/installiconsoperation.cpp b/src/libs/installer/installiconsoperation.cpp index de1ddcc4f..b21634cd7 100644 --- a/src/libs/installer/installiconsoperation.cpp +++ b/src/libs/installer/installiconsoperation.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2023 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -32,6 +32,7 @@ #include "globals.h" #include "adminauthorization.h" #include "remoteclient.h" +#include "errors.h" #include <QDebug> #include <QDir> @@ -53,10 +54,10 @@ QString InstallIconsOperation::targetDirectory() QStringList XDG_DATA_HOME = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME")) .split(QLatin1Char(':'), - QString::SkipEmptyParts); + Qt::SkipEmptyParts); XDG_DATA_HOME.push_back(QDir::home().absoluteFilePath(QLatin1String(".local/share"))); // default user-specific path - if (AdminAuthorization::hasAdminRights() || RemoteClient::instance().isActive()) + if (packageManager() && packageManager()->hasAdminRights()) XDG_DATA_HOME.push_front(QLatin1String("/usr/local/share")); // default system-wide path QString directory; @@ -158,7 +159,16 @@ bool InstallIconsOperation::performOperation() if (QFile(target).exists()) { // first backup... - const QString backup = generateTemporaryFileName(target); + QString backup; + try { + backup = generateTemporaryFileName(target); + } catch (const QInstaller::Error &e) { + setError(UserDefinedError); + setErrorString(tr("Cannot prepare to backup file \"%1\": %2") + .arg(QDir::toNativeSeparators(target), e.message())); + undoOperation(); + return false; + } QFile bf(target); if (!bf.copy(backup)) { setError(UserDefinedError); |