[win] updatesvc: debug msi package launch

This commit is contained in:
SimplestStudio
2024-09-07 09:39:08 +03:00
parent ccb93d02b4
commit aa10fe7cc1
2 changed files with 11 additions and 4 deletions

View File

@ -906,13 +906,20 @@ void CSvcManager::startInstallPackage(const tstring &advArgs)
NS_Logger::WriteLog(_TR("Update cancelled. The file signature is missing:") + _T(" ") + m_packageData->fileName, true); NS_Logger::WriteLog(_TR("Update cancelled. The file signature is missing:") + _T(" ") + m_packageData->fileName, true);
return; return;
} }
tstring args = m_packageData->packageArgs; tstring args;
if (m_packageData->fileType == _T("msi")) {
args = _T("/i \"") + NS_File::toNativeSeparators(m_packageData->fileName) + _T("\"");
if (!m_packageData->packageArgs.empty())
args += _T(" ") + m_packageData->packageArgs;
} else {
args = m_packageData->packageArgs;
}
if (!advArgs.empty()) { if (!advArgs.empty()) {
if (!args.empty()) if (!args.empty())
args += _T(" "); args += _T(" ");
args += advArgs; args += advArgs;
} }
if (!NS_File::runProcess(m_packageData->fileName, args)) if (!NS_File::runProcess(m_packageData->fileType == _T("msi") ? _T("msiexec.exe") : m_packageData->fileName, args))
NS_Logger::WriteLog(_TR("An error occurred while start install updates!"), true); NS_Logger::WriteLog(_TR("An error occurred while start install updates!"), true);
} }
#endif #endif

View File

@ -301,7 +301,7 @@ namespace NS_File
si.cb = sizeof(STARTUPINFO); si.cb = sizeof(STARTUPINFO);
PROCESS_INFORMATION pi; PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(pi)); ZeroMemory(&pi, sizeof(pi));
if (CreateProcess(fileName.c_str(), &_args[0], if (CreateProcess(NULL, &_args[0],
NULL, NULL, FALSE, CREATE_UNICODE_ENVIRONMENT, NULL, NULL, FALSE, CREATE_UNICODE_ENVIRONMENT,
NULL, NULL, &si, &pi)) NULL, NULL, &si, &pi))
{ {
@ -340,7 +340,7 @@ namespace NS_File
si.cb = sizeof(STARTUPINFO); si.cb = sizeof(STARTUPINFO);
si.lpDesktop = const_cast<LPWSTR>(L"Winsta0\\Default"); si.lpDesktop = const_cast<LPWSTR>(L"Winsta0\\Default");
PROCESS_INFORMATION pi; PROCESS_INFORMATION pi;
if (CreateProcessAsUser(hTokenDup, fileName.c_str(), if (CreateProcessAsUser(hTokenDup, NULL,
&_args[0], &_args[0],
NULL, NULL, FALSE, NULL, NULL, FALSE,
CREATE_UNICODE_ENVIRONMENT, CREATE_UNICODE_ENVIRONMENT,