diff options
author | Robert Griebl <robert.griebl@qt.io> | 2020-02-03 13:05:23 +0100 |
---|---|---|
committer | Robert Griebl <robert.griebl@qt.io> | 2020-02-03 16:41:37 +0100 |
commit | 1aacec3d1ccb2ccff8abdde57a95dc61d4035702 (patch) | |
tree | 2058196485d630fce600da82bfa7ff90af221cb7 | |
parent | 43e62d9eb104725407dce2ddfd7ba3d9cf58edc4 (diff) |
Output an error message when trying to remove built-in packages
Change-Id: I83fe51acffc18c68be7b8894c641d902fe922945
Fixes: AUTOSUITE-1217
Reviewed-by: Dominik Holland <dominik.holland@qt.io>
-rw-r--r-- | src/manager-lib/deinstallationtask.cpp | 7 | ||||
-rw-r--r-- | src/manager-lib/packagemanager.cpp | 6 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/manager-lib/deinstallationtask.cpp b/src/manager-lib/deinstallationtask.cpp index 4695add6..0530cf23 100644 --- a/src/manager-lib/deinstallationtask.cpp +++ b/src/manager-lib/deinstallationtask.cpp @@ -76,11 +76,16 @@ void DeinstallationTask::execute() // these have been checked in PackageManager::removePackage() already Q_ASSERT(m_package); Q_ASSERT(m_package->info()); - Q_ASSERT(m_package->info()->installationReport()); bool managerApproval = false; try { + if (m_package->isBuiltIn() && !m_package->builtInHasRemovableUpdate()) + throw Exception("There is no removable update for the built-in package %1").arg(m_package->id()); + + if (!m_package->info()->installationReport()) + throw Exception("Cannot remove package %1 due to missing installation report").arg(m_package->id()); + // we need to call those PackageManager methods in the correct thread // this will also exclusively lock the package for us QMetaObject::invokeMethod(PackageManager::instance(), [this, &managerApproval]() diff --git a/src/manager-lib/packagemanager.cpp b/src/manager-lib/packagemanager.cpp index 46eb2894..b379783e 100644 --- a/src/manager-lib/packagemanager.cpp +++ b/src/manager-lib/packagemanager.cpp @@ -1061,10 +1061,8 @@ QString PackageManager::removePackage(const QString &packageId, bool keepDocumen AM_TRACE(LogInstaller, packageId, keepDocuments) if (Package *package = fromId(packageId)) { - if (package->info()->installationReport()) { - return enqueueTask(new DeinstallationTask(package, d->installationPath, - d->documentPath, force, keepDocuments)); - } + return enqueueTask(new DeinstallationTask(package, d->installationPath, + d->documentPath, force, keepDocuments)); } return QString(); } |