aboutsummaryrefslogtreecommitdiff
path: root/src/engine/userexperience.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/userexperience.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/userexperience.cpp')
-rw-r--r--src/engine/userexperience.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/engine/userexperience.cpp b/src/engine/userexperience.cpp
index ab631951..2215a070 100644
--- a/src/engine/userexperience.cpp
+++ b/src/engine/userexperience.cpp
@@ -1141,7 +1141,8 @@ EXTERN_C BAAPI UserExperienceOnDetectPackageComplete(
1141 __in BURN_USER_EXPERIENCE* pUserExperience, 1141 __in BURN_USER_EXPERIENCE* pUserExperience,
1142 __in_z LPCWSTR wzPackageId, 1142 __in_z LPCWSTR wzPackageId,
1143 __in HRESULT hrStatus, 1143 __in HRESULT hrStatus,
1144 __in BOOTSTRAPPER_PACKAGE_STATE state 1144 __in BOOTSTRAPPER_PACKAGE_STATE state,
1145 __in BOOL fCached
1145 ) 1146 )
1146{ 1147{
1147 HRESULT hr = S_OK; 1148 HRESULT hr = S_OK;
@@ -1152,6 +1153,7 @@ EXTERN_C BAAPI UserExperienceOnDetectPackageComplete(
1152 args.wzPackageId = wzPackageId; 1153 args.wzPackageId = wzPackageId;
1153 args.hrStatus = hrStatus; 1154 args.hrStatus = hrStatus;
1154 args.state = state; 1155 args.state = state;
1156 args.fCached = fCached;
1155 1157
1156 results.cbSize = sizeof(results); 1158 results.cbSize = sizeof(results);
1157 1159
@@ -1937,7 +1939,9 @@ EXTERN_C BAAPI UserExperienceOnPlannedPackage(
1937 __in BURN_USER_EXPERIENCE* pUserExperience, 1939 __in BURN_USER_EXPERIENCE* pUserExperience,
1938 __in_z LPCWSTR wzPackageId, 1940 __in_z LPCWSTR wzPackageId,
1939 __in BOOTSTRAPPER_ACTION_STATE execute, 1941 __in BOOTSTRAPPER_ACTION_STATE execute,
1940 __in BOOTSTRAPPER_ACTION_STATE rollback 1942 __in BOOTSTRAPPER_ACTION_STATE rollback,
1943 __in BOOL fPlannedCache,
1944 __in BOOL fPlannedUncache
1941 ) 1945 )
1942{ 1946{
1943 HRESULT hr = S_OK; 1947 HRESULT hr = S_OK;
@@ -1948,6 +1952,8 @@ EXTERN_C BAAPI UserExperienceOnPlannedPackage(
1948 args.wzPackageId = wzPackageId; 1952 args.wzPackageId = wzPackageId;
1949 args.execute = execute; 1953 args.execute = execute;
1950 args.rollback = rollback; 1954 args.rollback = rollback;
1955 args.fPlannedCache = fPlannedCache;
1956 args.fPlannedUncache = fPlannedUncache;
1951 1957
1952 results.cbSize = sizeof(results); 1958 results.cbSize = sizeof(results);
1953 1959
@@ -1962,8 +1968,10 @@ EXTERN_C BAAPI UserExperienceOnPlanPackageBegin(
1962 __in BURN_USER_EXPERIENCE* pUserExperience, 1968 __in BURN_USER_EXPERIENCE* pUserExperience,
1963 __in_z LPCWSTR wzPackageId, 1969 __in_z LPCWSTR wzPackageId,
1964 __in BOOTSTRAPPER_PACKAGE_STATE state, 1970 __in BOOTSTRAPPER_PACKAGE_STATE state,
1965 __in BOOL fInstallCondition, 1971 __in BOOL fCached,
1966 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState 1972 __in BOOTSTRAPPER_PACKAGE_CONDITION_RESULT installCondition,
1973 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState,
1974 __inout BOOTSTRAPPER_CACHE_TYPE* pRequestedCacheType
1967 ) 1975 )
1968{ 1976{
1969 HRESULT hr = S_OK; 1977 HRESULT hr = S_OK;
@@ -1973,11 +1981,14 @@ EXTERN_C BAAPI UserExperienceOnPlanPackageBegin(
1973 args.cbSize = sizeof(args); 1981 args.cbSize = sizeof(args);
1974 args.wzPackageId = wzPackageId; 1982 args.wzPackageId = wzPackageId;
1975 args.state = state; 1983 args.state = state;
1976 args.fInstallCondition = fInstallCondition; 1984 args.fCached = fCached;
1985 args.installCondition = installCondition;
1977 args.recommendedState = *pRequestedState; 1986 args.recommendedState = *pRequestedState;
1987 args.recommendedCacheType = *pRequestedCacheType;
1978 1988
1979 results.cbSize = sizeof(results); 1989 results.cbSize = sizeof(results);
1980 results.requestedState = *pRequestedState; 1990 results.requestedState = *pRequestedState;
1991 results.requestedCacheType = *pRequestedCacheType;
1981 1992
1982 hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGEBEGIN, &args, &results); 1993 hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGEBEGIN, &args, &results);
1983 ExitOnFailure(hr, "BA OnPlanPackageBegin failed."); 1994 ExitOnFailure(hr, "BA OnPlanPackageBegin failed.");
@@ -1987,6 +1998,7 @@ EXTERN_C BAAPI UserExperienceOnPlanPackageBegin(
1987 hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT); 1998 hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1988 } 1999 }
1989 *pRequestedState = results.requestedState; 2000 *pRequestedState = results.requestedState;
2001 *pRequestedCacheType = results.requestedCacheType;
1990 2002
1991LExit: 2003LExit:
1992 return hr; 2004 return hr;