diff options
Diffstat (limited to 'src/burn/engine/apply.cpp')
-rw-r--r-- | src/burn/engine/apply.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp index 9185e33a..2168cba6 100644 --- a/src/burn/engine/apply.cpp +++ b/src/burn/engine/apply.cpp | |||
@@ -252,7 +252,8 @@ static HRESULT ExecuteMsuPackage( | |||
252 | static HRESULT ExecutePackageProviderAction( | 252 | static HRESULT ExecutePackageProviderAction( |
253 | __in BURN_ENGINE_STATE* pEngineState, | 253 | __in BURN_ENGINE_STATE* pEngineState, |
254 | __in BURN_EXECUTE_ACTION* pAction, | 254 | __in BURN_EXECUTE_ACTION* pAction, |
255 | __in BURN_EXECUTE_CONTEXT* pContext | 255 | __in BURN_EXECUTE_CONTEXT* pContext, |
256 | __in BOOL fRollback | ||
256 | ); | 257 | ); |
257 | static HRESULT ExecuteDependencyAction( | 258 | static HRESULT ExecuteDependencyAction( |
258 | __in BURN_ENGINE_STATE* pEngineState, | 259 | __in BURN_ENGINE_STATE* pEngineState, |
@@ -2351,7 +2352,7 @@ static HRESULT DoExecuteAction( | |||
2351 | break; | 2352 | break; |
2352 | 2353 | ||
2353 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER: | 2354 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER: |
2354 | hr = ExecutePackageProviderAction(pEngineState, pExecuteAction, pContext); | 2355 | hr = ExecutePackageProviderAction(pEngineState, pExecuteAction, pContext, FALSE); |
2355 | ExitOnFailure(hr, "Failed to execute package provider registration action."); | 2356 | ExitOnFailure(hr, "Failed to execute package provider registration action."); |
2356 | break; | 2357 | break; |
2357 | 2358 | ||
@@ -2474,7 +2475,7 @@ static HRESULT DoRollbackActions( | |||
2474 | break; | 2475 | break; |
2475 | 2476 | ||
2476 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER: | 2477 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER: |
2477 | hr = ExecutePackageProviderAction(pEngineState, pRollbackAction, pContext); | 2478 | hr = ExecutePackageProviderAction(pEngineState, pRollbackAction, pContext, TRUE); |
2478 | IgnoreRollbackError(hr, "Failed to rollback package provider action."); | 2479 | IgnoreRollbackError(hr, "Failed to rollback package provider action."); |
2479 | break; | 2480 | break; |
2480 | 2481 | ||
@@ -2887,19 +2888,23 @@ LExit: | |||
2887 | static HRESULT ExecutePackageProviderAction( | 2888 | static HRESULT ExecutePackageProviderAction( |
2888 | __in BURN_ENGINE_STATE* pEngineState, | 2889 | __in BURN_ENGINE_STATE* pEngineState, |
2889 | __in BURN_EXECUTE_ACTION* pAction, | 2890 | __in BURN_EXECUTE_ACTION* pAction, |
2890 | __in BURN_EXECUTE_CONTEXT* /*pContext*/ | 2891 | __in BURN_EXECUTE_CONTEXT* pContext, |
2892 | __in BOOL fRollback | ||
2891 | ) | 2893 | ) |
2892 | { | 2894 | { |
2893 | HRESULT hr = S_OK; | 2895 | HRESULT hr = S_OK; |
2894 | 2896 | ||
2897 | Assert(pContext->fRollback == fRollback); | ||
2898 | UNREFERENCED_PARAMETER(pContext); | ||
2899 | |||
2895 | if (pAction->packageProvider.pPackage->fPerMachine) | 2900 | if (pAction->packageProvider.pPackage->fPerMachine) |
2896 | { | 2901 | { |
2897 | hr = ElevationExecutePackageProviderAction(pEngineState->companionConnection.hPipe, pAction); | 2902 | hr = ElevationExecutePackageProviderAction(pEngineState->companionConnection.hPipe, pAction, fRollback); |
2898 | ExitOnFailure(hr, "Failed to register the package provider on per-machine package."); | 2903 | ExitOnFailure(hr, "Failed to register the package provider on per-machine package."); |
2899 | } | 2904 | } |
2900 | else | 2905 | else |
2901 | { | 2906 | { |
2902 | hr = DependencyExecutePackageProviderAction(pAction); | 2907 | hr = DependencyExecutePackageProviderAction(pAction, fRollback); |
2903 | ExitOnFailure(hr, "Failed to register the package provider on per-user package."); | 2908 | ExitOnFailure(hr, "Failed to register the package provider on per-user package."); |
2904 | } | 2909 | } |
2905 | 2910 | ||