summaryrefslogtreecommitdiff
path: root/src/burn/engine/plan.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-03-30 17:08:40 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-04-01 22:06:11 -0500
commit386a3578413ba16b3c0615d47870ee44a0e461f6 (patch)
tree1dfcea9e5080f1f15cc880aba1541a962426c58b /src/burn/engine/plan.cpp
parentd97c0d1685ef4c3840776327e76ce25d4dbdbeb1 (diff)
downloadwix-386a3578413ba16b3c0615d47870ee44a0e461f6.tar.gz
wix-386a3578413ba16b3c0615d47870ee44a0e461f6.tar.bz2
wix-386a3578413ba16b3c0615d47870ee44a0e461f6.zip
Implement BundlePackage.
3693
Diffstat (limited to 'src/burn/engine/plan.cpp')
-rw-r--r--src/burn/engine/plan.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/burn/engine/plan.cpp b/src/burn/engine/plan.cpp
index cb50b0c9..1d008dba 100644
--- a/src/burn/engine/plan.cpp
+++ b/src/burn/engine/plan.cpp
@@ -292,7 +292,6 @@ extern "C" void PlanUninitializeExecuteAction(
292 break; 292 break;
293 293
294 case BURN_EXECUTE_ACTION_TYPE_EXE_PACKAGE: 294 case BURN_EXECUTE_ACTION_TYPE_EXE_PACKAGE:
295 ReleaseStr(pExecuteAction->exePackage.sczIgnoreDependencies);
296 ReleaseStr(pExecuteAction->exePackage.sczAncestors); 295 ReleaseStr(pExecuteAction->exePackage.sczAncestors);
297 ReleaseStr(pExecuteAction->exePackage.sczEngineWorkingDirectory); 296 ReleaseStr(pExecuteAction->exePackage.sczEngineWorkingDirectory);
298 break; 297 break;
@@ -1181,6 +1180,10 @@ extern "C" HRESULT PlanExecutePackage(
1181 // Add execute actions. 1180 // Add execute actions.
1182 switch (pPackage->type) 1181 switch (pPackage->type)
1183 { 1182 {
1183 case BURN_PACKAGE_TYPE_BUNDLE:
1184 hr = BundlePackageEnginePlanAddPackage(pPackage, pPlan, pLog, pVariables);
1185 break;
1186
1184 case BURN_PACKAGE_TYPE_EXE: 1187 case BURN_PACKAGE_TYPE_EXE:
1185 hr = ExeEnginePlanAddPackage(pPackage, pPlan, pLog, pVariables); 1188 hr = ExeEnginePlanAddPackage(pPackage, pPlan, pLog, pVariables);
1186 break; 1189 break;
@@ -1506,16 +1509,16 @@ extern "C" HRESULT PlanRelatedBundlesComplete(
1506 1509
1507 switch (pPlan->rgExecuteActions[i].type) 1510 switch (pPlan->rgExecuteActions[i].type)
1508 { 1511 {
1509 case BURN_EXECUTE_ACTION_TYPE_RELATED_BUNDLE: 1512 case BURN_EXECUTE_ACTION_TYPE_BUNDLE_PACKAGE:
1510 packageAction = pPlan->rgExecuteActions[i].relatedBundle.action; 1513 packageAction = pPlan->rgExecuteActions[i].bundlePackage.action;
1511 pPackage = &pPlan->rgExecuteActions[i].relatedBundle.pRelatedBundle->package; 1514 pPackage = pPlan->rgExecuteActions[i].bundlePackage.pPackage;
1512 fBundle = TRUE; 1515 fBundle = TRUE;
1513 break; 1516 break;
1514 1517
1515 case BURN_EXECUTE_ACTION_TYPE_EXE_PACKAGE: 1518 case BURN_EXECUTE_ACTION_TYPE_EXE_PACKAGE:
1516 packageAction = pPlan->rgExecuteActions[i].exePackage.action; 1519 packageAction = pPlan->rgExecuteActions[i].exePackage.action;
1517 pPackage = pPlan->rgExecuteActions[i].exePackage.pPackage; 1520 pPackage = pPlan->rgExecuteActions[i].exePackage.pPackage;
1518 fBundle = TRUE; 1521 fBundle = pPackage->Exe.fBundle;
1519 break; 1522 break;
1520 1523
1521 case BURN_EXECUTE_ACTION_TYPE_MSI_PACKAGE: 1524 case BURN_EXECUTE_ACTION_TYPE_MSI_PACKAGE:
@@ -2751,6 +2754,10 @@ static HRESULT CalculateExecuteActions(
2751 // Calculate execute actions. 2754 // Calculate execute actions.
2752 switch (pPackage->type) 2755 switch (pPackage->type)
2753 { 2756 {
2757 case BURN_PACKAGE_TYPE_BUNDLE:
2758 hr = BundlePackageEnginePlanCalculatePackage(pPackage);
2759 break;
2760
2754 case BURN_PACKAGE_TYPE_EXE: 2761 case BURN_PACKAGE_TYPE_EXE:
2755 hr = ExeEnginePlanCalculatePackage(pPackage); 2762 hr = ExeEnginePlanCalculatePackage(pPackage);
2756 break; 2763 break;
@@ -2784,7 +2791,8 @@ static BOOL NeedsCache(
2784 ) 2791 )
2785{ 2792{
2786 BOOTSTRAPPER_ACTION_STATE action = fExecute ? pPackage->execute : pPackage->rollback; 2793 BOOTSTRAPPER_ACTION_STATE action = fExecute ? pPackage->execute : pPackage->rollback;
2787 if (BURN_PACKAGE_TYPE_EXE == pPackage->type) // Exe packages require the package for all operations (even uninstall). 2794 // TODO: bundles could theoretically use package cache
2795 if (BURN_PACKAGE_TYPE_BUNDLE == pPackage->type || BURN_PACKAGE_TYPE_EXE == pPackage->type) // Bundle and Exe packages require the package for all operations (even uninstall).
2788 { 2796 {
2789 return BOOTSTRAPPER_ACTION_STATE_NONE != action; 2797 return BOOTSTRAPPER_ACTION_STATE_NONE != action;
2790 } 2798 }
@@ -2918,6 +2926,10 @@ static void ExecuteActionLog(
2918 LogStringLine(PlanDumpLevel, "%ls action[%u]: RELATED_BUNDLE package id: %ls, action: %hs, ignore dependencies: %ls", wzBase, iAction, pAction->relatedBundle.pRelatedBundle->package.sczId, LoggingActionStateToString(pAction->relatedBundle.action), pAction->relatedBundle.sczIgnoreDependencies); 2926 LogStringLine(PlanDumpLevel, "%ls action[%u]: RELATED_BUNDLE package id: %ls, action: %hs, ignore dependencies: %ls", wzBase, iAction, pAction->relatedBundle.pRelatedBundle->package.sczId, LoggingActionStateToString(pAction->relatedBundle.action), pAction->relatedBundle.sczIgnoreDependencies);
2919 break; 2927 break;
2920 2928
2929 case BURN_EXECUTE_ACTION_TYPE_BUNDLE_PACKAGE:
2930 LogStringLine(PlanDumpLevel, "%ls action[%u]: BUNDLE_PACKAGE package id: %ls, action: %hs", wzBase, iAction, pAction->bundlePackage.pPackage->sczId, LoggingActionStateToString(pAction->bundlePackage.action));
2931 break;
2932
2921 case BURN_EXECUTE_ACTION_TYPE_EXE_PACKAGE: 2933 case BURN_EXECUTE_ACTION_TYPE_EXE_PACKAGE:
2922 LogStringLine(PlanDumpLevel, "%ls action[%u]: EXE_PACKAGE package id: %ls, action: %hs", wzBase, iAction, pAction->exePackage.pPackage->sczId, LoggingActionStateToString(pAction->exePackage.action)); 2934 LogStringLine(PlanDumpLevel, "%ls action[%u]: EXE_PACKAGE package id: %ls, action: %hs", wzBase, iAction, pAction->exePackage.pPackage->sczId, LoggingActionStateToString(pAction->exePackage.action));
2923 break; 2935 break;