As a publisher of a Help Creation tool in Help Builder, I’ve seen a lot of problems with people not being able to run their help files properly. Here’s the scenario: You go ahead and happily build your fancy, schmanzy Help File and deploy it to your customer or let your customers download them off the Internet directly.

The customer downloads the file, opens the zip file and copies the help file contained in the zip file to disk, then opens the help file and finds the following help file:


 

 

...a help file that comes up with all topics in the tree on the left, but a Page Not found or Operation Aborted error in the IE content window; an IE error. The CHM file obviously opened since the topic list is there, but the Help Viewer refuses to display the content. Looks like a broken help file, right? But it's not - it's merely a Windows security 'feature' that tries to be overly helpful in protecting you.


The reason this happens is because files downloaded off the Internet - including ZIP files and files cotained in those zip files - are marked as potentially malicious and so do not get full browsing rights on the local machine – they can’t access local content, which is exactly what help topics are. If you look at the URL of a help topic you see something like this:

 
mk:@MSITStore:C:\wwapps\wwIPStuff\wwipstuff.chm::/indexpage.htm

which points at a special Microsoft Url Moniker that in turn points the CHM file and a relative path within that HTML help file. Although it looks weird this still equates to a call to the local computer zone, the same as if you had navigated to a local file in IE which by default is not allowed.  Unlike IE you don’t get an option to allow access via the yellow header security bar that IE usually shows to allow overriding or setting permanent security options for local content.

Instead you get a page like above or one that says that Navigation has failed.

How to Fix This

The easiest way to fix this issue is to set properties on the CHM Html Help file and allow it to be opened right when you download or open it for the first time:


openHelpFile 


There’s more detailed information of the issue and links to Microsoft KB articles as well as some nasty workarounds for this issue here: http://www.helpscribble.com/chmnetwork.html. Unfortunately on newer versions of Windows you won't even see this dialog - you'll get straight into the help file but with the topic not displaying and no hint as to what's going on.


Another option is to right click on the file's properties and 'Unblock' the file so that the security block is bypassed:

unblock 

This latter approach is probably the better choice as it's not a global setting but specific to the particular help file. Once set Windows will display the help file properly and without any extra prompting for security. However, if you do the latter you have to do it to each file individually.


It's annoying as all hell that this sort of obtrusive marking is necessary, but it's admittedly a necessary evil because of Microsoft's use of the insecure Internet Explorer engine that drives the CHM Html Engine's topic viewer. Because help files are viewing local content and script is allowed to execute in CHM files there's potential for malicious code hiding in CHM files and the above precautions are supposed to avoid any issues.