diff options
author | kh1 <karsten.heimrich@digia.com> | 2014-11-07 12:27:00 +0100 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@theqtcompany.com> | 2014-11-12 21:22:51 +0100 |
commit | b67c842ba8bba3ba908fffe9546ad364693acb2c (patch) | |
tree | eccd8131944c23bbc91a29ccb05ef13e7028fe65 /src/sdk/installerbase.cpp | |
parent | b1b9a3df473b3a27629be91cab0058b0e140d06d (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.cpp | 21 |
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()); |