Страницы

понедельник, 28 июня 2010 г.

Как мы делали chm справку для наших программ. Часть 1: теория

Заметил у Влада в блоге пост посвящённый созданию chm-справки с помощью Html Help Workshop и решил рассказать о своём опыте. Тем более что, в начале этого года я попробовал кучу редакторов для создания справки к программам и нашёл подходящий далеко не сразу. Сначала я хотел написать мини-обзор программ для создания chm справки, но при написании поста вдруг понял, что даже забыл какие из программ я тестировал, поэтому просто опишу историю написания хэлпа.

Одним весенним днём в наш программерский барак заглянуло начальство и сказало: "нужно сделать хэлп и интегрировать его в наши программы.". "Будет сделано!", дружно ответили программисты и устроили совещание. В ходе совещания были выявлены следующие типы справки:

  • WinHelp (старая добрая справка с расширением .hlp)
  • Html Help 1.x (.chm - Compiled Html Help)
  • Html Help 2.x (освновное расширение файла - .hxs) - формат справки использующийся в Visual Studio и последних версиях Delphi. Да, это та самая справка котороая так раздражает большинство пользователей, привыкших к быстрой и точной справке в старых версиях Delphi.
  • MS Help Viewer 1.0 - справочный движок для Visual Studio 2010. Выступает как замена формату MS Html Help 2.x. Самый новый.
  • Windows Vista Assistance Platform Help - вообще, этот формат мы даже не рассматривали. Просто он попался мне на глаза на сайте Helpware при написании поста и я решил его упомянуть.
  • Html, PDF и другие. В принципе, при нажатии F1 можно делать всё что угодно, в том числе открывать любые документы и вызывать любые программы. Так что, теоретически можно использовать и Html и Pdf и даже .doc-файлы. Другое дело, что организация поиска, просмотр содержимого и контроль за окном справки остаются на совести автора программы. Эти варианты мы всерьёз не рассматривали.

WinHelp мы решили не использовать как устаревший. К тому же программа для просмотра WinHelp файлов более не включается в состав Windows Vista и её требуется устанавливать отдельно (см. KB917607). Форматы MS Html Help 2.x и MS Help Viewer - предназначались только для Visual Studio, поэтому нам не подошли. Да и скажу честно, как человек привыкший к моментальному открытию справки в формате WinHelp и Chm, я так и не привык к тормозам справки Help 2.x в Delphi 2009/2010.

Вообще, ситуация выглядит довольно забавно, ведь оставшийся Html Help 1.x не поддерживают юникод на 100%. Хотя технически и возможно писать текст странички справки на нескольких языках, но полнотекстовый поиск и содержание будут работать корректно только с одним языком. Тем не менее, что-то же всё-таки надо выбрать, поэтому мы остановились на Html Help 1.x.

Далее мы стали искать удобный редактор для написания Chm Help-a в пределах 100$. Здесь стоит отметить, что изначально мы не знали о том, что Chm не поддерживает юникод полностью, поэтому наши тесты включали в себя создание в редакторе пары страниц, содержащих как русские так и латышские символы. Многие продукты вообще отказались генерировать справку для языка отличающегося от установленного на компьютере по умолчанию. Часть программ теряла латышские буквы, в заголовках страниц и содержании.

К сожалению, сейчас я не могу вспомнить все опробованные инструменты. Точно могу сказать, что смотрел Helpinator и HelpNDoc и они не прошли тестов. Такие продукты как InnovaSys HelpStudio (448$), Adobe RoboHelp (899$), Help&Manual (от 349$) мы не рассматривали из-за цены.

А остановили мы свой выбор на бесплатной программе для создания справки HelpMaker. Я опишу HelpMaker в следующем посте.

Также, мы вообще не рассматривали конвертеры, такие как Word2Hlp (OneClickHelp) или Word-2-Chm, заранее решив, что автоматически преобразовать Word-документ в chm ровно не сумеет никто. Как мне кажется сейчас, это было не самое разумное решение, и всё-таки следовало провести хотя бы пару тестов. Возможно, именно эти продукты позволили бы нам сэкономить кучу времени, потраченного на переформатирование статей.

Для интеграции справки в наши программы мы использовали юниты hh.pas и hh_util.pas с сайта http://helpware.net/delphi/. Там же доступен подробный туториал, описывающие теорию и практику работы с chm-справкой на самым низком уровне. Как это часто бывает, нигде в туториале не описаны базовые Delphi-классы-интерфейсы для интеграции справки в программу из юнита HelpIntfs.pas.

Ссылки по теме


  • Не знаю как вам, а мне очень интересно посмотреть на продукты конкуренты Delphi. Например на MS Visual Studio 2010, и поэтому я иногда просматриваю блог о MS VS2010.

Покупая программы по моим партнёрским ссылкам, вы помогаете мне поддерживать блог.

6 комментариев:

  1. Гм, chm-файл - это (грубо) просто набор HTML-файлов.

    В чём была проблема указать UTF-8 кодировкой в charset?

    ОтветитьУдалить
  2. В том, что никому не улыбалось вручную писать сотню html-файлов.
    Мы искали WYSIWYG редактор, который бы сгенерировал эти HTML-файлы за нас. И лично я не нашёл ни одного редактора, который бы сгенерировал эти HTML-ы в UTF-8 кодировке.

    К тому же, поддержка юникода в HTML Help ограничена:
    HTML Help version 1.3x can display Unicode-encoded content (by using the Microsoft Web Browser control). The use of different languages within the same topic is not supported, and can cause problems when using the table of contents and indexing features. The ability to index and search Unicode content is not currently supported, but this functionality is under consideration for future releases.
    Источник: KB269766, апрель, 2001.

    ОтветитьУдалить
  3. Я лет 10 тому назад тоже протестировал много программ для изготовления help-ов и доки. Остановил выбор на Help & Manual - ни разу не пожалел :)

    ОтветитьУдалить
  4. Я для интересу устанавливал Help&Manual и с ним-то как-раз проблем не было. И юникод поддерживался (в допустимых рамках), и язык для хэлпа можно указать любой. Но цена, оказалась за пределами нашего бюджета.

    ОтветитьУдалить
  5. Попробуйте Help & Manual 5, конечно он платный, но по сравнению с HelpMaker - выигрыш огромный, хотя бы по скорости компиляции справки. К сожалению бесплатный HelpMaker очень не радует нас показателями скорости сборки при больших объемах справки.
    Плюс Help & Manual 5 еще и в том что он предоставляет возможность выгрузки справки не только в формат chm но и в PDF и пр.

    ОтветитьУдалить
  6. Лучшего решения, чем "Help & Manual" просто не найти.

    ОтветитьУдалить