htmldelphichmsandcastle

How Sandcastle Microsoft Help 2.0 documentation can be built for Delphi if Delphi can not provide assembly?


As far as I understand, then there are 3 help formats for Windows programmas:

  1. hlp - very old format, comes from RichText sources, not supported anymore
  2. chm - still supported format, comes from htm sources
  3. Microsoft Help 2.0 - the most modern format, that is used by Visual Studio, Embarcadero Delphi and many other programs.

I am trying to build Microsoft Help 2.0 test project https://github.com/misiam/Sandcastle-Sample with SandCastle https://github.com/EWSoftware/SHFB. It is the only Help 2.0 editor (at least open source) I am aware of. Even HelpAndManual program does not support the output in Help 2.0 format. But this SandCastle test project gives error:

SHFB: Error BE0065: BUILD FAILED: Project assembly does not exist: D:\Help\Sandcastle-Sample-master\SandcastleSample\SandcastleSample.Samples\bin\Debug\SandcastleSample.Samples.dll

So - I guess, that SandCastle expects some .NET assembly (dll or exe) for which it can provided introspection and from which it can extract some kind of documentation. But if I am making Delphi program and if I don't want to extract documentation from my exe file, then what I am expected to do? How can I ask SandCastle not to read into any binary files? Embarcadero and many other Delphi component vendors were able to produce their help files without such introspection, so, I guess, I should be able to do this as well.


Solution

  • As others have already commented HTMLHelp (HH) also known as Compiled Help Modules (.chm) is 20 years old but available and running on Windows 10. The runtime ships with Windows 95 and greater. You know - Microsoft have created other help systems since HTML Help (.chm) but they are tied to various systems.

    HTMLHelp is in "maintenance mode" for several years now. No new features are expected, and only critical updates will occur from now on. As far as I know there is no new help systems being developed at Microsoft.

    I think you could guess that CHM will be here for quite a lot longer given there is no replacement. MS Help 2 (used extensions see also: *.HXS) was only for VS 2002/2003/2005/2008 and all development has stopped. Some Delphi versions were delivered with *.hxs based help systems too.

    MS Help Viewer (.mshc) was promising but difficult to manage at the time. It was made mainly for companies like Microsoft who code their help from a database.

    You'll find some viewers and tools like MshcMigrate e.g. getting you from .CHM and .HxS -> .mshc.

    Some further information (handmade conceptual content):

    Sandcastle was designed to document code based on a set of XML comments and API information found in a reflection information file. As such, it requires at least one assembly in order to produce a help file containing API documentation. If you do not include at least one assembly with a namespace containing at least one public class, the help file cannot be produced.

    However, you can use the Additional Content Only Plug-In to produce a help file based on conceptual content alone. To do so, add the plug-in to the project via the Plug-Ins project property category, add conceptual content to the project, and build the help file. See the Conceptual Content topic for more information about how to utilize conceptual content.

    If required you may want open a small example copied from SandCastle Help File Builder: Search not working.