Create a Portable EXE from CHM: 3 Simple Tools Compared

Convert CHM to EXE Safely: Offline Options and Troubleshooting

Converting a CHM (Compiled HTML Help) file into an EXE can make your documentation portable and easier to distribute as a standalone help application. Below is a practical, offline-focused guide covering safe methods, recommended tools, and common troubleshooting steps.

1. Why convert CHM to EXE?

  • Portability: An EXE bundles the help viewer with content so recipients don’t need a separate CHM reader.
  • Controlled environment: Standalone EXE can restrict navigation and include a predefined UI.
  • Offline delivery: Useful when distributing documentation to air-gapped or restricted systems.

2. Safety considerations (offline focus)

  • Scan source CHM with antivirus before conversion.
  • Use reputable, offline tools—avoid online converters that require uploading files.
  • Keep original CHM backups in case conversion alters content.
  • Test the produced EXE in a sandbox or virtual machine before wide distribution.

3. Recommended offline tools

  • HelpScribble (Windows) — commercial authoring tool that can produce standalone help viewers.
  • HelpNDoc — can export CHM and create standalone viewers or wrapped EXE packages.
  • HVD (Help Viewer Designer) / Custom launcher approach — create a simple Windows launcher (AutoHotkey, .NET) that embeds the CHM and a viewer DLL.
  • Inno Setup or NSIS — package the CHM with a portable viewer and create an installer or single EXE wrapper.

4. Step-by-step: Simple EXE wrapper using NSIS (safe, offline)

  1. Install NSIS (Nullsoft Scriptable Install System) on your Windows machine.
  2. Obtain a portable CHM viewer (e.g., xCHM binary for Windows) or plan to use the compiled HTML Help viewer (hh.exe) present on many Windows systems. Prefer bundling a portable viewer to ensure compatibility.
  3. Place your MyHelp.chm and viewer executable in one folder.
  4. Create a basic NSIS script to extract files to a temporary folder and launch the viewer with the CHM:

Code

; Example NSIS script (save as build.nsi) Name “MyHelpViewer” OutFile “MyHelpViewer.exe” RequestExecutionLevel user SectionSetOutPath \(PLUGINSDIR File "viewer.exe" File "MyHelp.chm" ExecWait '"\)PLUGINSDIR\viewer.exe” “$PLUGINSDIR\MyHelp.chm”’ SectionEnd
  1. Build the EXE with the NSIS compiler.
  2. Test in a VM and on target machines.

5. Alternative: Create a custom launcher with AutoHotkey (.exe)

  • Write an AutoHotkey script that extracts the CHM to a temp folder and calls hh.exe or an embedded viewer.
  • Compile the AutoHotkey script to an EXE using the AutoHotkey compiler.
  • This approach is lightweight and fully offline.

6. Packaging as an installer vs single EXE

  • Single EXE wrappers are convenient but may trigger antivirus heuristics; code-signing reduces false positives.
  • Installer packages (Inno Setup, NSIS installer mode) are more transparent, allow installation paths, and are less likely to be blocked.

7. Troubleshooting

  • EXE won’t open CHM: ensure the viewer executable can access the CHM path (use absolute/temp paths when extracting).
  • CHM displays blank or “This program cannot display the webpage”: unblock the CHM (right-click → Properties → Unblock) or ensure local HTML help support is enabled.
  • Antivirus flags EXE: test with VirusTotal in offline-safe manner (or on isolated machine); sign

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *