Microsoft Compiled HTML Help

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Microsoft Compiled HTML Help
Filename extension
.chm
Internet media type
application/vnd.ms-htmlhelp[1]
Developed byMicrosoft
Initial release1997
Latest release
1.4[2]
Extended to.lit
Microsoft HTML Help Executable
Other nameshh.exe
DeveloperMicrosoft
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Included withMicrosoft Windows
    PredecessorMicrosoft WinHelp
    SuccessorMicrosoft Help 2
    TypeHelp system

    Microsoft Compiled HTML Help (CHM) is a Microsoft proprietary online help format, consisting of a collection of HTML pages, an index and other navigation tools. The files are compressed and deployed in a binary format with the extension .CHM. The format was intended to succeed Microsoft WinHelp.

    Although the format was designed by Microsoft, it has been successfully reverse-engineered and is now supported by many document viewers.

    History

    [edit | edit source]

    CHM was introduced as the successor to Microsoft WinHelp with the release of Windows 95 OSR 2.5. Within the Windows NT family, the CHM file support is introduced in Windows NT 4.0[3][4] and is still supported in Windows 11.[5]

    Month Year Description
    February 1996 Microsoft announces plans to stop development of WinHelp and start development on HTML Help.
    August 1997 HTML Help 1.0 (HH 1.0) is released with Internet Explorer 4.
    February 1998 HTML Help 1.1a ships with Windows 98.
    January 2000 HTML Help 1.3 ships with Windows 2000.
    July HTML Help 1.32 releases with Internet Explorer 5.5 and Windows Me.
    October 2001 HTML Help 1.33 releases with Internet Explorer 6 and Windows XP.
    March At the WritersUA (formerly WinWriters) conference, Microsoft announces plans for a new help platform, Help 2, which is also HTML based.
    January 2003 Microsoft decides not to release Microsoft Help 2 as a general Help platform.

    Microsoft has announced that they do not intend to add any new features to HTML Help.[6]

    File format

    [edit | edit source]

    Help is delivered as a binary file with the .chm extension. It contains a set of HTML files, a hyperlinked table of contents, and an index file. The file format has been reverse-engineered and documentation of it is freely available.[7][8]

    The file starts with bytes "ITSF" (in ASCII), for "Info-Tech Storage Format", which is the internal name given by Microsoft to the generic storage file format used for CHM files.[9]

    CHM files support the following features:

    • Data compression (using LZX)
    • Built-in search engine
    • Ability to merge multiple .chm help files
    • Extended character support, although it does not fully support Unicode.[10]

    The Microsoft Reader's .lit file format is a modification of the HTML Help CHM format. CHM files are sometimes used for e-books.[11]

    Viewers

    [edit | edit source]

    In addition to Microsoft Windows, the following apps support CHM:

    Name Operating system Website
    Okular Windows, Linux, Unix-like okular.kde.org

    invent.kde.org/graphics/okular

    Uses hh.exe on Windows
    Calibre Windows, macOs, Linux, calibre-ebook.com

    calibre on GitHub

    Sumatra PDF Windows www.sumatrapdfreader.org

    sumatrapdf on GitHub

    GnoCHM Linux, BSD GnoCHM on SourceForge
    CHM View None/Uncompiled chmviewkit on GitHub
    kchmviewer Windows, Linux ulduzsoft.com/kchmviewer/
    KCHM Linux, BSD, Solaris KCHM on SourceForge
    CHMPane Windows, macOS, Linux CHMPane on SourceForge
    CHMate Neue iOS, iPadOS, visionOS CHMate Neue on iTunes
    iChm iOS, macOS iChm on iTunes Discontinued
    ChmPlus iOS, iPadOS, macOS, visionOS ChmPlus on iTunes
    Chmox macOS chmox.sourceforge.net

    Chmox on SourceForge

    Clearview macOS Clearview on iTunes
    DisplayCHM Linux linux-apps.com/p/998057
    KOReader Android, Linux koreader.rocks

    Koreader on GitHub

    7-zip Windows (GUI), MacOS (command-line), Linux (command-line) www.7-zip.org

    Ip7z on GitHub

    7-zip can show the contents of .chm files as though they are a compressed archive, but does not render the HTML as a help-viewer.

    Creators

    [edit | edit source]

    Microsoft's HTML Help Workshop generates CHM files by instructions stored in an HTML Help project file, which bears a .HHP file name extension and is a specialized form of INI file.[12]

    Lazarus and Free Pascal provide a doxygen-like tool for CHM generation and a separate command-line compiler called chmcmd.

    Other utilities

    [edit | edit source]

    The official viewer in Microsoft Windows (hh.exe) can decompile a CHM file. So can Microsoft HTML Help Workshop and 7-Zip. Calibre and arCHMage can convert CHM into another format.

    See also

    [edit | edit source]

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]