History | Version |
HH 1.3 | HH 1.4x |
Security Updates |
| Boxed Windows | Internet Explorer | WinHelp Vs HH | Installing HH |
| Collections | More Notes | HH1.3 Changes |
QuickHelp 1988 Ralph Walden joined MS in 1987 and wrote a help system for MS DOS called QuickHelp. Ralph was also primarily responsible for WinHelp and HTML Help 1.x. Ralph left MS early 1998 and formed KeyWorks with Cheryl Lockett Zubak of Work Write, Inc. KeyWorks provides many quality must-have help tools, most of which are free. WinHelp 1990 WinHelp 1.0 is shipped with Windows 3.0. WinHelp 95 1995 WinHelp 4.0 is shipped with Windows 95 / Windows NT 3.51. HTML Help 1.x 1997 HH 1.x is shipped with IE4 (see full history below). MS also use HTML Help to create Help collections for MSDN and MS VStudio 6 help. MS have never published the documentation for HH Collections. Help 2.x 2001-2002 MS Help 2.x was announced at 2001 WinWriters Conference. The runtime shipped with Visual Studio 7 (VS.NET) February 13, 2002. The H2 Compiler/SDK (VSHIK) shipped April 2002. Although originally slated as the next help system for the masses, MS H2 authoring is now only used by VStudio integrators. See Help 2.x info. AP Help TBA Assistance Platform help is the help system for Windows Vista. The online version is used by Vista and Office. MS have no immediate plans to make this public.
Release Date Description Announced February
WinWriter's Conference, Seattle - MS announce plans to stop development of WinHelp and start development on HTML Help. 1.0
Help University Conference, San Diego - MS unveils HH 1.0. 1.0 ships with IE 4.0. Contains enough functionality to support IE4 help. 1.1
More functionality add. 1.1a
Released with Windows 98.
A few bug fixes.
Released with MSDN product.
Support for MSDN and MMC collections.
Hh.exe now supports "-map ID chm" command line.
More stability. Advanced search features. Favorites Tab. HH Window now runs in a separate thread. HH 1.2 window types now stored with chm. HH 1.2 provides global window types ($global_) to ensure backward compatiblity. 1.21
Released with IE5 + Office 2000 + Win98 SE. Mainly bug fix release.
Note: IE5 will not install 1.21 if 1.0 or greater is found.
This release fixes a bug in 1.21 that prevented full-text search from working on CD-based Help files. 1.22
This release fixes three bugs in 1.21a that caused problems for Arabic, Hebrew, and Far East languages. 1.3
Released with Windows 2000. Contains Win2000 support including Unicode support. Now has a single OCX with multiple Language DLLs.
Note: IE5.5 install will only update your existing HH if its version is earlier than 1.21 (4.73.8412), the version that shipped with IE 5.00
HHUP.EXE installer upgrade only. Still installs 4.74.8702 files. Update is for people who try to install hhupd.exe on Win2000 systems. Previously you got a message "HTML Help 1.3 cannot be installed on Windows 2000". Now you get "HTML Help is a Windows system component and can only be updated via a service pack on this version of windows". 1.31
Minor fixes. Released later with Win2K. 1.32
Minor update. Released with Internet Explorer 5.5 + Windows ME. 1.33
Minor update. Released with Internet Explorer 6.0 + Windows XP. 1.4
Released with Windows XP SP1 and IE 6 SP1. The component version numbers now match that of the Win XP operating system. New restrictions for Shortcut and WinHelp commands - See Q323180 & MS Security Bulletin MS02-055.
More HH1.4 detail below
Security update fixes a problem with multi-page print introduced in the 1.4 release - See Q323255
More HH1.4 detail below
Windows XP Hot Fix - See Q810565 (WinXP) and 810649 (Win2000)
More HH1.4 detail below
Windows XP Hot Fix - See Q811630. Also fixes the truncating HH popup strings bug. Introduces command HH_SAFE_DISPLAY_TOPIC = 0x20 for IE6. Note that 5.2.3735.1 W2K build is the same source as 5.2.3735.0.
More HH1.4 detail below
Security update [KB840315] - Prevents unsupported use of compiled HTML Help files by only allowing files with .chm file name extension to be used as compiled HTML Help files. itss.dll 5.2.3790.185 (& Witss.dll XP 64-Bit Edition), itircl.dll 5.2.3790.80
More HH1.4 detail below
Hot fix [KB873343] (available from MS Support & XP SP2) updates itss.dll (to 5.2.3790.1221 under XP, 5.2.3790.194 for other OSs) and allows software vendors a work around the file ext restriction introduced in the 1.4d update.
More detail below.
XP SP2 Update
XP SP2 contains all HTML Help updates so far. 1.4f Update
HHCtrl.ocx version 5.2.3790.1280 (WinXP), 5.2.3790.233 (Win2000/2003).
Security update stops access of HTML Help functionality on Web sites. See MS05-001 / KB892675.
More detail below.
Security update MS05-026 / KB896358. No fixes. Lots of breakages. MS have purposely disabled several key features of HTML Help to improve security.
See MS05-026 for exact version numbers. List KB896358 downloads for all versions of Windows
More details below.
6.0.6000.16386 (Vista) Nov
Released with Windows Vista (released via MSDN in Nov 2006. Official release Jan 30th 2007).
Nothing obvious has changed in HH under Vista.
5.2.3790.2847 (XP) April
Hot fix: The Hhctrl.ocx file that is included in security update 928843 (MS07-008), and the User32.dll file that is included in security update 925902 (MS07-017) have conflicting base addresses. This problem occurs if the program loads the Hhctrl.ocx file before it loads the User32.dll file. The KB article indicates the problem is XP SP2 only. To down the hot fix (installs 5.2.3790.2847) see KB935448 or the hot fix download page.
Check your HH Runtime Version:
- Why don't I see a HH Version button?
MS HTML Help Home Page:
Which versions of hhctrl.ocx were released with which MS products:
MS DLL help Database http://support.microsoft.com/dllhelp/
In the "File Name" field type "hhctrl.ocx" and click "Submit".
Back To Top
Hhupd.exe installs four main files plus some language DLLs. This install is also included with HTMLHelp.exe (Workshop installer). Hhupd.exe does not work on newer operating systems such as Win ME, Win 2000, Win XP and Win Vista where HTML Help is now part of the O/S and can only be upgraded by official updates and service packs.
Filename Description hhctrl.ocx Provides access to all main HH functions and services. In HH 1.3 we now have all language specific resources moved out into separate 28 language DLLs.
Special Note: The default language, English, is always read from hhctrl.ocx, not from the English language DLL. This make swapping languages on English NT4 & Win9x systems almost impossible.
(witss.dll for XP 64-Bit Edition)
The itss.dll file handles the its: and ms-its: pluggable protocols along with the hard-wired mk:@MSITStore protocol.
It is also used for both compressing and decompressing files -- that's either done automatically via the three protocols (decompressing) or via the IStorage interface that itss supports (both compression and decompression).
itircl.dll Underlying full-text search hh.exe Windows uses hh.exe to open CHM files. It is installed to the windows directory. hhctrlui.dll 28 language specific resource DLLs (>= HH1.3 See more below)
hhctrl.ocx itss.dll itircl.dll hh.exe HH 1.2 4.73.8252.0 4.72.8084.0 4.72.7276.0 4.73.8252 HH1.21 4.73.8412 4.72.8084.0 4.72.7276.0 4.73.8412 HH1.21a 4.73.8474 4.72.8084.0 4.72.7276.0 4.73.8474 HH1.22 4.73.8561 4.72.8084.0 4.72.7276.0 4.73.8561 HH1.3 4.74.8702 4.72.8085.0 4.72.7277.0 4.74.8702 HH1.31 4.74.8793 4.72.8085.0 4.72.7277.0 4.74.8793 HH1.32 4.74.8875 4.72.8085.0 4.72.7277.0 4.74.8875 HH1.33 4.74.9273 4.72.8085.0 4.72.7277.0 4.74.9273 HH1.4 5.2.3664.0 5.2.3644.0 5.2.3644.0 5.2.3644.0 HH1.4a 5.2.3669.0 5.2.3644.0 5.2.3644.0 5.2.3644.0 HH1.4b 5.2.3718.0 5.2.3644.0 5.2.3644.0 5.2.3644.0 HH1.4c 5.2.3735.x 5.2.3644.0 5.2.3644.0 5.2.3644.0 HH1.4d 5.2.3735.x 5.2.3790.185 5.2.3790.80 5.2.3644.0 HH XP SP2 5.2.3790.1194 5.2.3790.1221 5.2.3790.1159 5.2.3790.1159 ** **
HH.EXE is not usually changed except for making the version number the same as Hhctrl.ocx.
** Later versions of HH are difficult to list since build numbers different between operation systems.
Back To Top
Prior to HTML Help 1.30 we had a different hhupd.exe and thus hhctrl.ocx for each of the 28 foreign language installs. With 1.30 we now have one hhupd.exe that installs one ocx but 28 language dlls. After installing 1.30 you will find hhctrl.ocx in the Windows System folder as before, but now below the system folder is another folder called \mui which contains all the locale folders. Each locale folder contains a language resource DLL called hhctrlui.dll.
These locale folders are named using the hex representation of that locale's Locale ID (LCID). Thus the English locale's folder is named 409, the German locale's folder is named 407, the Japanese locale's container 411, and so on.
Example: Windows 95/98
Mui I assume stands for Multilingual User Interface.
Note: You can always right-click a DLL and select properties to check version and language details.
When the HtmlHelp API (hhctrl.ocx) is loaded it gets the current locale and loads the resources from the appropriate locale folder. If the folder does not exist it simply defaults to the English resources found in the ocx. So if DLLs are not installed hhctrl.ocx still work and display English.
The immediate advantage for us as developers is obvious. We now have only one install file to download and distribute. We no longer have to detect the Windows O/S language and install the correct hhupd.exe.Language & LCID ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0401 Arabic 0403 Catalan 0404 Traditional Chinese 0405 Czech 0406 Danish 0407 German 0408 Greek 0409 English ** 040A Spanish 040B Finnish 040C French 040D Hebrew 040E Hungarian 0410 Italian 0411 Japanese 0412 Korean 0413 Dutch 0414 Norwegian (Bokmal) 0415 Polish 0416 Portuguese (Brazilian) 0419 Russian 041B Slovak 041D Swedish 041F Turkish 0424 Slovenian 042D Basque 0804 Simplified Chinese 0816 Portuguese (Standard)** Note that HH1.3 always reads English resource strings from the OCX not from the DLL as it should.
PS. I notice that installations of HH that come with Windows 2000 and XP come only with the required language resource DLL files. Hhupd.exe wont install on these systems. On older systems Hhupd.exe 1.3x will install all language resource DLLs.
Back To Top
Summary of all security updates that break HTML Help
New HH 1.4 Policy: "Restrict potentially unsafe HTML Help functions to specified folders"
Windows security has tightened up and HH 1.4 now restricts the use of HH Shortcut and WinHelp Topic commands.
- In HH 1.4, Shortcuts and WinHelp commands now only work if the CHM is on a local drive. Shortcuts wont fire for CHMs on Servers, UNC and Mapped drives. When you click the link nothing happens. No feedback whatsoever.
- HH 1.4 introduces a new policy (Win2K and WinXP only) that can restrict shortcuts further to specific folders on your local drives. When the policy is enabled (default = disabled) only CHMs under the following folders will support Shortcuts commands:
- MVP Cheryl Lockett Zubak had announced at the 2002 European Help conference that the new 1.4 Shortcuts Policy would be enabled by default. Thankfully MS reversed this decision because of user feedback. The new policy is still available but now disabled by default.
- MS Security Bulletin MS02-055 says: "The policy sets the HelpQualifiedRootDir key under the System Administrative Template". Normally a search through the registry will not find this key. It is only found if the policy is enabled. Deleting or Renaming this Key will disable the policy.
More Info: KB810687, KB323180, MS Security Bulletin: MS02-055.
Popup Text Truncated Bug
HH 1.4 introduced a new bug where HH Popup text is truncated to 256 chars. MS know about the bug and will try and fix it in a future release. If your popup text is < 256 chars you wont see a problem -- Fixed 1.4c (below).
Multi-Page Print Bug
HH1.4 multi-page printing works but links to images and style sheets don't work, resulting in text only print-outs. This bug has been fixed in HH1.4a (see below).
Multi-Page Printing Bug Fixed
HH 1.4a fixes the multi-page printing bug. Its available as the patch or Windows security update "Unchecked Buffer in HTML Help Security Vulnerability".
The patch for NT4 is a “traditional” hhupd.exe, but the patches for newer OSs are OS specific. There are no patches for Windows 95.
More Info: Q323255
Link Opens in Internet Explorer Bug
When you click a link it may open in Microsoft Internet Explorer instead of in your default browser, or in the Help and Support Center.
See Q810565 (WinXP) and 810649 (Win2000)
Truncated Popup Bug Fixed
See Q811630. Fixes the truncated HH popup text bug. Also fixes and security update for window.showhelp().
Only .CHM file Extensions Supported
See KB840315 - From KB web site: For security reasons, the 840135 security update prevents unsupported use of compiled HTML Help files. After you apply 840315, only files that have the .chm file name extension can be used as compiled HTML Help files. Programs that use other file name extensions for compiled HTML Help files will no longer display content by using HTML Help.
Software vendors affected should read the next section.
Workaround For Using Non-CHM File Extensions
See KB873343 - The 1.4d update broke software that contained ITS files with non-CHM file extensions. MS have released a work around in the form of a hot fix that you can request from MS Support. The fix updates ITSS.DLL to 5.2.3790.1221 (XP), 5.2.3790.194 (other OSs). XP users who update to SP2 will get the itss.dll update automatically (although the KB article states that users who were using XP SP2 release candidate 1 may not be updated correctly. In this case they should request the Hot Fix KB873343 from MS support).
Once you have the newer itss.dll, update the registry (as described in KB873343) to enable a non-CHM file extensions.
I run XP SP1 Pro and received itss.dll 5.2.3790.185 (HH 1.4d) via Windows Automatic Updates. After this the *.CHM files I had renamed to *.ITS refused to view in Internet Explorer. I installing XP SP2 (which updated Itss.dll to 5.2.3790.1221). I then added the following registry items to allows Internet Explorer (iexplore.exe) to view *.ITS files.
Windows Registry Editor Version 5.00
I requested the hot fix from MS Support and received the wrong files. They were for a particular Windows operating system so I got an Invalid Operating System error when I ran them. Make sure you specify the Windows OS when you ask Support for the files. Here are some package IDs that I know are associated with KB873343:
- For XP SP1 x86 RTM ENU, the package id is 193108.
- For XP SP2 RC2/EDW ENU, the package id is 193805
- For Windows 2000, the package id is 193117
Q. I'm a vendor and I want to get all packages and distribute to my customers as required. Is this OK?
A. Normally the customer should ask for the hot fix. It is possible for Vendors to distribute however the approval process is done on a case-by-case basis and requires a number of approvals, including MS legal.
HTML Help On The Web Disabled
MS have released security update MS05-001 which disables the use of HH ActiveX control HHCTL.OCX. So web sites using the HH ActiveX control to display TOC, Index, HH Version etc no longer work. Local machine zone is unaffected.
KB892675: You cannot access HTML Help functionality on some Web sites after installing security update MS05-001.
The user will normally see a blank space where the Hhctrl Visual control is normally seen. You may also get a message box saying: "You must specify the location of the hhc you want to use".
KB892675 describes how to bypass this restriction:
http://helpware.net/FAR/help/h_start.htm -- The TOC displays blank.
http://www.help-info.de/en/hh_start.htm -- The TOC displays blank.
This registry change enables the MS Hhctrl ActiveX control for these two sites:
Windows Registry Editor Version 5.00
Alternatively you can enable sites by using IE Security Zones.
First set the following registry item to enable Hhctrl ActiveX to work in a Zone.
Windows Registry Editor Version 5.00
Default value for MaxAllowedZone = 0 (allow Local machine zone only)
1 = Local machine zone + Local intranet zone
2 = Local machine zone + Local intranet zone + Trusted sites zone
3 = Local machine zone + Local intranet zone + Trusted sites zone + Internet zone
4 = Local machine zone + Local intranet zone + Trusted sites zone + Internet zone + Restricted sites zone
Thus if http://helpware.net was part of your companies local Intranet you would do the following:
1. Set MaxAllowedZone = 1 (Local Intranet Zone)
2. Open IE Internet Options
3. Click Security Tab > Local Intranet Icon > Sites Button > Advanced button
4. Add http://*.helpware.net/ to the Zone
Better still your network administrator could push down the settings to all machines.
Since http://helpware.net is a web site on the Internet you would do the following:
1. Set MaxAllowedZone = 2 (Trusted Sites Zone)
2. Open IE Internet Options
3. Click Security Tab > Trusted Sites Icon > Sites Button
4. Add http://*.helpware.net/ to the Zone
Why don't my settings work?
- Check that all URLs have a trailing slash
- When adding a site to reg item "UrlAllowList" make you add all sub-domains used.
- When adding a site to an IE Security Zone, again add all sub-domains used.
Note: IE Security Zone lists allow the form http://*.helpware.net/ (so only one entry is required).
- After you change a setting and before you test, first shutdown all instances of IE to clear any memory effects.
Windows Server 2003 SP1 - CHMs no longer work on the Intranet or Internet
You cannot use certain Web applications that use the InfoTech protocol after you install Windows Server 2003 Service Pack 1, MS05-026, or MS04-023
Feedback from user Frank Palinkas in South Africa - Thanks Frank
Hi Rob and Team,
Thought I’d post this to let you know of a serious problem I and several others discovered after installing Windows Server 2003 Service Pack 1, on a Windows 2003 Server, where .chm’s are stored for viewing and downloading through an Intranet.
- After Windows Server 2003 SP1 is installed on a Windows Server 2003 machine, if a user opens a .chm sitting on that Server, they will receive an “Action cancelled” error in the .chm’s viewer frame. The TOC and Index display normally.
- No matter which topic the user tries to view using the TOC or Index, an “Unable to open this web page” message appears in the .chm viewer frame.
CAUSE: Windows Server 2003 SP1 disables all Internet Security zones except the Local Machine zone. In this case, the Local Intranet zone blockage was causing the problem.
KB896054 gives a workaround.
This Microsoft Knowledge Base Fix requires the Windows Server 2003 SP1 machine to be adjusted from its Registry. NOTE: You cannot solve this problem by adjusting the Security Zones feature in Internet Options in Internet Explorer. It MUST be done via the Server’s Registry.
After you install security update 896358,
downloaded Compiled Help Module files cannot be opened
Applies to W2003 SP1 & WinXP SP2. See KB896358.
KB902225 gives the following workaround:
To resolve this problem, click to clear the Always ask before opening this file check box in the Open File-Security Warning dialog box, and then click Open. Alternatively, right-click the file that you want to open, click Properties, and then click Unblock.
After you install security update 896358, content that should be displayed in a different frame is displayed in the frame that contains the HTML Help ActiveX control
kb896905 describes a workaround.
This effects all of us who make uncompressed help in a frameset.
The HH ActiveX controls no longer opens the link files in the correct frame.
Summary of all security updates that break HTML Help
What version of Internet Explorer and HTML Help were shipped with Windows.
Windows Version Internet Explorer
HTML Help 1.x
Win NT4 IE2 --- Win 95 Original --- --- Win 95 OSR2 IE 3.x --- Win 98 IE 4.x HH 1.1a Win 98 SE
IE 5 HH 1.21 Win ME **
IE5.5 HH 1.32 Win 2000 **
IE 5.01 HH 1.30 Win 2000 SP1, **
(no change) HH 1.31 Win 2000 SP2 ** (no change) (no change) Win 2000 SP3 **
(no change) (no change) Win XP **
IE 6.0 HH 1.33 Win XP SP1 **
IE 6.0 SP1 HH 1.4 Win XP SP2 **
IE 6.0 SP2 HH 1.4e Win Vista **
IE 7.0 HH 6.0.6000.16386
- ** HTML Help is now part of these operating systems and cannot be updated using HHUpd.exe.
Only an official Windows patch or service pack will update HTML Help.
- HTML Help Version 1.x. needs IE4 or greater in the backend (IE3 works but is not recommended).
- NT4 Service Pack CDs may contain later versions of Internet Explorer.
- Internet Explorer 4.0 was the first IE to ship with HTML Help.
Back To Top
HTML Help requires IE Version 3.0 or greater. You'll need to install IE4 if you need DHTML and advanced scripting, and IE5 if you need XML.
IE Version Info IE Versions: From Shdocvw.dll Note: The Aboutbox and Registry may have a slightly different number.Version Product -------------------------------------------------------------- 4.40.308 Internet Explorer 1.0 (Plus!) 4.40.520 Internet Explorer 2.0 (NT4) 4.70.1155 Internet Explorer 3.0 4.70.1158 Internet Explorer 3.0 (OSR2) 4.70.1215 Internet Explorer 3.01 4.70.1300 Internet Explorer 3.02 and 3.02a 4.71.1008.3 Internet Explorer 4.0 PP2 4.71.1712.5 Internet Explorer 4.0 4.72.2106.7 Internet Explorer 4.01 4.72.3110.3 Internet Explorer 4.01 Service Pack 1 4.72.3612.1707 Internet Explorer 4.01 SP2 4.72.3711.2900 Internet Explorer 4.x with Update for "Server-side Page Reference Redirect" Issue installed. 5.00.0518.5 Internet Explorer 5 Developer Preview (Beta 1) 5.00.0910.1308 Internet Explorer 5 Beta (Beta 2) 5.00.2014.213 Internet Explorer 5 5.00.2314.1000 Internet Explorer 5 (Office 2000) 5.00.2516.1900 Internet Explorer 5.01 (Windows 2000 Beta 3, build 5.00.2031) 5.00.2614.3500 Internet Explorer 5 (Windows 98 Second Edition) 5.00.2717.2000 Internet Explorer 5 with Update for "Malformed Favorites Icon" Security Issue installed 5.00.2721.1400 Internet Explorer 5 with Update for "ImportExport Favorites()" Security Issue installed 5.00.2723.2900 Internet Explorer 5.0 with Update for "Server-side Page Reference Redirect" Issue installed. 5.00.2919.800 Internet Explorer 5.01 (Windows 2000 RC1, build 5.00.2072) 5.00.2919.3800 Internet Explorer 5.01 (Windows 2000 RC2, build 5.00.2128) 5.00.2919.6307 Internet Explorer 5.01 5.00.2919.6400 Internet Explorer 5.01 with Update for "Server-side Page Reference Redirect" Issue installed. 5.00.2920.0000 Internet Explorer 5.01 (Windows 2000, build 5.00.2195) 5.00.3103.1000 Internet Explorer 5.01 SP1 (Windows 2000) 5.00.3105.0106 Internet Explorer 5.01 SP1 (Windows 95/98 and Windows NT 4.0) 5.50.3825.1300 Internet Explorer 5.5 Developer Preview (Beta) 5.50.4030.2400 Internet Explorer 5.5 & Internet Tools Beta 5.50.4134.0100 Windows Me (4.90.3000) 5.50.4134.0600 Internet Explorer 5.5 5.50.4308.2900 Internet Explorer 5.5 Advanced Security Privacy Beta 5.50.4522.1800 Internet Explorer 5.5 Service Pack 1 5.50.4807.2300 Internet Explorer 5.5 Service Pack 2 6.00.2462.0000 Internet Explorer 6 Public Preview (Beta) 6.00.2479.0006 Internet Explorer 6 Public Preview (Beta) Refresh 6.00.2600.0000 Internet Explorer 6 (Windows XP) 6.00.2800.1106 Internet Explorer 6 Service Pack 1 (Windows XP SP1)
Note1: Early versions of IE did not have a 4th version number, so be careful when reading version info from Shdocvw.dll that you don't turn say 4.70.1155 into 188.8.131.525.
Note2: Notice that IE2 (shipped with NT4) displays the internal version number (184.108.40.2060) in the about box. This can create some confusion as NT4 customers incorrectly report "Yes I do have Version IE4".
Back To Top
It may help to compare the HH files with WinHelp files.
WinHelp HTML Help Description .hlp .chm Main Help File. .hpj .hhp Project file. .cnt .hhc Table Of Contents file. HHC is compiled into the CHM file. .hhk Index file. HHK is compiled into the CHM file. hcw.exe hhw.exe Help Workshop. Free basic authoring tool from MS.
Earlier versions of hcw are hc31, hc, etc.
winhelp.exe hh.exe Launches the help file. HH.EXE is just a small stub that calls the HTML Help API. hcrtf.exe hhc.exe Command Line Compiler. Hcrtf.exe isn't a console program, but it does take command line parameters and can be run from a DOS prompt. .rtf .htm, .html HTML Help is HTML based while WinHelp is RTF based. .bmp .dib
.jpg .gif HTML Help uses HTML document graphics. .gid .chw
The .GID file stores merged keywords (.CHW) and position/preferences information (hh.dat). .fts .ftg With HTML Help FTS information is stored inside the CHM .ann .bmk hh.dat WinHelp run time files for storing annotations and bookmarks. HTML Help 1.2 does not yet offer annotations, while favorites are stored in HH.DAT.
Back To Top
Creating an install program to get HTML Help on a customers machine can be tricky.
hhupd.exe is a free download from the MS Web. Use it to upgrade or install HTML Help on a customer's machine. HH requires that IE3 or greater be install first. HH actually uses the IE layout engine. The IE browser executable itself is not required.
To install quietly use the switches "/r:n /q:a"
For hh < 1.3, for non-english PCs your installation program should detect and install the appropriate language version of hhupd.exe.
Check the version of HH before installing. Version info can be read from file hhctrl.ocx.
hhupd.exe installs the ocx into the windows system folder. Note however that the ocx could also be installed in the windows ocx cache via an ActiveX download from the web. So the safest way to locate hhctrl.ocx is via the registry. The full path to hhctrl.ocx can be found in the default value of registry key:
Installing Internet Explorer
Before checking for HH you should first check if IE is installed. Minimal requirement for HH is IE3.0 (not 3.02 as some think). If your help uses DHTML or XML then obviously IE4 or IE5 will be required.
The version of the installed IE can be read from the file Shdocvw.dll found in the windows system directory.
See the IE version information above.
IE Component Install
The easiest why to distribute IE to your HTML Help customers is under the IEAK Independent Software Vender (ISV) license. No reporting or strings attached. Fill in the registration form, download the required IE5 components and package it up. You must install IE5 in "passive" also known as "silent" mode which means no IE setup dialogs are to be shown.
License and registration: https://ieak.microsoft.com/en/License/isvlicense.asp
Note: The component install must be run in silent mode. This does not mean you try and hide the fact that you are updating their operating system. The IE browser is installed however the silent install mode does not create program folders and shortcuts. Netscape will remain the default browser if it was the default browser before the install.
IEAK IE5 ISV license agreement went public: 30-Jun-1999
For more info and fee silent installers go to
Reading Version Info
Programmers can read file version info using the functions GetFileVersionInfo() and VerQueryValue(). The version info is stored in dwFileVersionMS & dwFileVersionLS items of structure VS_FIXEDFILEINFO.
For download info please see the Web Links Page.
Back To Top
** The following discussion is pre-MS Help 2.0 collections.
There is a lot of interest in VS6 collections at the moment so here are some basic facts.
MSDN and MMC needed a way to "snap in" a CHM module at install time. So they built support for collections into HTML Help.
Each CHM should be compiled with binary toc, binary index and no merge information. The .COL file defines how the CHM modules are merged together at run time. HH API and HH.EXE can open COL files like a CHM.
Collections are not an open system at the moment. There is no documentation available.
The binary TOC used an MSDN collection is not compatible with some features of HTML Help 1.x. These include:
- "use folders instead of books".
- Custom TOC icons.
- Does not supports styles - things like single-click opening one book and automatically closing another book.
- Standard merge.
- Information types.
However, binary TOC does allow you to add browse buttons to the top of your HH window. See htmlhelp.h for button Ids. The current TOC loaded in the HH window is used as the browse sequence.
.CHW CHW files are uncompressed CHM files, so you pick up a lot of compression by "recompiling". For example, the CHW file that ships with MSDN is 50MB -- that can be recompiled down to 5MB. Shareware utility FAR can perform Chw compression.
These are normally created on the fly, though you can ship them. They contain the combined index when two or more files are merged. They are not compressed, which makes sense if HH is creating them on the fly (compression requires a significant amount of memory, and can be fairly slow). However, if they are to be shipped, then compressing them makes a lot of sense -- Ralph.
Apparently merged Full-text search info.
.COL Collection files are used by MSDN and MMC help. The COL file can then be opened like any CHM file. HHCOLREG.DAT Another file required by MSDN help systems. It defines the location of all the .COL CHM files. Lives in %WinDir%\Help\ . In Win XP this would be
C:\Documents and Settings\All Users\Application Data\Microsoft\HTML Help\hhcolreg.dat
.CHI Another file required by MSDN help systems. Contains HTML Help Index info. To Generate add this HHP text
Create CHI file=Yes
NG Post by
The *.col file defines the top level TOC for a collection (a group of chm's browsed and searched and as one would with one chm). The col file also specifies the collection master chm - the chm that is used to define the UI parameters of the collection, the collection language (1033 = English), the collection value that matches the value used in the hhcolreg.dat, and other parameters.
The collection model was created to work with the very large group of chm's (300+) that are used in MSDN. It was impractical to use a merged chm due to the size of the resulting merged chm and due to the fact that MSDN by default keeps most chms (but not all) on media to avoid imposing a very large local drive space requirement (over 1 GB).
A recent post from Jeremy Griffith shows us how to make HH Workshop show a few extra settings such as the "Create .CHI Index file" -- In the Workshop Open dialog, type "I'm MSDN" (without quotes) and click Open. You also get Window Definition toolbar settings "Next, Previous, Zoom".
If you want to add your help into VS6/MSDN collections you do so at your own risk.
For more info see: http://www.codeguru.com/
Back To Top
Other HTML Help Files
Information on storage files and Workshop files.
Filename Description hh.dat Stores CHM position/preferences/favorites information.
Delete %windir%\hh.dat to reset all CHM windows to their default settings.
HH 1.3 and greater now writes hh.dat into the folder
%windir%\Application Data\Microsoft\HTML Help\
Tip: The Favorites information is written to the hh.dat file, but not immediately, so there can be a timing problem if you close and reopen a CHM file in fairly quick succession.
The location differs under other Windows.Windows 98 single user
\Windows\Application Data\Microsoft\HTML Help
Windows 98 multi-user
\Windows\Profiles\%username%\Application Data\Microsoft\HTML Help
\Documents and Settings\%username%\Application Data\Microsoft\HTML Help
Windows NT 4.0
\Winnt\Profiles\%username%\Application Data\Microsoft\HTML Help
hha.dll Compiler Code Module. Used by both hhc.exe and hhw.exe to compile help.
Note: One problematic area of swapping versions is HHA.DLL. When HTML Help starts up, it looks to see if HHA.DLL is around, and if so, loads it and uses it for authoring messages, diagnostics, etc. If you right-click on a non-binary TOC, choose View Entry and get a GPF, then you can be fairly certain you have a mismatched version of HHA.DLL. Of coursing swapping HHA.DLL also means you are changing the compiler, so you shouldn't automatically change HHA.DLL when switching HH versions unless you don't mind changing compiler versions.
HHA.DLL (4.74.8702.0) has not changed for a long time. There is a newer version available, hha.dll (4.74.9301.0) which fixes 2 known bugs. A crash when compiling Japanese projects and a crash when editing TOC items. To get this newer version contact MS Support and quote KB304412 and KB294990 (you may need to tell them your Windows version as well).
To help windows locate a help file, place the name of the help file in a special registry key or ini file.
Name = myfile.chm
Data = "c:\chmfolder\"
Or use HH.INI (see below)
Name = myfile.hlp
Data = c:\hlpfolder\
Or use WINHELP.INI (see below)
You do not need to reboot a Win95 machine for the registry to work. The primary advantage of the hh.ini file is that you can add a prompt to tell the user something should the file not be found. That's particularly useful if the CHM file is on a CD-ROM and you need to tell the user to insert a specific CDROM disk. The format is identical to the WinHelp.ini file. The following docs are taken from the hcw.hlp file and modified for HTML Help:
The following entry instructs Help to look in the \Product\Files folder on drive P for the Notepad Help file. If necessary, Help will prompt the user to insert a CD into the drive:
Notepad.chm=P:\Product\Files, Please insert your Windows 98 CD into drive P.
.ITS Files (cousin to .CHM) Posted by Ralph Walden 22/June/2000
An .ITS file is associated with the I.E. browser -- which means if you double-click it, it will be displayed within the browser rather then the HTML Help window. What will be displayed will be default.htm. You can, of course, link to files within an ITS file just like a CHM file. You can create an ITS file by either compiling a CHM file and then renaming it, or by setting the .ITS extension in your project file. However, I would not recommend this if you are going to use the file in HTML Help -- from HH's perspective, there's no advantage to the different extension, and you rely on the HH team remembering to ALWAYS check for the .ITS extension whenever they check for the .CHM extension (in other words, any easy mistake for them to make). If you are only going to be displaying the file inside the I.E. browser, then you should definitely change the extension -- that way the user can double-click it and have it displayed in the browser.
While the file format of a CHM and ITS file is the same, if you are going to be displaying an ITS file only inside of the browser, then there's some internal files that aren't necessary. If you recompile the ITS file using KeyTools, then it will remove those extra files. That will reduce the size of the ITS file by about 8K, will still work just fine inside of the browser, and will probably make HTML Help very unhappy (so don't use an ITS file with HH).
ITS files viewed by the browser are handled entirely by ITSS.DLL. That particular component has been remarkably stable -- essentially it is unchanged since the release with I.E. 4.0. That means hhupd is not necessary for displaying an ITS file within the browser as long as the user has I.E. 4.0 or above.
BTW, if you are using I.E., and you go out to my web site (www.keyworks.net) and look at the address once you get there, you'll notice that you are looking at an ITS file. No, this is not a way to deliver a single HTML file out of an ITS file -- you did download the entire ITS file. However, that ITS file is 6K and holds some 20K of text -- which means in about the time it would have taken you to download a single HTML page, you've downloaded most of the web site. Links within the site are quick even with a 28K modem because you don't have to connect back to the site and download more text -- it's already on your machine. The ITS file is treated like any HTML file in that it is discarded as part of the history flushing that I.E. does automatically.
ITS file format http://www.speakeasy.org/~russotto/chm/itolitlsformat.html
Words from Wizard Ralph and Others
Filename Description Changing Versions Generally, you don't need to reboot. If you can change hhctrl.ocx at all then you have effectively changed the version of HTML Help. What you may find is that you get an access denied when trying to delete or copy over a different version of hhctrl.ocx. There are times when hhctrl.ocx will be loaded with no visible window and while it's loaded, you can't delete or replace it. In that case, you will need to reboot your system. But aside from that, there is no reason to reboot just to change versions of HH.
Try this under 1.2: Download say the French hhudp.exe. Use WinZip to extract the hhctrl.ocx. Replace the current hhctrl.ocx with the French version. Run a CHM and you will see the French interface.
ms-its: CHM files are accessed through a pluggable protocol (ms-its:) which in turn uses the IStorage interface to read the HTML and other files and hands them to the caller.
Look up "protocol" in the Search tab of the latest MSDN. Looks like it's also part of the Internet SDK documentation.
ms = Microsoft
its = InfoTech Store (InfoTech is a Microsoft group that builds search and storage technology).
itss=InfoTech Storage System.
CHM File Format CHM files are stored in what in techie-speak is called an IStorage format. That allows you to read any of the files within a CHM file without having to know the storage format. Source code for doing that is part of the source code package at http://www.keyworks.net/code.htm (see the CItsFile class). Compiling HHC.EXE is an extremely simple program -- all it does is take your .HHP, hand it to hha.dll to compile, send any output messages to your screen, and exit when done. HHW does the exact same thing, except that it also displays some animation to let you know that the compiler is doing something. Authoring tools which support compiling do the same thing -- they may do some pre-processing of the project file, and post-processing of the output file, but in the end, they all call into hha.dll to do the actual work of compiling. Threads When HTML Help is on the same thread as the calling application, it is possible that the calling app can trap keystrokes that were meant for HTML Help. That means that you could bring up an HH window, enter some text in the Index tab, press Backspace, and the Backspace keystroke gets sent to the application instead of the HH window.
While I was at MS, there was only one program that exhibited this problem, which is why 1.0 and 1.1 use the caller's thread. 1.2 switched to a separate thread as the default. However, this can cause its own problems. For example, if you use the 1.1 version of HHW with the 1.2 version of HHCTRL, switching to the Help tab in HHW will cause a hang because the HH TOC control doesn't initialize correctly when run off a thread (at least, not from HHW).
For the vast majority of programs, it won't make any difference if HH is on a separate thread or not. If you are having timing problems between your program and HH (for example, delayed drawing of the HH window), or you are using the HH TOC ActiveX control and it is hanging, then you might want to try the HH_INITIALIZE approach.
HH Embedded The way you created embedded windows between 1.1 and 1.2 changed. There's usually two additional things you must do to get your HH embedded windows to work in 1.2 -- they'll still work in 1.1 with these changes, so you should always do this.
- In addition to setting HHWIN_PROP_NODEF_STYLES you must also set HHWIN_PROP_NOTITLEBAR -- otherwise you'll end up with a frame window instead of a child window.
- You window style must include WS_CLIPCHILDREN or your embedded window may not show.
BTW, since you are using MFC, you might want to take a look at www.keyworks.net/code.htm -- there's source code there for an MFC class that will create an embedded help window in a dialog that you should be able to easily modify to get it to work in your CControlBar derivative.
Text Blocks >I searched the archives for this but didn't find anything. I'm wondering
>where MS HTML Help Workshop text blocks are stored.
They are stored in the registry: HKEY_CURRENT_USER\Software\Microsoft\HTML
Help Workshop\Settings -- buf1, buf2, ... buf9
Back To Top
Changes since HH 1.2x
MS HTML Help Web Site
New web site
api.chm - Updated
hhaxref.chm - No change
htmlhelp.chm - Updated
viewhlp.chm - No change
A Japanese version of the documentation is also available.
Changes to Workshop
Workshop contains minor fixes plus no more 3001, 3003, 3005 warnings and no more crashes caused by spaces in URLs in large indexes or TOCs.
3001 - The file "%s" has a link to a non-existent file: "%s".
3003 - The HTML tag "%s" has invalid characters appearing before the closing angle bracket: %s
3005 - The HTML end tag "%s" has invalid characters before the closing angle bracket (>).
readme.txt -- Woops!! - An empty file.
The duplicate files htmlhelp.lib and htmlhelp.h in the root have been removed. Readme.htm has been replaced by readme.txt.
\redist\hhupd.exe -- Take care. Workshop installer appears to be using a new installation program which is not overwriting any previous versions of \redist\hhupd.exe. Several people have installed workshop over old installations and have noted that \redist\hhupd.exe remains at V1.2.
30-Jan: I just did a folder compare with a file sync program. Hhupd.exe is not the only problem. When the new install program installs over the top of a 1.2 workshop installation it also neglects to update 16 support DLLs in the HTML Help Workshop folder. So best to do a clean installation.
BTW: Great shareware program. Download FileSync from http://www.fileware.com/. Pointed it at my pure 1.3 workshop install folder and my overwritten folder. It showed me the 16 DLLs plus HHUPD.EXE that were different in date then allowed me to press a button and update the DLLs in my overwritten folder. Nice.
Changes to hhupd.exe
The 28 individual international versions of hhupd.exe have gone. Now there is only a single hhupd.exe that installs HTML Help runtime files plus 28 language resource DLLs (see below).
HH 1.3 now writes hh.dat (window position info etc) to the folder %windir%\Application Data\Microsoft\HTML Help\
- Workshop WinHelp to HTML Help convert does not working under Japanese Windows. Workshop says that a DLL is missing. Fix: Use 1.2x Workshop for now. [Status: Reported]
- Some people see font changes happening in the TOC and Index tabs when viewing old and new CHMs under HH 1.3. [Status: Watching]
- Installing over old workshop does not updated some HTML Help Workshop folder DLLs and HHUPD.EXE. Fix: Install to new folder. [Status: Reported]
- TOC Sync problem in merged help. I have several CHMs merged. The Master CHM is the host and has a Topic "Fred.htm". All my other TOCs used by other CHMs include a link to Fred.htm as well. EG. its:master.chm::/fred.htm. So in my merged TOC I have several TOC items linking to a single Fred.htm in master.chm. The problem is this -- When I click on any Fred.htm TOC link the TOC syncs to the next Fred.htm in the in the merged TOC. The TOC pointer should obviously stay where it was clicked. Note: When you click the TOC Fred.htm item (original) in the master TOC all is OK. Problem in 1.2x as well. [Fix: Don't Merge]
- Since upgrading to HH1.3 yesterday, my Related Topics buttons, which were Alinks displayed on a pop-up menu, are now displaying in the Topics Found dialog box. "phillips, angi" <angi.phillips@SERUK.COM>
Ralph Walden: I asked Shane about this and he responded with:
"This will happen if the language of the OS doesn't exactly match the language of the chm. The problem is that in some cases this mismatch causes garbage in the menu (if the language of the chm can't be displayed in the font the system uses for menus), so we fall back to the Topics Found dialog, in which we can set the font."
Note: A newer version of HH is now available which fixes some of the above bugs. Unfortunately Windows 2000 system files can only be updated via an official W2K service pack.
Back To Top