aboutsummaryrefslogtreecommitdiff
path: root/src/engine/apply.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-02-22 19:58:44 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-02-22 20:25:06 -0600
commita98115d996d65834e7c8d593c10d2cfa66096ccd (patch)
tree11857990bfadee576b4a8d6d8ccc2db04dfafe7b /src/engine/apply.cpp
parent4f4c85ed66f1b2dfb1bec76d54d7b50c637d5bfa (diff)
downloadwix-a98115d996d65834e7c8d593c10d2cfa66096ccd.tar.gz
wix-a98115d996d65834e7c8d593c10d2cfa66096ccd.tar.bz2
wix-a98115d996d65834e7c8d593c10d2cfa66096ccd.zip
Fix patch registration states during plan and apply.
Add logging for slipstreamed patches. #6297
Diffstat (limited to 'src/engine/apply.cpp')
-rw-r--r--src/engine/apply.cpp32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/engine/apply.cpp b/src/engine/apply.cpp
index 55141ef9..44ff9429 100644
--- a/src/engine/apply.cpp
+++ b/src/engine/apply.cpp
@@ -2032,7 +2032,7 @@ static HRESULT ExecuteMsiPackage(
2032LExit: 2032LExit:
2033 if (fExecuted) 2033 if (fExecuted)
2034 { 2034 {
2035 MsiEngineUpdateInstallRegistrationState(pExecuteAction, hrExecute, fInsideMsiTransaction); 2035 MsiEngineUpdateInstallRegistrationState(pExecuteAction, fRollback, hrExecute, fInsideMsiTransaction);
2036 } 2036 }
2037 2037
2038 if (fBeginCalled) 2038 if (fBeginCalled)
@@ -2248,7 +2248,20 @@ static HRESULT ExecuteDependencyAction(
2248 { 2248 {
2249 pAction->packageDependency.pPackage->cacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT; 2249 pAction->packageDependency.pPackage->cacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT;
2250 } 2250 }
2251 if (BURN_PACKAGE_REGISTRATION_STATE_IGNORED == pAction->packageDependency.pPackage->installRegistrationState) 2251
2252 if (BURN_PACKAGE_TYPE_MSP == pAction->packageDependency.pPackage->type)
2253 {
2254 for (DWORD i = 0; i < pAction->packageDependency.pPackage->Msp.cTargetProductCodes; ++i)
2255 {
2256 BURN_MSPTARGETPRODUCT* pTargetProduct = pAction->packageDependency.pPackage->Msp.rgTargetProducts + i;
2257
2258 if (BURN_PACKAGE_REGISTRATION_STATE_IGNORED == pTargetProduct->registrationState)
2259 {
2260 pTargetProduct->registrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT;
2261 }
2262 }
2263 }
2264 else if (BURN_PACKAGE_REGISTRATION_STATE_IGNORED == pAction->packageDependency.pPackage->installRegistrationState)
2252 { 2265 {
2253 pAction->packageDependency.pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT; 2266 pAction->packageDependency.pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT;
2254 } 2267 }
@@ -2259,7 +2272,20 @@ static HRESULT ExecuteDependencyAction(
2259 { 2272 {
2260 pAction->packageDependency.pPackage->cacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED; 2273 pAction->packageDependency.pPackage->cacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED;
2261 } 2274 }
2262 if (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pAction->packageDependency.pPackage->installRegistrationState) 2275
2276 if (BURN_PACKAGE_TYPE_MSP == pAction->packageDependency.pPackage->type)
2277 {
2278 for (DWORD i = 0; i < pAction->packageDependency.pPackage->Msp.cTargetProductCodes; ++i)
2279 {
2280 BURN_MSPTARGETPRODUCT* pTargetProduct = pAction->packageDependency.pPackage->Msp.rgTargetProducts + i;
2281
2282 if (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pTargetProduct->registrationState)
2283 {
2284 pTargetProduct->registrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED;
2285 }
2286 }
2287 }
2288 else if (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pAction->packageDependency.pPackage->installRegistrationState)
2263 { 2289 {
2264 pAction->packageDependency.pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED; 2290 pAction->packageDependency.pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED;
2265 } 2291 }