aboutsummaryrefslogtreecommitdiff
path: root/src/engine/msiengine.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-04-28 16:43:48 -0500
committerSean Hall <r.sean.hall@gmail.com>2021-04-29 14:05:34 -0500
commit752f0e0576dc27e937c553ed9dce5576bd388e95 (patch)
treef95013ccb3bdea206cf8879d6bbf2411a04663c6 /src/engine/msiengine.cpp
parent7099dd38ab902e7fb92706314fa8710a34f165a5 (diff)
downloadwix-752f0e0576dc27e937c553ed9dce5576bd388e95.tar.gz
wix-752f0e0576dc27e937c553ed9dce5576bd388e95.tar.bz2
wix-752f0e0576dc27e937c553ed9dce5576bd388e95.zip
Let BA override the package's cache type during Plan.
Rename cache types to REMOVE, KEEP, FORCE. Change implementation of FORCE to not be through CACHED request state. Create package condition enum so BA can tell when InstallCondition wasn't specified. Tell BA when package is cached. Tell BA when package is planned to be cached and uncached.
Diffstat (limited to 'src/engine/msiengine.cpp')
-rw-r--r--src/engine/msiengine.cpp20
1 files changed, 2 insertions, 18 deletions
diff --git a/src/engine/msiengine.cpp b/src/engine/msiengine.cpp
index e3dc4671..3e96e5f9 100644
--- a/src/engine/msiengine.cpp
+++ b/src/engine/msiengine.cpp
@@ -700,7 +700,7 @@ extern "C" HRESULT MsiEngineDetectPackage(
700 700
701 if (pPackage->fCanAffectRegistration) 701 if (pPackage->fCanAffectRegistration)
702 { 702 {
703 pPackage->installRegistrationState = BOOTSTRAPPER_PACKAGE_STATE_CACHED < pPackage->currentState ? BURN_PACKAGE_REGISTRATION_STATE_PRESENT : BURN_PACKAGE_REGISTRATION_STATE_ABSENT; 703 pPackage->installRegistrationState = BOOTSTRAPPER_PACKAGE_STATE_ABSENT < pPackage->currentState ? BURN_PACKAGE_REGISTRATION_STATE_PRESENT : BURN_PACKAGE_REGISTRATION_STATE_ABSENT;
704 } 704 }
705 705
706LExit: 706LExit:
@@ -768,7 +768,7 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage(
768 if (pPackage->Msi.cFeatures) 768 if (pPackage->Msi.cFeatures)
769 { 769 {
770 // If the package is present and we're repairing it. 770 // If the package is present and we're repairing it.
771 BOOL fRepairingPackage = (BOOTSTRAPPER_PACKAGE_STATE_CACHED < pPackage->currentState && BOOTSTRAPPER_REQUEST_STATE_REPAIR == pPackage->requested); 771 BOOL fRepairingPackage = (BOOTSTRAPPER_PACKAGE_STATE_ABSENT < pPackage->currentState && BOOTSTRAPPER_REQUEST_STATE_REPAIR == pPackage->requested);
772 772
773 // plan features 773 // plan features
774 for (DWORD i = 0; i < pPackage->Msi.cFeatures; ++i) 774 for (DWORD i = 0; i < pPackage->Msi.cFeatures; ++i)
@@ -829,21 +829,6 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage(
829 } 829 }
830 break; 830 break;
831 831
832 case BOOTSTRAPPER_PACKAGE_STATE_CACHED:
833 switch (pPackage->requested)
834 {
835 case BOOTSTRAPPER_REQUEST_STATE_PRESENT: __fallthrough;
836 case BOOTSTRAPPER_REQUEST_STATE_MEND: __fallthrough;
837 case BOOTSTRAPPER_REQUEST_STATE_REPAIR:
838 execute = BOOTSTRAPPER_ACTION_STATE_INSTALL;
839 break;
840
841 default:
842 execute = BOOTSTRAPPER_ACTION_STATE_NONE;
843 break;
844 }
845 break;
846
847 case BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE: __fallthrough; 832 case BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE: __fallthrough;
848 case BOOTSTRAPPER_PACKAGE_STATE_ABSENT: 833 case BOOTSTRAPPER_PACKAGE_STATE_ABSENT:
849 switch (pPackage->requested) 834 switch (pPackage->requested)
@@ -892,7 +877,6 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage(
892 877
893 case BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE: __fallthrough; 878 case BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE: __fallthrough;
894 case BOOTSTRAPPER_PACKAGE_STATE_ABSENT: __fallthrough; 879 case BOOTSTRAPPER_PACKAGE_STATE_ABSENT: __fallthrough;
895 case BOOTSTRAPPER_PACKAGE_STATE_CACHED:
896 // If the package is uninstallable and we requested to put the package on the machine then 880 // If the package is uninstallable and we requested to put the package on the machine then
897 // remove the package during rollback. 881 // remove the package during rollback.
898 if (pPackage->fUninstallable && 882 if (pPackage->fUninstallable &&