Some people have noticed that there is no message that lets you disable the Cancel button on a wizard. This is on purpose. Usability studies reveal that users find it extremely frustrating when they get partway through a wizard and then decide they don’t want to perform the operation after all, but find that the wizard doesn’t give them a way to cancel. Now the user feels trapped. They can’t back out of the operation; they’re being forced to finish something against their will.
Imagine if you went to an e-commerce site and started going through the checkout procedure, then decide that you didn’t want to buy the item after all, yet the web page disabled the Back button and didn’t have a Cancel, and when you clicked the “X” button to close the web browser, the page put up a message box saying, “You cannot cancel this operation once it has begun.” Not a very pleasant experience, and I suspect you would avoid this web site in the future.
The same principle applies to wizards. Users should always be given a way to cancel out of a wizard. Wizards should, generally speaking, collect information in stages, and apply them at the point the user clicks Finish. This is not always practical, and wizards may have need to commit partially-made decisions along the way, but that’s the general idea. Under such circumstances, the wizard author should make it clear to the user whether cancelling the operation will undo the previously-committed decisions or leave them intact. If you are clever, you can do this without an annoying confirmation dialog. Instead, you can indicate this by the flow of the wizard itself. For example, you might have a wizard that goes like this:
- Welcome to the XYZ Setup Wizard.
- What type of XYZ do you want?
- Your XYZ is now ready to use. Would you like to set up special access rights to the XYZ?
- Access rights to Your XYZ has been established. This concludes the XYZ Setup Wizard.
With this wizard flow, clicking “Next” to go from page 2 to page 3 commits the initial XYZ setup, as indicated by the text “Your XYZ is now ready to use.” If the user decides to cancel out of the customization, you’ve made it clear that the XYZ has nevertheless been set up and cancelling will not undo it.