summaryrefslogtreecommitdiffstats
path: root/src/sdk/installerbase.cpp
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2014-11-07 12:27:00 +0100
committerKarsten Heimrich <karsten.heimrich@theqtcompany.com>2014-11-12 21:22:51 +0100
commitb67c842ba8bba3ba908fffe9546ad364693acb2c (patch)
treeeccd8131944c23bbc91a29ccb05ef13e7028fe65 /src/sdk/installerbase.cpp
parentb1b9a3df473b3a27629be91cab0058b0e140d06d (diff)
Make sure we do not fail if we can't create the lock file.
If we can't lock the file (possible missing privileges to create and lock it), we now check the running processes before we fail. Task-number: QTIFW-566 Change-Id: I821ccf8c37d6a235df49e060c59a0283bb91261c Reviewed-by: Takayuki ORITO Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com> Reviewed-by: Niels Weber <niels.weber@digia.com>
Diffstat (limited to 'src/sdk/installerbase.cpp')
-rw-r--r--src/sdk/installerbase.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/sdk/installerbase.cpp b/src/sdk/installerbase.cpp
index 9d3cd8885..9df36b5a7 100644
--- a/src/sdk/installerbase.cpp
+++ b/src/sdk/installerbase.cpp
@@ -71,14 +71,19 @@ InstallerBase::~InstallerBase()
int InstallerBase::run()
{
- KDRunOnceChecker runCheck(QLatin1String("lockmyApp1234865.lock"));
- if (runCheck.isRunning(KDRunOnceChecker::ConditionFlag::ProcessList)
- || runCheck.isRunning(KDRunOnceChecker::ConditionFlag::Lockfile)) {
- QInstaller::MessageBoxHandler::information(0, QLatin1String("AlreadyRunning"),
- QString::fromLatin1("Waiting for %1").arg(qAppName()),
- QString::fromLatin1("Another %1 instance is already running. Wait "
- "until it finishes, close it, or restart your system.").arg(qAppName()));
- return EXIT_FAILURE;
+ KDRunOnceChecker runCheck(qApp->applicationDirPath() + QLatin1String("/lockmyApp1234865.lock"));
+ if (runCheck.isRunning(KDRunOnceChecker::ConditionFlag::Lockfile)) {
+ // It is possible to install an application and thus the maintenance tool into a
+ // directory that requires elevated permission to create a lock file. Since this
+ // cannot be done without requesting credentials from the user, we silently ignore
+ // the fact that we could not create the lock file and check the running processes.
+ if (runCheck.isRunning(KDRunOnceChecker::ConditionFlag::ProcessList)) {
+ QInstaller::MessageBoxHandler::information(0, QLatin1String("AlreadyRunning"),
+ QString::fromLatin1("Waiting for %1").arg(qAppName()),
+ QString::fromLatin1("Another %1 instance is already running. Wait "
+ "until it finishes, close it, or restart your system.").arg(qAppName()));
+ return EXIT_FAILURE;
+ }
}
QString fileName = datFile(binaryFile());