Today I tried to install the Windows Phone 7 Developer Tools beta, and was given this lovely error message while the setup tried to start:
Thanks. What problem? Why? What can I do about it?
This really sounds like the installer crashed and there is no reason why - as if the developer just put a try..catch block to catch any kind of problem regardless of what the problem is. The downside is that the end user sees a problem and has no clue what happened.
The least you could do as a developer is put an error number. The user does not know what this means, but it gives him room to (a) ask the developer what went wrong, or (b) Google it, knowing that other users definitely ran into it and posted about it somewhere.
The best way to show errors, though is to do it in a way that is indicative of (a) what exactly went wrong (e.g. SQL error -264), (b) where it went wrong (e.g. function name), and (c) what the user can do about it (e.g. contact customer support, read some FAQ, configure a setting, etc).
This is informative for the user (who knows what went wrong and what action to take) and also for the developer (who can debug the software if necessary and trace the source of the problem).