Why can’t I disable the Cancel button in a wizard?


The PropSheet_SetWizButtons macro lets you manipulate many of the buttons on a wizard, but the Cancel button remains elusive. Why can't you disable the Cancel button or the "X" button?

Because our users tell us they don't like it.

Observation of users in our labs and interviews with them reveal that wizards that disable the Cancel button cause them stress and frustration. Put yourself in their shoes: You've started some operation, the wizard asks you a few questions, you answer them, and then, uh-oh, it asks a question you can't answer, or you realize that you don't want to do it after all because the wizard told you that completing the task will have some undesired side-effects or because one of the steps is taking too long. You want to cancel out of the wizard. But the wizard won't let you. "Ha-ha. Now I'm going to force you to do what I tell you! You're trapped, I say, trapped! Mwaaa-ha-ha-ha-ha!"

Don't do that to your users. It only upsets them. Let them cancel and live another day.

Comments (40)
  1. aidan_walsh says:

    Pity said button can still be hidden.

  2. Darius says:

    Indeed, today i was configuring X server settings in Linux and the "wizard" had "Back" button that was disabled. I was really really frustrated.

  3. I occasionally have a need to disable the Cancel button in a wizard that’s displaying progress and if that process can’t be cancelled.

    Obviously, it’s better if the process could be cancelled.

    Alternatively, I guess the UI guidelines would imply that you get to the end of the wizard, and then the slow process starts when you click Finish, with a progress dialog of its own.

    Not exactly seamless, though.

  4. . says:

    Why Microsoft "observations of users" are imposed to all ? I mean, it’s a statistic and people can have a different opinion (different target etc) so there is no reason to make it an imposition.

  5. Moi says:

    Pah! The user always has the Cancel button available. Mine has a red light in it and sits on the power strip.

  6. strik says:

    "." wrote: "Why Microsoft "observations of users" are imposed to all ?"

    Please tell me for which company you are working, so I can avoid your products.

    Every program that tries to tell me, the user, what  I have to do is a bad program. Remember: It is not your machine, it is mine. If I want to cancel any operation, it is my right to do so.

    Thank you for listening.

  7. Alun Jones says:

    At the end of the day, there’s nothing that Microsoft imposes on you – it’s merely the way that their property sheets work.  If you don’t like the features that they don’t provide, you can always build your own property sheets.

  8. . says:

    > Every program that tries to tell me, the user, what  I have to do is a bad program.

    By extent : the property sheet is the program and the programmer is the user. And it tries to impose me that a wizard should always be cancelable. Even when its operation is not. And even for software which is not targeted on the shop shelves. Which by the way only a small percentage of all software is.

  9. So I can expect the back/cancel buttons in the Vista setup wizard will be ENabled..?

  10. Mike says:

    This reminds me of the (Microsoft created) dialog with (from the top of my head) the text "Do you want to reboot?" followed by… you guessed it, a single "OK" button.

  11. Forrest says:

    What I want from a wizard is a preview button that’ll show all the steps, so I’ll know what questions are going to be asked before they actually are.

  12. Derek says:

    Forrest, I’ve never seen a Microsoft product do that, but I’d definitely seen Symantec do it.  Installed the corp AV.  "I’m going to reboot your computer now" (paraphrased)  No cancel.  No "later".  No nothing.  And it was actually not a good time to reboot. I was in the middle of some work.  Ugh.  (Go figure, a user actually trying to multitask on a multitasking machine . . . )

  13. Kal says:

    If the entire community could take one thing from MS and use it, it should be MS’s experience studying user behavior. MS has done this better than any other company for years and years. Even if the products that are made are not the best in terms of a user experience, the information that MS has about users is phenomenal.

    Ignore it at your peril.

  14. "Do you want to reboot?"

    I’ve seen that one.  On a server.

  15. AnotherMatt says:

    Any programmer that takes over my computer is automatically a scoundrel in my book.  That includes programmers who disable my cancel button and Microsoft for not letting me disable it.  There, you all lose.  :-)

  16. I’m glad you can’t disable the cancel button, I agree that doing so would be very annoying.  A similar situation, the Windows Modem Control Panel dialog, if you open this up for the first time, it forces you to set your area code, and there is no cancel button (or the cancel is disabled – I forget).  I haven’t owned a modem in at least 6 years, why oh why and I forced to enter an area code?

  17. Whenever my Norton updates, it throws up that "I wanna reboot now! [OK]" dialog. I tend to drag it off the screen and ignore it, since my computer’ll get rebooted in a few hours anyway. Once I’m done with it.

  18. Matt Green says:

    Actually, some Microsoft products are pretty bossy. Windows Update, for instance, says, "You need to reboot your computer for the changes to take effect!" I click later and resume working. But then, another 15 or so minutes later, it has to come up again and remind me. IF I CLICKED LATER, I OBVIOUSLY MEANT IT. I DIDN’T ASK TO BE REMINDED. Office has a special behavior that irritates me to no end. When I start a shutdown sometimes, it STOPS the shutdown and says "please exit all Office applications before shutting down the system." Yes, I’m sure Office is sooooo great that I should never subject it to the horrors of a system shutdown like a normal program!

  19. SuperKoko says:

    "By extent : the property sheet is the program and the programmer is the user. And it tries to > impose me that a wizard should always be cancelable. Even when its operation is not. And even for software which is not targeted on the shop shelves. Which by the way only a small percentage of all software is."

    The programmer application does not "own" the computer.

    The user "owns" the computer, that is the difference.

    That is why, in a protected-mode OS, the user can format his HDD, but software can’t without the request of the user (assuming the user does not always run as root user).

    Of course, I understand that you want to "own" the computer of anybody who installs your application.

    Also, I would like to say that you can program your own Wizard system.

    Microsoft’s wizard system is a contract between the programmer and the user (If you programmed with the Eiffel programming language, you should understand, or if you programmed with any OO language, or any API).

    This contract says.

    The wizard shall have the look and feel and feature of a standard wizard.

    <rude>

    It does not says : It shall have the look to make the user think that it has the features and then, when you  have his confiance, abuse himself"

    Providing illusions to abuse someone… It is probably a good definition of devil.

    </rude>

    "I occasionally have a need to disable the Cancel button in a wizard that’s displaying progress and if that process can’t be cancelled."

    A process shall never be uncancellable, because you cannot assume that everybody has ECC RAM, and a perfect power supply.

    A setup/process should be cancellable, but also, must not leave the computer in an inconsistent state if it is reseted during the process.

    That is one of the best features of MSI setups.

  20. teambanana says:

    @Matt Green:

    That thing with office was actually a bug.  I can’t remember exactly what it was but it only occured if you were using Word as your outlook mail editor.  You’ll be glad to know that it fixed in office 2003!

  21. SuperKoko says:

    "But then, another 15 or so minutes later, it has to come up again and remind me. IF I CLICKED LATER, I OBVIOUSLY MEANT IT. I DIDN’T ASK TO BE REMINDED."

    The purpose of that "feature" seems to make the user feel guilty, because it may be unsafe to work after a setup, because some loaded-in-memory files may be incompatible with files on the HDD, and, the system may crash at any time.

    Like that, if that happen, the user does not think

    "Hey the application is buggy"

    nor

    "Hey it said that I could wait for reboot, I simply clicked"

    nor

    but he thinks

    "I am culprit, I refused to reboot so many times"

    And he may also think

    "Why the h*** does it allow me to do something buggy"

    Of course, the system may even crash during the setup.

    In fact, the whole Update system is buggy.

    It should do the whole installation process at boot time.

    So, the user could just launch the setup, which could actually do nothing except add the setup file in a file, so at the next boot, it’ll install it.

    But, that is not the way it has been done.

  22. Stu says:

    "If the entire community could take one thing from MS and use it, it should be MS’s experience studying user behavior. MS has done this better than any other company for years and years. Even if the products that are made are not the best in terms of a user experience, the information that MS has about users is phenomenal.

    Ignore it at your peril."

    As far as I can tell, Microsoft only does studies with new users, and by "new users" I mean PEOPLE WHO HAVE NEVER USED A COMPUTER BEFORE.

    Nevermind that 90%+ of people who by a new computer or new MS OS HAVE used a computer before and the "people who have never used a computer before" stop being "people who have never used a computer before" soon after they start using the system.

    That’s why there is so much provision for novices in MS OS’s and a major case of "Microsoft knows best" and "we MUST protect the user from himself". Sometimes there are good reasons to do ‘unsafe’ things.

    "A process shall never be uncancellable, because you cannot assume that everybody has ECC RAM, and a perfect power supply.

    A setup/process should be cancellable, but also, must not leave the computer in an inconsistent state if it is reseted during the process."

    In a perfect world, maybe. But sometimes things cannot be cancelled. Formatting a disc, erasing a series of files, etc. If you somehow cancel operations like that there is no way not to leave the system in an inconsistent state.

  23. Anonymous Coward says:

    The "Reboot Later" thing from Windows update is exceedingly annoying.  If you use Process Explorer to kill it, the damn process is recreated.  There is no way of getting rid of it other than a reboot.

  24. Grant says:

    To control "Reboot Later", set Automatic updates to "Download updates for me, but let me choose when to install them"  Then you can install at the end of the day.

  25. Jason Spiro says:

    Forrest wrote:

    > What I want from a wizard is a preview button that’ll show all the steps, so I’ll

    > know what questions are going to be asked before they actually are.

    Many Assistants (the Mac OS equivalent of Wizards) do this. (They show a list of steps on the left-hand side of the dialog box, and color each step’s name in bold as you get to it.)

    Two examples:

    http://tor.eff.org/cvs/tor/doc/tor-doc-osx.html#installing

    http://helpcenter.suntrust.com/knowbase/root/public/sn2980.htm

    You’re right, this would be great to have on Windows as well.

  26. 8 says:

    "Don’t do that to your users. It only upsets them. Let them cancel and live another day."

    So why does the Windows installation wizard allow you to click "Next" in order to complete the process, and afterwards show a ‘Wee! I’m done!’ message where the same button says "Finish" but doesn’t really do anything other then "Close"? And I’ve seen more of them.

  27. silkio says:

    Yes,

    I too hate hate HATE the windows update "Reboot Later" system. I believe I have, once or twice, accidently restarted because – god forbid – I was actually typing at the time it decided to take focus.

    That has to be the #1 annoying thing for me with apps. Taking focus away from what I want. The little flashing   startbar button was supposed to fix this, right?

    It hasn’t.

  28. silkio says:

    Mike said:

    > This reminds me of the (Microsoft

    > created) dialog with (from the top

    > of my head) the text "Do you want

    > to reboot?" followed by… you

    > guessed it, a single "OK" button."

    If you didn’t know already, you can sometimes get arround these ones by clicking the "x", or an alt-f4.

    I am also reminded that I just downloaded and installed 4 service packs for windows 2000 AS, and each one of them had a different way of telling me that it wanted to reboot.

  29. Meta says:

    ‘if you open this up for the first time, it forces you to set your area code, and there is no cancel button (or the cancel is disabled – I forget)’

    In fact it does. It solves the ‘problem’ of a user not wanting to do as he’s been told by simply reopen the wizard if it is closed. Which was very frustrating, once I clicked something, which didn’t even look like it would start this wizard.  So at least for the case that you are in a ‘I didn’t want to do THIS’ situation there should be a cancel button.

  30. PatriotB says:

    "I am also reminded that I just downloaded and installed 4 service packs for windows 2000 AS, and each one of them had a different way of telling me that it wanted to reboot."

    Please say you didn’t download and install SP1, then SP2, then SP3, then SP4… I believe they’re cumulative so you’d only need to do SP4.

  31. Randolpho says:

    Matt Green wrote:

    "Office has a special behavior that irritates me to no end. When I start a shutdown sometimes, it STOPS the shutdown and says "please exit all Office applications before shutting down the system." Yes, I’m sure Office is sooooo great that I should never subject it to the horrors of a system shutdown like a normal program!"

    That’s an issue with Windows in general — any program can cancel or indefinitely delay a shutdown.

    Well, I should say "once could", rather than "can" — it’s fixed in Vista. A program can delay a shutdown for a few seconds at most, now. If they fail to handle the shutdown in that time, too bad.

  32. silkio says:

    Please say you didn’t download and install

    > SP1, then SP2, then SP3, then SP4… I believe

    > they’re cumulative so you’d only need to do

    > SP4.

    Okay I won’t say I did that; but if I did I surely don’t remember anything telling me that I shouldn’t :) (Not that I read any text beyond "Download here" and "Service Pack 4 Required to …").

  33. Norman Diamond says:

    A hard disk formatting operation can be cancelled by the method "Moi" described.  After cancelling, if you decide you want to format it after all then you have to start the format from the beginning.  No surprise, right?  So the format operation deserves a software cancel button for itself, for the same reason as everyone else is observing about all other software.

    Same for checkdisk.  Sometimes I’ve started a checkdisk operation that I thought was going to take a few minutes, but then see it’s going to take a few hours (like phase 2 starting and then crawling along invisibly).  Surely when not in the middle of actually fixing a broken NTFS structure and not doing surface testing that usually isn’t selected anyway, there’s not too much that has to be written back in order to put the file system structure back the way it was, cancel the checkdisk, and let the user start over on a weekend or nighttime.

    As for service packs, service packs for Windows are cumulative except for when they aren’t, such as NT4 SP5 and above which didn’t include NT4 SP4, except for parts of SP4 that they included, except for changes to SP4 after the original SP4.  Service packs for Office aren’t cumulative except for when they are, except for when they’re partially cumulative.  Visio too.  Of course you can always read the release notes for service packs in order to see which ones are cumulative and which aren’t, except for when the release notes give information that isn’t quite right.

  34. Steveg says:

    "Why Microsoft "observations of users" are imposed to all ? I mean, it’s a statistic and people can have a different opinion (different target etc) so there is no reason to make it an imposition."

    Mr|Ms Dot, you ask a reasonable question.

    Consider, though, that you could replace "Microsoft" with any company that produces anything and and your comment remains as valid. eg Why did Apple impose their observations of users on the interface of the iPod? Why can’t I change the way its UI works?

    Consider the opposite of what you said: what happens when companies *don’t* "enforce" their observations of users, or worse don’t make any observations, on their products. Think of any gizmo you’ve used with a crappy interface (are you old enough to remember VCRs?). Think of that door you use every day that has a handle yet you have to push.

    Ultimately we’re talking about a minor thing in a very large thing, but I find it good to know that the small things are subject to thought and debate.

    The other angle of your argument is the imposition of something on the minority. That comes down to a cost benefit/ratio. But that’s some waffle for another day.

  35. toomuchwin32 says:

    While I completely agree with the assertion that a non-cancellable wizard is a horrible thing to impose on a user and any software that does this does not deserve to live on my computer, at the end of the day, the Cancel button is a window that has an HWND. There are tons of things that a determined programmer can do to really disable the Cancel button, (EnableWindow(hWnd, FALSE), subclass the window and alter its behaviour, sublass the dialog proc itself and not pass on the WM_COMMAND with IDCANCEL to the original proc, subclass the dialog window proc and suppress WM_CLOSE etc etc etc). So while I completely agree that one of the things that Microsoft does best is "user behaviour studies", the step of not allowing the PropSheet_SetWizButtons to disable the Cancel button is a lame step and really only forces a determined (but idiotic) programmer to do crazy stuff to disable the window. And it also is inconsistent the fact that there are a lot of other potentially annoying stuff that the OS happily lets a program do. I believe the best thing about programming on a Windows OS is the amount of democracy there exists in letting me override almost any OS behaviour. Breaking that "democracy" model in some few selected cases seems pointless to me. There will always be idiots that will break the UI guidelines, and no amount of restrictions to the API set are going to prevent that.

  36. Norman Diamond says:

    As several people observed, a cancel button that can’t be disabled can be hidden.  But Microsoft wouldn’t dare to do such a thing, or at least not in a product released after February 2006.  Some versions of Visual Studio 2005 aren’t released yet, right?  When they get out, they won’t do this, right?

    http://www.geocities.jp/hitotsubishi/what-a-wizard.png

  37. Sec says:

    To all the people complaining about the reappearing "reboot later" button. You can get rid of it. There is an official way to set the time before it reappears. Set it to 24h or bigger, and be happy  :)

    The setting is hidden in the Windows Update section of the Policy editor.

    See http://blogmal.42.org/tidbits/windows-restart,en.story for details.

  38. Dave says:

    I’m sure some Microsoft UI design guideline relating to software that asks questions and works according to the questions states that the software should ask the questions FIRST, then, only after all questions have been asked, get on and do the work.

    If a wizard is designed this way, then it will always be cancellable because nothing is actually done, and therefore cannot be undone, until the user hits Finish.  But if you ask a question, do a bit of work, then ask another, then do another bit of work, then you’ll have a potentially uncancellable wizard, unless you add the extra complexity of undo logic and storage.

    This has the additional benefit that the user is not forced to sit there watching the wizard; they just answer the questions which can be done at the user’s speed, hit Go and then they can go watch telly, make a coffee or whatever.  Very little is more irritating than some setup software that needs handholding through a lengthy process, especially when the prompts are of the form "Now I’m going to do X; hit OK to continue" with no other option than OK.  As a programmer myself, from a debugging perspective I can see the use of this sort of popup, but production software DOES NOT NEED the user to be prompted with debug messages!

  39. Norman Diamond says:

    When trying to install .Net Framework 2 under Vista beta 1, I saw it display a window for a fraction of a second, SAYING that it was disabling the Cancel button.  Which it proceeded to do.

    Though it didn’t matter in the end.  The .Net Framework 2 installer cancelled itself, rolling back every action.

    Vista beta 1 puts a link on the desktop to give instructions on how to report bugs.  The beta bug reporting tool refuses to install itself until .Net Framework 2 is installed.  .Net Framework 2 refuses to install itself because of bugs in itself and/or Vista beta 1.

    So I have around 15 minidumps and around 5 various other bugs which Microsoft says I should report to Microsoft, and there’s no way to report them because the bug reporting tool won’t work because of bugs.

    (The environment where this happened is completely different from the one where my install of Vista beta 1 32-bit checked build is still ongoing.)

  40. LittleHelper says:

    Any program, even old 16-bit ones, is allowed to set all other top-level windows’ parents to itself. And then reboot. No other apps are then allowed to stop the reboot. This way Windows is rebooting super fast, no swapping (disk chewing) or anything. I’ve mapped this little useful util to a shortcut-key. All it does is to call SetParent on every enumerated top-level windows, and then calling ExitWindowsEx.

Comments are closed.

Skip to main content