Why doesn’t Windows offer a working help system anymore?

If you are developing Windows Desktop applications, you may want to offer context-sensitive help, triggered either by pressing F1 or by clicking on the question mark icon in the title bar and on an element. Back in the old days (starting in 1990 and de-facto ending in 2006), there was WinHelp.

Now, WinHelp wasn't exactly beautiful and in recent years (after 1996 that is), the "Maximize Database Size" dialog was downright stupid, but WinHelp had all the features a Help system needs: Articles are organized in Chapters and can contain Images, Links and basic formatting. And it allowed your application to open a specific page, providing contextual help.

But most importantly, WinHelp just WORKS. Really, you press F1 and maybe you have to "Maximize Database Size" once, but then it opens. I never ever had a problem with WinHelp.

But Microsoft decided it wasn't modern anymore. That we needed something new. Granted, WinHelp clearly showed it's age, and creation of Help Files was somewhat complicated. So they introduced Compiled HTML Help, or CHM. It is a modern Help system, allowing you much more freedom with your layout and styling. It's a really good format, with one tiny little problem: CHM doesn't actually work:

Turns out that CHM is displayed through the MSHTML Control (which is essentially an embedded Internet Explorer) and thus it has some security limitations. The most important one is that CHM files on non-trusted (e.g., network) locations simply don't work.

Now, you may say that this can be resolved. The file can be unblocked, or the path can be set to trusted. An Application Installer could do that. I reply: Doesn't matter. It's a Help system. It has to work without configuration. Press F1, get help. If I'm in a situation I need help using my application and my help system tells me that it wants some treats first, it's a failure. Besides, not every Application has an installer because not every application needs one. A large amount of applications are just DLLs (like the one the above screenshot is from) or ZIPped application files.

So CHM is a complete and utter failure, and Microsoft at least acknowledged that by killing off Microsoft Help 2 and starting a new approach with MAML. However, MAML is not a Help System, it's a language that can be used as source to be converted into an output format like HTML, RTF or whatever. In other words, Microsoft has created DocBook again without actually solving the problem of displaying help.

The real successor to CHM seems to be the HelpPane introduced in Windows Vista and included in Windows 2008 and 7 as well. Those help files have the extension h1s and a nice little icon, so Windows knows what they are. There is our new Help system, right? Well, try to double click one of those h1s files...

Hmmm... So Microsoft didn't just register a file type handler for h1s files. Well, can't be that hard to do, can it?

AP Help - Guided Help - Technical FAQ

Can I launch Guided Help through other means besides the Help Pane?
Yes, but you must create and publish the Guided Help topic through Help. Once you have a Guided Help topic compiled into an H1S file and installed (at this stage only possible for Microsoft and OEM's), you can launch it directly through a command line if you wish.
The syntax is:

%systemroot%\system32\acw.exe –Extensions GuidedHelp.dll –taskID mshelp://windows/?id=id-of-your-help-topic –ExecutionMode DoIt | ShowMe

For a fast impression copy following text to your run dialog:

%SystemRoot%\System32\ACW.exe -Extensions GuidedHelp.dll -taskID mshelp://windows/?id=3726934c-1315-4c29-bd4d-e42c10225e5a -ExecutionMode ShowMe

Excuse me, but ARE YOU FRIGGIN' KIDDING ME? Oh, yes you are, let me just quote Microsoft:

Microsoft is committed to providing Help and Support technology in the Windows® platform and will continue to investigate new solutions for software developers.

Sorry, but if "comitted" means "Killing off perfectly working solutions and replacing them with a plethora of broken solutions every two years" then you are absolutely right, because that's what you are doing. WinHelp survived 16 Years and if you would still ship it with Vista and 7 then it would still be alive. So you as an application developer, what can you do? WinHelp isn't part of Vista and Windows 7 anymore and you're not allowed to distribute it with your application. CHM/H1S doesn't work. What are your alternatives?

Some applications use PDF. They offer rich layout and a Table of Content, however there is no standard reader. Sure, there is Adobe Reader, but you can't easily control it (e.g., open a PDF on a given page) - if the user has a version that is too old or too new for your application, you may run into issues. And if the user doesn't have Adobe Reader (or any other PDF reader) installed, you have to explain why someone would download an additional program just because you're not competent enough to include help. So PDF is not an option.

What about HTML Files? Everyone has a browser, even the short lived Windows 7 E Editions included MSHTML allowing you to at least display HTML within an application. The major downside of HTML is that you can't control which browser displays it, so you have to stay conservative and make sure old Internet Explorer or Firefox browsers display it (say goodbye to transparent PNGs...). JavaScript maybe tricky (also due to widely spread Extensions like NoScript). And instead of one help file, you have a whole folder. Adding contextual help to your application is somewhat possible, but overall you simply lose the ability to control and test how the help looks and works.

This is possibly the moment where you expect me to say "But after researching all these non-working options, here is the one that works!". Sorry, can't do that. I don't know a single Help system that works on Windows Vista/7/2008. I asked on StackOverflow a long time ago and the consensus was the same.

It's really sad that a task that seems so simple and straight forward is too hard for Microsoft. Seriously, all that you need to do is to take a simple container format, some basic formatting options, the ability to link and embed images and an API to call Help from your application. If you want, include video support with a standard codec (keeping in mind Windows N/KN Editions)

Simple, easy, straight-forward, hassle-free or in other words: Exactly how a Help System should work. Exactly how WinHelp worked since 1990 before it was brutally murdered. Rest in Piece WinHelp, we miss you dearly.

Comments (3)

Martin BöhmJune 11th, 2010 at 08:59

I could not agree more with you. This is a really sad story. When it comes to local help files, some say if you are building local help files for your application, you're wasting your time, but I am strongly on your side.

Prominent example: MS Office help. I've used to rely on it for grasping concepts, finding features and for development work. I know this makes me an exception - no regular user would even touch help with a pair of tweezers, but I'm not a regular user and always thought help was a great resource for... hm, getting help.

Well, up to Office 2003 that is. Office 2007, not anymore - the new help system is a complete and utter failure and I refuse to use it (I google stuff instead) because it is a waste of time and a depressing experience at that.

Take the little [?] question mark button in dialog box titles. It once was a really useful thing - get an info tip on any screen element quickly - now it opens a screen full of text that is, if at all, only remotely related to what I'm looking at, but is eager to explain all kinds of stuff to me that I don't currently want to know. As a user, do that twice and you'll stop doing it at all. If I was a documentation writer, help editor or translator at Microsoft that thought would make me weep a little.

It boils down to this: The new Windows help system sucks, probably beyond all repair if even their flagship product can't get help to work for an exceptionally patient user like me. Now let's see if we get a working help system in the next release of Windows.

Ben DuguidJune 11th, 2010 at 09:22

I'm totally with Martin on this - Office 2007/2010 both have completely broken help systems - it's /slightly/ better in 2010 (you actually get some irrelevant results) but I rarely get help in them, and end up using Google because Bing couldn't find the page on MS's own servers.

The only MS help system I can rely on at the moment seems to be VS2010 - as the links into MSDN seem to be pretty successful at getting me the information I need.

Whilst not a justification of anything, but if you're "installing" help files that come with "[...] just DLLs (like the one the above screenshot is from) or ZIPped application files." then you should know enough about computers to realise that you will need to unblock the files that came with it 😉

mstumJune 11th, 2010 at 19:03

The Office Help is a good example. Once every few months I need to use Excel for something non-trivial using IF(), LOOKUP() and some other formulas that I know are built in but use too rarely to memorize the Syntax. Since Office 2007, Google is my source not because I like it but because Office Help is useless. Another good Example is the Borland Delphi Helpfile. The Delphi 7 was was perfect - it was easy to find stuff and it was complete. The Delphi 8,2005 and 2006 Helpfiles were useless. From what I hear, 2007 and 2009 had improvements, but D7 is still the best one.