You can’t fix application compatibility problems with dialog boxes.

Here’s an interesting story that I hope every developer internalizes: people don’t read what you have to say.

Now, it used to be that people didn’t read the manual until they had no choice. Then it got to the point that people didn’t read the manual ever, so people stopped shipping manuals. But now a lot of people aren’t even reading dialog boxes. Perhaps because there are so many of them, or perhaps because they are so seldom helpful. But, from a practical standpoint, here is what the average app compat dialog box says:


Case in point: I got married a few months ago, and as part of the process I found myself sitting and talking to a florist. My job came up as part of the conversation, so she went out on a limb to ask if I could help her solve a problem. What problem?

Adobe Photoshop was causing a UAC Prompt and she did not know how to make it stop.

Asking her which version of Photoshop she uses, it was the latest (at the time), and I happened to know that it most certainly did not require elevation, so I asked if I could have a look.

Here is what I saw (well, not exactly – the icon is probably a hint that I cheated to make this screenshot, as is the path in the location field, but you get the idea):


So, here is a dialog that people agonized over. “We can help with app compat if we just tell the user what’s happening. I mean, we’re helping, that’s good isn’t it?”

Let’s count the things the user didn’t read:

The title of the dialog box. This isn’t UAC at all. But she’d heard so many TV commercials talking about how UAC annoys you all the time, that she assumed that something prompting all the time must also be UAC.

The name of the app. Got the vendor right, but she wasn’t differentiating between Photoshop and Reader. I see this one a lot – the biggest one being people thinking that Office is part of Windows.

The recommendation to go and fix the problem. We have a big button that offers to help you get it going. Didn’t see it, even though it would have brought her to the website to download the latest (free!) version of the reader with fixes the issues she might have as well as getting rid of the prompt.

The checkbox to make the message go away. Remember, the problem wasn’t that the application wasn’t working right, it was that she hated seeing the prompting all the time. We have a checkbox right there which offers to make it go away – she never read it.

In fact, the only button she read was the one that said “Run program.” The “make it work” button.

It turns out you can’t fix application compatibility issues with words and dialog boxes. Because people don’t read words. This experience taught me a lot about what we ought to do for app compat, and increasing the number of prompts to try to be helpful isn’t the way to do it.

Comments (14)

  1. Leo Davidson says:

    The dialog would still have helped some people so I don’t think it’s useless. I would have read it and clicked the button if I saw something like that appear.

    (At least the first few times I saw such a thing. If it never seemed to do anything useful then I’d start to ignore it.)

    I don’t remember ever encountering it but I was pretty careful to only install Vista-compatible software from the start.

  2. cjacks says:

    I agree that it’s not useless, but it’s also clearly not the solution to the problem. It assumes behavior and initiative that are not guaranteed. Hence, it’s incomplete.

  3. Aaron says:

    Amen, you hit the nail on the head.  As a team, we struggle getting users to read anything, one of our security admins once tried to prove this point by implementing a logon script popup saying "Click ok to send your paycheck to (name excluded)" and logged who clicked ok.  He actually got a ton of people clicking ok.  This issue underlines way more than just application compatibility, but you have shown a great example of how relevant it is.

  4. Chris says:

    All very valid points.  I always hear people complaining about vista, and when I start talking to them about the issue it wasn’t vista at all, it was they didn’t RTFS.

    The question that kept going through my head while reading this is, "If dialog boxes aren’t the answer, then what is?"

    Maybe you answered the question, I didn’t read the whole post …

  5. Olavi says:


    Application Compatibility Toolkit is very good and big program. 😉 And hard to learn it.

    Ok, my problem …

    I find out, where turn off screensaver for specific application, but how I can disable monitor automatic turn off mode for specific application???

    Just which Compatibility Fix and which Compatibility Mode?

  6. cjacks says:


    That’s a power management setting, which is a system-wide setting. There is no shim to change that for just an application running.


  7. My advice for that one, assuming that the PCA "knows" the solution, is this: (crude text pretending to be graphics)


    /! Program Compatibility Assistant


    This program has known compatibility issues!

    |   | Program: Adobe Reader

    | A | Publisher: Adobe

    |   | Your Version: x.x.x (Latest is: x.x.x)


    [*Update now*] [Run program] [Cancel]


    That’s it. no "See details", no "Don’t show again".

    The PCA knows the solution (in this example),

    the known fix is to update, and without the paragraph of text above as in this context it would not be needed as the heading, info and buttons speak for themselves.

    Personally I think that Run and cancel should not be there either thus forcing a update, but that might feel to forced for some, and not practical if they are offline. Also, some folks might want to click Cancel and uninstall the app in question upon seeing this anyway.

    But considering that an update would not be available through Windows Update, this might be the only way to get people to update to the latest revision.

    A version update would require confirmation as it could be different as far as features go, a revision has normally no large changes.

    I’m sure it’s possible to simplify the box here even further in this particular example.

    The box will not go away until they update the program (to a version that is not listed as having issues). "Update now" has a more obvious and immediate action than "Check for solutions online" which sounds like it involves more clicking, reading, clicking and whatnot, and maybe no solution at all when you get there).

    What if there are no new version then?

    The following buttons would be my suggestion:

    [Uninstall now] [Find alternative program] [Run Program] [Cancel]

    Again, the buttons imply immediate action. Some of the geeks might wish for a combo uninstall AND find alternative button though, heh.

    And the Version would read Version: x.x.x (No further development) or something along those veins.

    And again, no need for a paragraph of text up there, just the heading is enough (some people ignore the title so the heading is still needed  I guess).

  8. Olavi says:

    Ok, I understand, but Control panel < Power Otions < Plan setting I can change time, where monitor turn off. It’s not intra-monitor setting.

    Does it impossible like that system avoid idle-mode, when program running?

    Estonian is my best side, English … not so good – I hope You understand. 😀 😉

  9. cjacks says:


    You do not have to apologize – you speak English much better than I speak Estonian!

    Yes, you can notify the system that you are busy using the SetThreadExecutionState API, which will prevent standby or turning off the monitor. I am not aware of a shim which provides this functionality for you, however.

    Hope this helps,


  10. Ishmael Marx says:

    Roger’s point above, while interesting, is not useful in the corporate world.  Many users don’t have admin rights, and can’t install/uninstall software.  These dialog boxes needs to be appropriate based on user authentication level.  If user !admin, then display, "There are known compatibility issues with this application.  It (will/will not) work on your current version of Windows.  Please contact your Windows Administrator for assistance."  It’d be nice if MS allowed variables to be set in the registry to automate reporting on this kind of stuff.

  11. cjacks says:

    Actually, Ishmael, when I talk through the GP settings for PCA, most people in the corporate world end up turning it off. They hope to have tested software before it goes, and even if they haven’t, enough of the mitigations require elevation that it’s just not worth it if you have standard user desktops. I see it being useful in the lab, but not so great in production.

    The Program Compatibility Assistant leaves events in the event log, and you can also read what it’s touched via the registry directly, so if you create a MOM pack it’s pretty easy to pick those things up. So, if you have a few admin desktops you leave it turned on for, you can certainly collect this data.


  12. Djs says:

    Chris – the exact behavior you describe was labeled "satisficing" by Steve Krug in his book on web usability design titled "Don’t Make Me Think". (   Satisficing is scanning quickly for the first thing that looks like it will work and trying it.  While browsing the web, the cost of a mistake is low because the "back" button is there to give it another go.  Even those of us who build carefully crafted sites and applications that "explain" everything end up going to other sites and applications and "satisficing"

    Although Steve Krug was targeting web design, it is oh-so-applicable to all applications.  Potentially web browsing habits have bled over into the rest of our computing experiences?

  13. cjacks says:


    I completely agree (and I really enjoyed Krug’s book as well) – people don’t want to have a conversation with their operating system, they want their operating system to facilitate experiences richly and quickly, and otherwise just please stay out of the way.

    The challenge is that we frequently don’t have 3 choices from which to choose, but an infinite number of choices, a hunch of what we might want to do, and no super simple way to emulate the back button (as it may be a long time before the effects manifest themselves). So, we’re thinking of ways for developers to express, via metadata, more clues. Like, "hey, I was designed for this." That narrows things down. But it keeps the technical conversation where it ought to be – between the developer and the OS, not between the user and the OS!

    But yes, we have a long way to go – and yes, we could be doing even better than we are with what we have today, and we’re trying. 🙂