diff options
author | kh1 <karsten.heimrich@digia.com> | 2012-10-25 12:41:33 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2012-10-25 17:45:59 +0200 |
commit | 24e2c2d9c7d78c00c3c0743acd0ca92c44ff209f (patch) | |
tree | 8d03578167eb8c30634cce0f42569bf170bfc2ad /src/libs/installer/packagemanagercore_p.cpp | |
parent | 597118b2a2736e7c5696025b6ac89c576ca31268 (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/installer/packagemanagercore_p.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 5 |
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("; ")), |