diff --git a/libdiscover/backends/PackageKitBackend/PKTransaction.cpp b/libdiscover/backends/PackageKitBackend/PKTransaction.cpp --- a/libdiscover/backends/PackageKitBackend/PKTransaction.cpp +++ b/libdiscover/backends/PackageKitBackend/PKTransaction.cpp @@ -137,14 +137,15 @@ { Q_UNUSED(runtime) const bool cancel = !m_proceedFunctions.isEmpty() || exit == PackageKit::Transaction::ExitCancelled; + const bool failed = exit == PackageKit::Transaction::ExitFailed; const bool simulate = m_trans->transactionFlags() & PackageKit::Transaction::TransactionFlagSimulate; disconnect(m_trans, nullptr, this, nullptr); m_trans = nullptr; const auto backend = qobject_cast(resource()->backend()); - if (!cancel && simulate) { + if (!cancel && !failed && simulate) { auto packagesToRemove = m_newPackageStates.value(PackageKit::Transaction::InfoRemoving); QMutableListIterator i(packagesToRemove); QSet removedResources; @@ -175,7 +176,10 @@ } this->submitResolve(); - setStatus(Transaction::CancelledStatus); + if (failed) + setStatus(Transaction::DoneWithErrorStatus); + else + setStatus(Transaction::CancelledStatus); } void PKTransaction::processProceedFunction()