In this article we will present the standard actions that are executed during a package Upgrade operation when install new version first and then uninstall old version option is selected. In it's essence an Upgrade operation can be split into the following operations:
- Start Install operation and find the older version of the product.
- Continue Install operation and copy the new version of the product.
- Start the Uninstall operation and remove the old version of the product.
In the below tables the standard actions that are executed are bold while the ones that aren't executed are written in italic:
The order in which the standard actions are executed is by column
starting from left to right.
Start of Install operation
These standard actions are the ones executed in the first phase of an Upgrade. Once they are executed, the Install operation for the new version of the product will begin.
| InstallUISequence | InstallExecuteSequence - Before Initialization | |
| Begin | Begin | |
| PrepareDlg | AppSearch | |
| AppSearch | FindRelatedProducts | |
| FindRelatedProducts | LaunchConditions | |
| LaunchConditions | CCPSearch | |
| CCPSearch | RMCCPSearch | |
| RMCCPSearch | ValidateProductID | |
| CostInitialize | CostInitialize | |
| FileCost | FileCost | |
| CostFinalize | IsolateComponents | |
| MigrateFeatureStates | CostFinalize | |
| WelcomeDlg | SetODBCFolders | |
| ResumeDlg | MigrateFeatureStates | |
| MaintenanceWelcomeDlg | InstallValidate | |
| PatchWelcomeDlg | RemoveExistingProducts* | |
| ProgressDlg | - | |
| ExecuteAction | - | |
* this standard action will be executed once the Install operation for the new version of the product is finished and it will trigger the uninstall process for the older version.
Install operation
These standard actions are the ones that install the new version of the product. Once these actions are executed, the installer will return to InstallExecuteSequence - Before Initialization section.
| InstallExecuteSequence - Before File Installation | InstallExecuteSequence - Before Finalization | |
| InstallInitialize | InstallFiles | |
| AllocateRegistrySpace | PatchFiles | |
| ProcessComponents | DuplicateFiles | |
| MsiUnpublishAssemblies | BindImage | |
| Uninstall | CreateShortcuts | |
| UnpublishComponents | RegisterClassInfo | |
| UnpublishFeatures | RegisterExtensionInfo | |
| StopServices | RegisterProgIdInfo | |
| DeleteServices | RegisterMIMEInfo | |
| UnregisterComPlus | WriteRegistryValues | |
| SelfUnregModules | WriteINIValues | |
| UnregisterTypeLibraries | WriteEnvironmentStrings | |
| RemoveODBC | RegisterFonts | |
| UnregisterFonts | InstallODBC | |
| RemoveRegistryValues | RegisterTypeLibraries | |
| UnregisterClassInfo | SelfRegModules | |
| UnregisterExtensionInfo | RegisterComPlus | |
| UnregisterProgIdInfo | InstallServices | |
| UnregisterMIMEInfo | StartServices | |
| RemoveINIValues | Rollback | |
| RemoveShortcuts | Install | |
| RemoveEnvironmentStrings | Commit | |
| RemoveDuplicateFiles | RegisterUser | |
| RemoveFiles | RegisterProduct | |
| RemoveFolders | PublishComponents | |
| CreateFolders | MsiPublishAssemblies | |
| MoveFiles | PublishFeatures | |
| - | PublishProduct | |
| - | InstallExecute | |
| - | InstallFinalize ** | |
| - | ExitDlg ** | |
** these standard actions are run at the end of the whole install process.
Continue and start the Uninstall operation
Once the Install operation for the new version of the product is finished the installer will return to the InstallExecuteSequence. The standard action showed in the table below, once executed, will start the Uninstall operation.
| InstallExecuteSequence - Before Initialization |
| RemoveExistingProducts |
Uninstall operation
These standard actions are executed during the old product removal. Once these standard actions are executed, the installer will return to the InstallExecuteSequence - Before Finalization section from the Install operation sequence.
| InstallExecuteSequence - Before Initialization | InstallExecuteSequence - Before File Installation | InstallExecuteSequence - Before Finalization | ||
| Begin | InstallInitialize | InstallFiles | ||
| AppSearch | AllocateRegistrySpace | PatchFiles | ||
| FindRelatedProducts | ProcessComponents | DuplicateFiles | ||
| LaunchConditions | MsiUnpublishAssemblies | BindImage | ||
| CCPSearch | Uninstall | CreateShortcuts | ||
| RMCCPSearch | UnpublishComponents | RegisterClassInfo | ||
| ValidateProductID | UnpublishFeatures | RegisterExtensionInfo | ||
| CostInitialize | StopServices | RegisterProgIdInfo | ||
| FileCost | DeleteServices | RegisterMIMEInfo | ||
| IsolateComponents | UnregisterComPlus | WriteRegistryValues | ||
| CostFinalize | SelfUnregModules | WriteINIValues | ||
| SetODBCFolders | UnregisterTypeLibraries | WriteEnvironmentStrings | ||
| MigrateFeatureStates | RemoveODBC | RegisterFonts | ||
| InstallValidate | UnregisterFonts | InstallODBC | ||
| RemoveExistingProducts | RemoveRegistryValues | RegisterTypeLibraries | ||
| - | UnregisterClassInfo | SelfRegModules | ||
| - | UnregisterExtensionInfo | RegisterComPlus | ||
| - | UnregisterProgIdInfo | InstallServices | ||
| - | UnregisterMIMEInfo | StartServices | ||
| - | RemoveINIValues | Rollback | ||
| - | RemoveShortcuts | Install | ||
| - | RemoveEnvironmentStrings | Commit | ||
| - | RemoveDuplicateFiles | RegisterUser | ||
| - | RemoveFiles | RegisterProduct | ||
| - | RemoveFolders | PublishComponents | ||
| - | CreateFolders | MsiPublishAssemblies | ||
| - | MoveFiles | PublishFeatures | ||
| - | - | PublishProduct | ||
| - | - | InstallExecute | ||
| - | - | InstallFinalize | ||
Finish the Install process
These standard actions are run once the new version of the product is installed, the old version is removed and they correspond with the last two standard actions from the Install operation sequence.
| InstallExecuteSequence - Before Finalization |
| InstallFinalize |
| ExecuteAction |
| ExitDlg |
The Rollback standard
action is executed only if the user cancels the
installation process or an error is encountered.