diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2021-04-28 16:43:48 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2021-04-29 14:05:34 -0500 |
commit | 752f0e0576dc27e937c553ed9dce5576bd388e95 (patch) | |
tree | f95013ccb3bdea206cf8879d6bbf2411a04663c6 /src/engine/msiengine.cpp | |
parent | 7099dd38ab902e7fb92706314fa8710a34f165a5 (diff) | |
download | wix-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.cpp | 20 |
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 | ||
706 | LExit: | 706 | LExit: |
@@ -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 && |