aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/exeengine.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-06-24 12:28:27 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-06-27 11:14:21 -0500
commiteb53852d7ae6838e54525eb57df1d8ce8a722f9b (patch)
tree7fa05bd6df1bce2e20d87c5fbacc1c658dc000aa /src/burn/engine/exeengine.cpp
parent6ee12a64cb75097a238e60d4fd0ea542e8312214 (diff)
downloadwix-eb53852d7ae6838e54525eb57df1d8ce8a722f9b.tar.gz
wix-eb53852d7ae6838e54525eb57df1d8ce8a722f9b.tar.bz2
wix-eb53852d7ae6838e54525eb57df1d8ce8a722f9b.zip
Add longPathAware to Burn manifest to support long paths.
Fixes 3455
Diffstat (limited to 'src/burn/engine/exeengine.cpp')
-rw-r--r--src/burn/engine/exeengine.cpp7
1 files changed, 7 insertions, 0 deletions
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(
695 BOOL fDelayedCancel = FALSE; 695 BOOL fDelayedCancel = FALSE;
696 BOOL fFireAndForget = BURN_PACKAGE_TYPE_EXE == pPackage->type && pPackage->Exe.fFireAndForget; 696 BOOL fFireAndForget = BURN_PACKAGE_TYPE_EXE == pPackage->type && pPackage->Exe.fFireAndForget;
697 BOOL fInheritHandles = BURN_PACKAGE_TYPE_BUNDLE == pPackage->type; 697 BOOL fInheritHandles = BURN_PACKAGE_TYPE_BUNDLE == pPackage->type;
698 size_t cchCachedDirectory = 0;
698 699
699 // Always add user supplied arguments last. 700 // Always add user supplied arguments last.
700 if (wzUserArgs) 701 if (wzUserArgs)
@@ -703,6 +704,12 @@ extern "C" HRESULT ExeEngineRunProcess(
703 ExitOnFailure(hr, "Failed to append user args."); 704 ExitOnFailure(hr, "Failed to append user args.");
704 } 705 }
705 706
707 // CreateProcessW has undocumented MAX_PATH restriction for lpCurrentDirectory even when long path support is enabled.
708 if (wzCachedDirectory && FAILED(::StringCchLengthW(wzCachedDirectory, MAX_PATH - 1, &cchCachedDirectory)))
709 {
710 wzCachedDirectory = NULL;
711 }
712
706 // Make the cache location of the executable the current directory to help those executables 713 // Make the cache location of the executable the current directory to help those executables
707 // that expect stuff to be relative to them. 714 // that expect stuff to be relative to them.
708 si.cb = sizeof(si); 715 si.cb = sizeof(si);