From eb53852d7ae6838e54525eb57df1d8ce8a722f9b Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 24 Jun 2022 12:28:27 -0500 Subject: Add longPathAware to Burn manifest to support long paths. Fixes 3455 --- src/burn/engine/exeengine.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/burn/engine/exeengine.cpp') diff --git a/src/burn/engine/exeengine.cpp b/src/burn/engine/exeengine.cpp index f7be082d..701adb74 100644 --- a/src/burn/engine/exeengine.cpp +++ b/src/burn/engine/exeengine.cpp @@ -695,6 +695,7 @@ extern "C" HRESULT ExeEngineRunProcess( BOOL fDelayedCancel = FALSE; BOOL fFireAndForget = BURN_PACKAGE_TYPE_EXE == pPackage->type && pPackage->Exe.fFireAndForget; BOOL fInheritHandles = BURN_PACKAGE_TYPE_BUNDLE == pPackage->type; + size_t cchCachedDirectory = 0; // Always add user supplied arguments last. if (wzUserArgs) @@ -703,6 +704,12 @@ extern "C" HRESULT ExeEngineRunProcess( ExitOnFailure(hr, "Failed to append user args."); } + // CreateProcessW has undocumented MAX_PATH restriction for lpCurrentDirectory even when long path support is enabled. + if (wzCachedDirectory && FAILED(::StringCchLengthW(wzCachedDirectory, MAX_PATH - 1, &cchCachedDirectory))) + { + wzCachedDirectory = NULL; + } + // Make the cache location of the executable the current directory to help those executables // that expect stuff to be relative to them. si.cb = sizeof(si); -- cgit v1.2.3-55-g6feb