aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/elevation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/elevation.cpp')
-rw-r--r--src/burn/engine/elevation.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp
index c229fa58..0e1cf0b7 100644
--- a/src/burn/engine/elevation.cpp
+++ b/src/burn/engine/elevation.cpp
@@ -852,6 +852,9 @@ extern "C" HRESULT ElevationExecuteExePackage(
852 hr = BuffWriteString(&pbData, &cbData, pExecuteAction->exePackage.sczAncestors); 852 hr = BuffWriteString(&pbData, &cbData, pExecuteAction->exePackage.sczAncestors);
853 ExitOnFailure(hr, "Failed to write the list of ancestors to the message buffer."); 853 ExitOnFailure(hr, "Failed to write the list of ancestors to the message buffer.");
854 854
855 hr = BuffWriteString(&pbData, &cbData, pExecuteAction->exePackage.sczEngineWorkingDirectory);
856 ExitOnFailure(hr, "Failed to write the custom working directory to the message buffer.");
857
855 hr = VariableSerialize(pVariables, FALSE, &pbData, &cbData); 858 hr = VariableSerialize(pVariables, FALSE, &pbData, &cbData);
856 ExitOnFailure(hr, "Failed to write variables."); 859 ExitOnFailure(hr, "Failed to write variables.");
857 860
@@ -2476,6 +2479,7 @@ static HRESULT OnExecuteExePackage(
2476 BURN_EXECUTE_ACTION executeAction = { }; 2479 BURN_EXECUTE_ACTION executeAction = { };
2477 LPWSTR sczIgnoreDependencies = NULL; 2480 LPWSTR sczIgnoreDependencies = NULL;
2478 LPWSTR sczAncestors = NULL; 2481 LPWSTR sczAncestors = NULL;
2482 LPWSTR sczEngineWorkingDirectory = NULL;
2479 BOOTSTRAPPER_APPLY_RESTART exeRestart = BOOTSTRAPPER_APPLY_RESTART_NONE; 2483 BOOTSTRAPPER_APPLY_RESTART exeRestart = BOOTSTRAPPER_APPLY_RESTART_NONE;
2480 2484
2481 executeAction.type = BURN_EXECUTE_ACTION_TYPE_EXE_PACKAGE; 2485 executeAction.type = BURN_EXECUTE_ACTION_TYPE_EXE_PACKAGE;
@@ -2496,6 +2500,9 @@ static HRESULT OnExecuteExePackage(
2496 hr = BuffReadString(pbData, cbData, &iData, &sczAncestors); 2500 hr = BuffReadString(pbData, cbData, &iData, &sczAncestors);
2497 ExitOnFailure(hr, "Failed to read the list of ancestors."); 2501 ExitOnFailure(hr, "Failed to read the list of ancestors.");
2498 2502
2503 hr = BuffReadString(pbData, cbData, &iData, &sczEngineWorkingDirectory);
2504 ExitOnFailure(hr, "Failed to read the custom working directory.");
2505
2499 hr = VariableDeserialize(pVariables, FALSE, pbData, cbData, &iData); 2506 hr = VariableDeserialize(pVariables, FALSE, pbData, cbData, &iData);
2500 ExitOnFailure(hr, "Failed to read variables."); 2507 ExitOnFailure(hr, "Failed to read variables.");
2501 2508
@@ -2520,11 +2527,18 @@ static HRESULT OnExecuteExePackage(
2520 ExitOnFailure(hr, "Failed to allocate the list of ancestors."); 2527 ExitOnFailure(hr, "Failed to allocate the list of ancestors.");
2521 } 2528 }
2522 2529
2530 if (sczEngineWorkingDirectory && *sczEngineWorkingDirectory)
2531 {
2532 hr = StrAllocString(&executeAction.exePackage.sczEngineWorkingDirectory, sczEngineWorkingDirectory, 0);
2533 ExitOnFailure(hr, "Failed to allocate the custom working directory.");
2534 }
2535
2523 // Execute EXE package. 2536 // Execute EXE package.
2524 hr = ExeEngineExecutePackage(&executeAction, pCache, pVariables, static_cast<BOOL>(dwRollback), GenericExecuteMessageHandler, hPipe, &exeRestart); 2537 hr = ExeEngineExecutePackage(&executeAction, pCache, pVariables, static_cast<BOOL>(dwRollback), GenericExecuteMessageHandler, hPipe, &exeRestart);
2525 ExitOnFailure(hr, "Failed to execute EXE package."); 2538 ExitOnFailure(hr, "Failed to execute EXE package.");
2526 2539
2527LExit: 2540LExit:
2541 ReleaseStr(sczEngineWorkingDirectory);
2528 ReleaseStr(sczAncestors); 2542 ReleaseStr(sczAncestors);
2529 ReleaseStr(sczIgnoreDependencies); 2543 ReleaseStr(sczIgnoreDependencies);
2530 ReleaseStr(sczPackage); 2544 ReleaseStr(sczPackage);