diff --git a/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp b/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp index de8a0becc65..1d81e6c5079 100644 --- a/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp +++ b/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp @@ -247,7 +247,10 @@ QString QbsProfileManager::runQbsConfig(QbsConfigOp op, const QString &key, cons args << "--unset" << key; break; } - qbsConfig.start(QbsSettings::qbsExecutableFilePath().toString(), args); + const Utils::FilePath qbsExe = QbsSettings::qbsExecutableFilePath(); + if (qbsExe.isEmpty() || !qbsExe.exists()) + return {}; + qbsConfig.start(qbsExe.toString(), args); if (!qbsConfig.waitForStarted(3000) || !qbsConfig.waitForFinished(5000)) { Core::MessageManager::write(tr("Failed run qbs config: %1").arg(qbsConfig.errorString())); } else if (qbsConfig.exitCode() != 0) { diff --git a/src/plugins/qbsprojectmanager/qbssession.cpp b/src/plugins/qbsprojectmanager/qbssession.cpp index 96606ebb709..dffbdf6b0cb 100644 --- a/src/plugins/qbsprojectmanager/qbssession.cpp +++ b/src/plugins/qbsprojectmanager/qbssession.cpp @@ -219,7 +219,12 @@ void QbsSession::initialize() }); connect(d->packetReader, &PacketReader::packetReceived, this, &QbsSession::handlePacket); d->state = State::Initializing; - d->qbsProcess->start(QbsSettings::qbsExecutableFilePath().toString(), {"session"}); + const FilePath qbsExe = QbsSettings::qbsExecutableFilePath(); + if (qbsExe.isEmpty() || !qbsExe.exists()) { + QTimer::singleShot(0, this, [this] { setError(Error::QbsFailedToStart); }); + return; + } + d->qbsProcess->start(qbsExe.toString(), {"session"}); } void QbsSession::sendQuitPacket() diff --git a/src/plugins/qbsprojectmanager/qbssettings.cpp b/src/plugins/qbsprojectmanager/qbssettings.cpp index 649908c2219..5e3e3f0b885 100644 --- a/src/plugins/qbsprojectmanager/qbssettings.cpp +++ b/src/plugins/qbsprojectmanager/qbssettings.cpp @@ -159,8 +159,11 @@ public: private: static QString getQbsVersion() { + const FilePath qbsExe = QbsSettings::qbsExecutableFilePath(); + if (qbsExe.isEmpty() || !qbsExe.exists()) + return tr("Failed to retrieve version."); QProcess qbsProc; - qbsProc.start(QbsSettings::qbsExecutableFilePath().toString(), {"--version"}); + qbsProc.start(qbsExe.toString(), {"--version"}); if (!qbsProc.waitForStarted(3000) || !qbsProc.waitForFinished(5000) || qbsProc.exitCode() != 0) { return tr("Failed to retrieve version."); diff --git a/src/plugins/qbsprojectmanager/qbssettings.h b/src/plugins/qbsprojectmanager/qbssettings.h index 024416db155..f5e2bd343c3 100644 --- a/src/plugins/qbsprojectmanager/qbssettings.h +++ b/src/plugins/qbsprojectmanager/qbssettings.h @@ -48,6 +48,7 @@ public: static QbsSettings &instance(); static Utils::FilePath qbsExecutableFilePath(); + static bool hasQbsExecutable(); static QString defaultInstallDirTemplate(); static bool useCreatorSettingsDirForQbs(); static QString qbsSettingsBaseDir();