diff --git a/win-linux/extras/update-daemon/src/classes/csvcmanager.cpp b/win-linux/extras/update-daemon/src/classes/csvcmanager.cpp index 8c9632f02..e871b10d8 100644 --- a/win-linux/extras/update-daemon/src/classes/csvcmanager.cpp +++ b/win-linux/extras/update-daemon/src/classes/csvcmanager.cpp @@ -175,11 +175,15 @@ auto restartService()->void return; } + wstring args = NS_Utils::cmdArgsAsString(); + if (!args.empty()) + args.insert(0, 1, L' '); + std::list batch = { L"@chcp 65001>nul", L"@echo off", - wstring(L"NET STOP ") + L"\"" + TEXT(VER_PRODUCTNAME_STR) + L"\"", - wstring(L"NET START ") + L"\"" + TEXT(VER_PRODUCTNAME_STR) + L"\"", + wstring(L"SC STOP ") + L"\"" + TEXT(VER_PRODUCTNAME_STR) + L"\"", + wstring(L"SC START ") + L"\"" + TEXT(VER_PRODUCTNAME_STR) + L"\"" + args, L"del /F /Q \"%~dp0~updatesvc.exe\"", L"exit" }; diff --git a/win-linux/extras/update-daemon/src/platform_win/utils.cpp b/win-linux/extras/update-daemon/src/platform_win/utils.cpp index 493740b22..9083e1b5b 100644 --- a/win-linux/extras/update-daemon/src/platform_win/utils.cpp +++ b/win-linux/extras/update-daemon/src/platform_win/utils.cpp @@ -153,6 +153,17 @@ namespace NS_Utils return L""; } + wstring cmdArgsAsString() + { + if (cmd_args.empty()) + return L""; + wstring args = cmd_args[0]; + for (size_t i = 1; i < cmd_args.size(); ++i) { + args += L" " + cmd_args[i]; + } + return args; + } + wstring GetLastErrorAsString() { DWORD errID = ::GetLastError(); diff --git a/win-linux/extras/update-daemon/src/platform_win/utils.h b/win-linux/extras/update-daemon/src/platform_win/utils.h index 585dc4f80..ab6448e7b 100644 --- a/win-linux/extras/update-daemon/src/platform_win/utils.h +++ b/win-linux/extras/update-daemon/src/platform_win/utils.h @@ -53,6 +53,7 @@ bool isRunAsApp(); void parseCmdArgs(int argc, wchar_t *argv[]); bool cmdArgContains(const wstring ¶m); wstring cmdArgValue(const wstring ¶m); +wstring cmdArgsAsString(); wstring GetLastErrorAsString(); int ShowMessage(wstring str, bool showError = false); wstring GetAppLanguage();