Jul 06, 2011 MSI installation: cancel is not working. Ask Question 0. How exactly CANCEL button works in default installer UI? If the action never calls MsiProcessMessage, then Windows Installer will handle cancel for the action, but cannot cancel it in the middle of the action.
How exactly CANCEL button works in default installer UI?
If i click CANCEL button, some times i can able to see 'do you want cancel setup' dialog box with yes or no options.
But some cases, this popup won't show up and installation continues.
I am seeing this problem, if i click CANCEL button at the end of first phase only. status message is 'Coping new files'.
'Coping new files' is deferred action. How come this message is showing in first phase?
3 Answers
Are you sure it's actually running the 'Copying new files' action, or is it an action after that which doesn't post any progress updates? If it's a custom action, be careful that it does one of two things:
- Never calls MsiProcessMessage (or equivalent)
- Pays attention to the return codes of MsiProcessMessage and handles cancel appropriately
If the action never calls MsiProcessMessage, then Windows Installer will handle cancel for the action, but cannot cancel it in the middle of the action. If the action calls MsiProcessMessage (with certain values for eMessageType
), then Windows Installer assumes that the action will process the cancel, and the action must return ERROR_INSTALL_USEREXIT
or Windows Installer gets confused.
How exactly CANCEL button works in default installer UI? They are using multiple threads like BackgroundWorker in WindowsForms .NET. One thread for the UI and one for the installation, if you click cancel(UI), it will try to stop the other thread(installation) AT A CERTAIN POINT IN TIME.
dppdppThe execute sequence of an MSI installation process runs in two phases:
- First all actions which should be executed are written in a temporary installation script. This is immediate and it always shows the cancel popup.
- The second phase runs that script and actually performs the installation. It runs as deferred. Depending on when exactly you press cancel, the popup may or may not be shown.
For example, the installation can no longer be canceled when commit actions start executing.
Cosmin Pirvu