# HG changeset patch # User Andre Heinecke # Date 1405434684 -7200 # Node ID ee75e236843c5ac54470ef66b204fca1057a32ce # Parent 4b702f6cf9b6a6d301800ee8f0a093d71b8b383b Use sudo to install software in case of is_admin diff -r 4b702f6cf9b6 -r ee75e236843c ui/mainwindow.cpp --- 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 */