chm.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sat, 19 Sep 2015 11:22:12 +0300
changeset 1759 6f62f6dccf2c
parent 1757 bf335700acbe
child 1760 9504cbe2020d
permissions -rw-r--r--
Microsoft HTML Help under Debian.

.. -*- coding: utf-8; -*-
.. include:: HEADER.rst

======
 CHM.
======
.. contents::

Spec.
=====

  http://www.nongnu.org/chmspec/
    HTML Help Projects.
  http://www.nongnu.org/chmspec/latest/
    Unofficial (Preliminary) HTML Help Specification.
  http://savannah.nongnu.org/projects/chmspec
    Unofficial CHM Specification.
  http://www.speakeasy.org/~russotto/chm/chmformat.html
    Matthew Russotto's Microsoft's HTML Help format description.
  http://msdn.microsoft.com/en-us/library/ms669980.aspx
    HTML Help Frequently Asked Questions.

Alternatives.
=============

  http://www.imendio.com/projects/devhelp/
                DevHelp is a GNOME based online help system aimed toward developers
  http://en.wikipedia.org/wiki/MHTML
                MHTML, short for MIME HTML

Microsoft HTML Help.
====================

  http://msdn.microsoft.com/en-us/library/ms669985
    Microsoft HTML Help Downloads.
  http://www.microsoft.com/en-us/download/details.aspx?id=21138
    HTML Help Workshop and Documentation.
  http://support.microsoft.com/kb/269766/
    INFO: Limited Unicode Support in HTML Help.

Microsoft HTML Help under Debian.
=================================

Set Wine's Windows version to Windows 2000 (or above) via ``winecfg``.

Install necessary dependency::

  $ winetricks mfc40

Alternatively manually download and install `Microsoft Foundation Classes update
<http://activex.microsoft.com/controls/vc/mfc40.cab>`_::

  $ wget http://activex.microsoft.com/controls/vc/mfc40.cab
  $ cabextract mfc40.cab
  $ wine mfc40.exe

Download `Microsoft HTML Help Workshop
<https://msdn.microsoft.com/en-us/library/ms669985.aspx>`_ and install it as
(from non-``noexec`` FS!!)::

  $ wine htmlhelp.exe

Install ``itircl.dll`` and ``itss.dll`` from ``hhupd.exe`` which available in
installer or in ``~/.wine/drive_c/Program Files/HTML Help Workshop/redist``::

  cabextract -F hhupd.exe htmlhelp.exe
  cabextract -F itircl.dll hhupd.exe
  cabextract -F itss.dll hhupd.exe
  cp -a itircl.dll ~/.wine/drive_c/windows/system32/
  cp -a itss.dll ~/.wine/drive_c/windows/system32/

You must add exception for ``hhc.exe`` and ``hhw.exe`` to use native variant of
``itss.dll`` via ``winecfg``. Note: don't set ``itss.dll`` to native by default
becase then ``wine hh`` wouldn't work.

See:

 * http://code.google.com/p/htmlhelp/wiki/HHW4Wine
 * https://appdb.winehq.org/objectManager.php?sClass=version&iId=2978
 * https://bugs.winehq.org/show_bug.cgi?id=7517

Viewer.
=======
::

  $ sudo apt-get install xchm
  $ sudo apt-get install gnochm

  $ wine hh $FILE

Decompiler.
===========

For Windows::

  cmd> hh.exe -decompile %OUTDIR% %INFILE%.chm
  cmd> 7z x -o%OUTDIR% %INFILE%.chm

Under Linux::

  $ 7z x -o$OUTDIR $INFILE.chm

  $ sudo apt-get install libchm-bin
  $ extract_chmLib $INFILE.chm $OUTDIR