diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-06-24 12:28:27 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-06-27 11:14:21 -0500 |
commit | eb53852d7ae6838e54525eb57df1d8ce8a722f9b (patch) | |
tree | 7fa05bd6df1bce2e20d87c5fbacc1c658dc000aa /src/burn/engine/exeengine.cpp | |
parent | 6ee12a64cb75097a238e60d4fd0ea542e8312214 (diff) | |
download | wix-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.cpp | 7 |
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); |