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:

NoteThe 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.

InstallUISequenceInstallExecuteSequence - Before Initialization
BeginBegin
PrepareDlgAppSearch
AppSearchFindRelatedProducts
FindRelatedProductsLaunchConditions
LaunchConditionsCCPSearch
CCPSearchRMCCPSearch
RMCCPSearchValidateProductID
CostInitializeCostInitialize
FileCostFileCost
CostFinalizeIsolateComponents
MigrateFeatureStatesCostFinalize
WelcomeDlgSetODBCFolders
ResumeDlgMigrateFeatureStates
MaintenanceWelcomeDlgInstallValidate
PatchWelcomeDlgRemoveExistingProducts*
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 InstallationInstallExecuteSequence - Before Finalization
InstallInitializeInstallFiles
AllocateRegistrySpacePatchFiles
ProcessComponentsDuplicateFiles
MsiUnpublishAssembliesBindImage
UninstallCreateShortcuts
UnpublishComponentsRegisterClassInfo
UnpublishFeaturesRegisterExtensionInfo
StopServicesRegisterProgIdInfo
DeleteServicesRegisterMIMEInfo
UnregisterComPlusWriteRegistryValues
SelfUnregModulesWriteINIValues
UnregisterTypeLibrariesWriteEnvironmentStrings
RemoveODBCRegisterFonts
UnregisterFontsInstallODBC
RemoveRegistryValuesRegisterTypeLibraries
UnregisterClassInfoSelfRegModules
UnregisterExtensionInfoRegisterComPlus
UnregisterProgIdInfoInstallServices
UnregisterMIMEInfoStartServices
RemoveINIValuesRollback
RemoveShortcutsInstall
RemoveEnvironmentStringsCommit
RemoveDuplicateFilesRegisterUser
RemoveFilesRegisterProduct
RemoveFoldersPublishComponents
CreateFoldersMsiPublishAssemblies
MoveFilesPublishFeatures
- 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 InitializationInstallExecuteSequence - Before File InstallationInstallExecuteSequence - Before Finalization
BeginInstallInitializeInstallFiles
AppSearchAllocateRegistrySpacePatchFiles
FindRelatedProductsProcessComponentsDuplicateFiles
LaunchConditionsMsiUnpublishAssembliesBindImage
CCPSearchUninstallCreateShortcuts
RMCCPSearchUnpublishComponentsRegisterClassInfo
ValidateProductIDUnpublishFeaturesRegisterExtensionInfo
CostInitializeStopServicesRegisterProgIdInfo
FileCostDeleteServicesRegisterMIMEInfo
IsolateComponentsUnregisterComPlusWriteRegistryValues
CostFinalizeSelfUnregModulesWriteINIValues
SetODBCFoldersUnregisterTypeLibrariesWriteEnvironmentStrings
MigrateFeatureStatesRemoveODBCRegisterFonts
InstallValidateUnregisterFontsInstallODBC
RemoveExistingProductsRemoveRegistryValuesRegisterTypeLibraries
- UnregisterClassInfoSelfRegModules
- UnregisterExtensionInfoRegisterComPlus
- UnregisterProgIdInfoInstallServices
- UnregisterMIMEInfoStartServices
- RemoveINIValuesRollback
- RemoveShortcutsInstall
- RemoveEnvironmentStringsCommit
- RemoveDuplicateFilesRegisterUser
- RemoveFilesRegisterProduct
- RemoveFoldersPublishComponents
- CreateFoldersMsiPublishAssemblies
- MoveFilesPublishFeatures
- - 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

TipThe Rollback standard action is executed only if the user cancels the installation process or an error is encountered.