From 9cf41b84ab37b9385348066a46b8023b59f71e0b Mon Sep 17 00:00:00 2001 From: Qv2ray-Bot <59914293+Qv2ray-Bot@users.noreply.github.com> Date: Fri, 24 Jan 2020 14:55:21 +0800 Subject: [PATCH] fix: fixed windows startup issue --- Build.Counter | 2 +- src/components/QvKernelInteractions.cpp | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Build.Counter b/Build.Counter index 35e6a9d5..1877dcdd 100644 --- a/Build.Counter +++ b/Build.Counter @@ -1 +1 @@ -3088 +3095 diff --git a/src/components/QvKernelInteractions.cpp b/src/components/QvKernelInteractions.cpp index aec86ec2..bf662281 100644 --- a/src/components/QvKernelInteractions.cpp +++ b/src/components/QvKernelInteractions.cpp @@ -66,7 +66,16 @@ namespace Qv2ray // Check if V2ray core returns a version number correctly. QProcess proc; - proc.start(vCorePath + " -version"); +#ifdef Q_OS_WIN32 + // nativeArguments are required for Windows platform, without a reason... + proc.setProcessChannelMode(QProcess::MergedChannels); + proc.setProgram(vCorePath); + proc.setNativeArguments("--version"); + proc.start(); +#else + proc.start(vCorePath + " --version"); +#endif + proc.waitForStarted(); proc.waitForFinished(); auto exitCode = proc.exitCode(); @@ -76,8 +85,14 @@ namespace Qv2ray return false; } - QString output = QString(proc.readAllStandardOutput()); + QString output = proc.readAllStandardOutput(); LOG(MODULE_VCORE, "V2ray output: " + SplitLines(output).join(";")) + + if (SplitLines(output).isEmpty()) { + *message = tr("V2ray core returns empty string."); + return false; + } + *message = SplitLines(output).first(); return true; } @@ -118,7 +133,7 @@ namespace Qv2ray V2rayKernelInstance::V2rayKernelInstance() { - vProcess = new QProcess();; + vProcess = new QProcess(); connect(vProcess, &QProcess::readyReadStandardOutput, this, [this]() { emit onProcessOutputReadyRead(vProcess->readAllStandardOutput().trimmed()); });