From b20a77911c6a2b096f021639e0daadae7430091c Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Tue, 15 Dec 2020 20:03:48 -0600 Subject: WIXFEAT:6195 - Don't change current directory for ExePackage. --- src/engine/exeengine.cpp | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/engine/exeengine.cpp b/src/engine/exeengine.cpp index 8d6cd7fd..d3ec7676 100644 --- a/src/engine/exeengine.cpp +++ b/src/engine/exeengine.cpp @@ -377,8 +377,6 @@ extern "C" HRESULT ExeEngineExecutePackage( ) { HRESULT hr = S_OK; - WCHAR wzCurrentDirectory[MAX_PATH] = { }; - BOOL fChangedCurrentDirectory = FALSE; int nResult = IDNOACTION; LPCWSTR wzArguments = NULL; LPWSTR sczArguments = NULL; @@ -535,13 +533,8 @@ extern "C" HRESULT ExeEngineExecutePackage( { // Make the cache location of the executable the current directory to help those executables // that expect stuff to be relative to them. - if (::GetCurrentDirectoryW(countof(wzCurrentDirectory), wzCurrentDirectory)) - { - fChangedCurrentDirectory = ::SetCurrentDirectoryW(sczCachedDirectory); - } - - si.cb = sizeof(si); // TODO: hookup the stdin/stdout/stderr pipes for logging purposes? - if (!::CreateProcessW(sczExecutablePath, sczCommand, NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) + si.cb = sizeof(si); + if (!::CreateProcessW(sczExecutablePath, sczCommand, NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, sczCachedDirectory, &si, &pi)) { ExitWithLastError(hr, "Failed to CreateProcess on path: %ls", sczExecutablePath); } @@ -573,11 +566,6 @@ extern "C" HRESULT ExeEngineExecutePackage( ExitOnRootFailure(hr, "Process returned error: 0x%x", dwExitCode); LExit: - if (fChangedCurrentDirectory) - { - ::SetCurrentDirectoryW(wzCurrentDirectory); - } - StrSecureZeroFreeString(sczArguments); StrSecureZeroFreeString(sczArgumentsFormatted); ReleaseStr(sczArgumentsObfuscated); -- cgit v1.2.3-55-g6feb