summaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2012-10-25 12:41:33 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2012-10-25 17:45:59 +0200
commit24e2c2d9c7d78c00c3c0743acd0ca92c44ff209f (patch)
tree8d03578167eb8c30634cce0f42569bf170bfc2ad /src/libs
parent597118b2a2736e7c5696025b6ac89c576ca31268 (diff)
If an operation fails try again with admin rights.
Some operations, e.g. writing shortcuts, might fail cause per se they dont need admin rights. On windows we could install for all users requiring the operation than to write to an system folder with admin rights. Take that into account. Change-Id: I4b265dbc83e75378bc35a7ac5aa617d64af3e5c1 Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index a805c439e..994c5bbeb 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -1756,6 +1756,11 @@ void PackageManagerCorePrivate::installComponent(Component *component, double pr
bool ignoreError = false;
bool ok = performOperationThreaded(operation);
+ if (!ok) {
+ becameAdmin = m_core->gainAdminRights();
+ qDebug() << operation->name() << "as admin:" << becameAdmin;
+ ok = performOperationThreaded(operation);
+ }
while (!ok && !ignoreError && m_core->status() != PackageManagerCore::Canceled) {
qDebug() << QString::fromLatin1("Operation '%1' with arguments: '%2' failed: %3")
.arg(operation->name(), operation->arguments().join(QLatin1String("; ")),