Mercurial > trustbridge
changeset 810:ee75e236843c
Use sudo to install software in case of is_admin
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Tue, 15 Jul 2014 16:31:24 +0200 |
parents | 4b702f6cf9b6 |
children | a3e9d1767bad |
files | ui/mainwindow.cpp |
diffstat | 1 files changed, 20 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/ui/mainwindow.cpp Tue Jul 15 16:30:55 2014 +0200 +++ b/ui/mainwindow.cpp Tue Jul 15 16:31:24 2014 +0200 @@ -297,15 +297,30 @@ } #else /* WIN32 */ QStringList parameters; - parameters << "/S" << "/UPDATE=1" - << QString::fromLatin1("/D=%1").arg(installDir.path()); + parameters << "--prefix" << installDir.path(); + bool sudo_started = false; + bool use_sudo = is_admin(); + if (use_sudo) { + QStringList sudoPrograms; + sudoPrograms << "gksudo" << "kdesudo" << "sudo"; + QStringList sudoParams; + sudoParams << filePath + " " + parameters.join(" "); - qDebug() << "Starting process " << filePath << " args: " << parameters; - - if (!QProcess::startDetached(filePath, parameters)) { + foreach (const QString &sProg, sudoPrograms) { + qDebug() << "Starting process " << sProg <<" params: " << sudoParams; + if (!QProcess::startDetached(sProg, sudoParams)) { + continue; + } else { + sudo_started = true; + break; + } + } + } + if (!sudo_started && !QProcess::startDetached(filePath, parameters)) { qDebug() << "Failed to start process."; return; } + #endif /* Installer process should now be running. We exit */