diff --git a/client/mainwindow.cpp b/client/mainwindow.cpp index 1afc8d8..a3a9aa7 100644 --- a/client/mainwindow.cpp +++ b/client/mainwindow.cpp @@ -345,6 +345,11 @@ void MainWindow::onLocalServerError(QProcess::ProcessError error) "error 0x%1, exit code 0x%2.

") .arg(error, 0, 16) .arg(localServer_->exitCode(), 0, 16); + if (error == QProcess::FailedToStart) + errorStr.append(tr("

The drone program does not exist at %1 or you " + "don't have sufficient permissions to execute it." + "

") + .arg(QCoreApplication::applicationDirPath())); #ifdef Q_OS_WIN32 if (localServer_->exitCode() == STATUS_DLL_NOT_FOUND) errorStr.append(tr("

This is most likely because Packet.dll " @@ -353,14 +358,17 @@ void MainWindow::onLocalServerError(QProcess::ProcessError error) "installed.

")); #endif msgBox.setText(errorStr); - msgBox.setInformativeText(tr("Run drone directly for more information.")); + msgBox.setInformativeText(tr("Try running drone directly.")); msgBox.exec(); + QString archUrl("https://userguide.ostinato.org/Architecture.html"); QMessageBox::information(this, QString(), tr("

If you have remote drone agents running, you can still add " "and connect to them.

" "

If you don't want to start the local drone agent at startup, " - "provide the -s option to Ostinato on the command line

")); + "provide the -s option to Ostinato on the command line.

" + "

Learn about Ostinato's Controller-Agent " + "architecture

").arg(archUrl)); } void MainWindow::onNewVersion(QString newVersion)