# cppreference2mshelp: cppreference as offline Visual Studio help

> cppreference2mshelp turns the offline HTML archive of cppreference.com into the help formats that older Visual Studio versions expect, a signed cabinet for Microsoft Help and a compiled CHM for everything else. It is a small pile of scripts with a long list of prerequisites, and the readme documents both in unusual detail.

**myfreeer/cppreference2mshelp** — cppreference.com html archive  converter to microsoft help (for Visual Studio 2012+) and chm help (for Windows) 

- Repository: https://github.com/myfreeer/cppreference2mshelp
- Website: https://zh.cppreference.com
- Stars: 1,244 · Forks: 182
- Language: CSS
- License: MIT
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/myfreeer-cppreference2mshelp

## What problem this solves

The project is described as a converter from the cppreference.com HTML archive to Microsoft help for Windows Visual Studio 2012 and later, and to the older compiled help format for any Windows and even some other platforms.

The context is worth understanding, because it explains the shape of the tool. cppreference.com is the reference that C and C++ programmers actually use, it is a wiki with a translation into Chinese and other languages, and it can be downloaded as an offline archive. Visual Studio, in the versions this project targets, expected its documentation as a signed cabinet installed through the Microsoft Help system. Those two facts do not meet on their own.

So the project is a format bridge, and it is a bridge for a very specific pair of formats. The output is a cabinet file plus a manifest that the help system reads to install it, and for the other half of the story a compiled help file that Windows and several other platforms can open directly.

The homepage points at the Chinese edition of cppreference, and the topic list carries the Chinese translation alongside the C, C++, documentation, localisation and reference tags, which tells you that the Chinese translation of the archive is the case this was built for and the one the extra scripts in the repository address.

The primary language listed for the project is CSS, which is an odd thing to see at the top of a repository of command scripts and PHP. It reflects that the work is mostly about reshaping the archive's stylesheets and markup rather than about the documentation content itself.

## The prerequisites list is the real documentation

The prerequisite list runs to nine numbered items, and it is the most useful part of the readme because it tells you exactly how much machinery a Windows documentation build needs.

The first entry is the platform, and the tone is memorable. Windows x64, with a parenthetical, and then the honest correction that actually any system will work if you use other tools to make the cabinet file, make the zip file and digitally sign the cabinet for Visual Studio help, with a pointer to the HTML Help Workshop from Microsoft as the alternative for the compiled help route.

Then a PHP of at least 5.6.1, because the conversion scripts are PHP, and the cppreference.com offline archive in the HTML book format downloaded from the archives page, because the build starts from that archive rather than from the live site.

Next, the HTML Help Workshop from Microsoft, which is what compiles the help file, and the Tidy fixer together with the two Microsoft SDK tools, the signing tool and the cabinet maker, with the configuration file for Tidy in the repository.

Then the item that will stop most people: a digital certificate to sign the cabinets for Visual Studio help, because unsigned cabinets will not be installed. The compiled help file does not require a certificate, which is a meaningful difference between the two outputs.

The last three are Unix-flavoured. MSYS2 with a package line for the archiver, pip and lxml, GNU libiconv at 1.15 or later for the character set work, and premailer with the Qt bindings for the QCH help format.

That list is the honest state of a documentation toolchain: two vendor tools, a certificate authority, a Unix shell environment and a scripting language.

## What is actually in the repository

The file list is a good map of the pipeline, and the readme describes each piece in turn.

The two main command files do the whole job, one for the C documentation and one for the C++ documentation, and there are matching PowerShell scripts for producing the zip files. The configuration file for Tidy is there because the archive has to be converted from HTML to XHTML and because many of the pages have errors that have to be fixed.

The two manifest files for the Microsoft Help system are described as headers, and the readme explains that Microsoft Help gets the information it needs to install the help packs from them.

The PHP scripts are where the real work happens, and the author does not pretend otherwise. The XHTML maker is described as an ugly preprocessor script that fixes and converts thousands of HTML files from cppreference into XHTML and the Microsoft Help format. The CHM maker is another ugly script, and it produces three named artefacts: the table of contents, the keyword index and the HTML Help project file, and the readme says to launch that script directly to make the help file.

The two Microsoft tools, the cabinet maker and the signing tool, are checked into the repository rather than being expected on your machine, along with the Tidy executable and its library.

There is also a shell script for making the CHM and an English variant of it, plus a shell script that preprocesses the Chinese pages.

## The Visual Studio build, step by step

The step-by-step instructions are concrete, and the timings are the detail that tells you what you are in for.

Download the offline archive and unpack it, and note that only the HTML book format is acceptable. Then download this repository and unpack it into the reference folder inside the unpacked archive. The expected folder structure is shown in a screenshot, and the readme explains the division: the common and en folders come from the cppreference archive and every other folder is created by the scripts.

Then you run the scripts and build the documentation, and the readme gives the timing: more than two hundred seconds for the C++ documentation with four thousand files, and a good deal less for the C documentation.

The result is two new files in that folder, the cabinet for C++ and the one for C, and they are used with the two manifest files to install the created help files.

So the whole pipeline is: acquire the archive, drop the tooling in, run one command, wait a few minutes, and install the output. The complexity is all in the prerequisites, not in the steps, which is a good structure for a project like this.

## Prebuilt artefacts, and the caveat about them

Two notes in the readme are about things you can use without running anything.

The first is that the repository contains pre-built and signed files that are ready to install into Visual Studio 2012 and Visual Studio 2013, and then the parenthetical that the author cannot test it right now, mentions 2015 and 2017 as possibilities, and asks people to report back. That is a useful and honest thing to see: the prebuilt artefacts are for the versions the author could test, and the more recent ones are a hopeful extrapolation.

The second note is that a pre-built CHM file is also included in the repository, so the compiled help route needs no build at all.

And then there is the trap. The readme says the HTML Help Workshop will not work correctly if you do not associate the project files with it, and that you will get a lot of errors with a specific code, which is the kind of message that sends people looking in the wrong place. The fix is to associate the project file with the workshop, and the readme tells you so, but the error itself does not.

Taken together, the three notes are the readme being careful. It tells you what is prebuilt, what is tested, and what will bite you.

## The Chinese translation pipeline lives in the diff files

The extra scripts in the repository are about the Chinese archive, and the way they are packaged is unusual and interesting.

There is a shell script for preprocessing the Chinese pages, a set of patch files, and a CSS directory. The patches are named for what they do: one for the Chinese layout, one for a specific translation, one that strips the CSS, one for the mail merging tool, and one called the upstream layout, which suggests it is a patch against the original archive structure rather than against the project itself.

There are also two Python scripts at the root, one named for fixing a mirror and one named for verifying HTML resources. The second one is the interesting one, because verification is exactly what a translation pipeline needs and what a hand-maintained patch set usually lacks: after preprocessing, the pages have to be checked to make sure the resources they reference still resolve.

The readme does not document any of this, which is a fair criticism. The translation route is the part of the project that a Chinese user is most likely to want, and it is the part with the least explanation, apart from the fact that the scripts are in the repository and their names are descriptive.

For an evaluator, that is the first thing to dig into, because the English path is a solved problem with prebuilt outputs, while the Chinese path is where the project is still doing work.

## Release cadence and the shape of the project

The project publishes on a slow, dated cadence, and the naming makes the year obvious.

The releases are 2024.09 in September 2024, 2025.04 in April 2025 and 2026.05 in May 2026, and the last push was on 2026-05-03 with the repository not archived. The release badge points at the latest release page, and there is a downloads badge for the total number of downloads from the releases.

So the project is maintained on an annual or twice-yearly cycle, which matches the nature of the work. It depends on an external archive that changes when cppreference publishes a new snapshot, and on a set of Microsoft tools that change when Microsoft ships a new SDK, so there is rarely a reason to release more often than the archive or the tooling moves.

The licence is MIT, the default branch is master, and the repository layout is a mix of the converter itself and the tooling it needs. There are the command scripts, the PHP converters, the PowerShell zip helpers, the two Microsoft executables and the Tidy binary checked in, the patch files for the Chinese layout, the Python verification scripts, and the image showing the expected folder structure.

Checking binaries into the repository is what makes this project work as a single download, and it is also what makes it a repository you would not want to fork casually, since the executables are part of the deliverable rather than a build artefact. The readme's own advice, that any system will work if you bring your own tools, is the right posture for anybody who wants to modify it.

## Conclusion

cppreference2mshelp is worth using if you are on a Visual Studio 2012 or 2013 installation and want the C and C++ reference available offline, because the prebuilt files in the repository are already signed and ready to install. It is a poor fit if you want the help installed into a Visual Studio release newer than the ones the prebuilt packages target, or if you want to keep the archive up to date, since the build needs the offline archive from cppreference and a set of Microsoft SDK tools. Before you run anything, read the prerequisites rather than the quick steps, because the digital certificate for the cabinets and the HTML Help Workshop are the two things that will stop you.

## FAQ

### What does cppreference2mshelp convert and into what?

It converts the cppreference.com offline HTML archive into the Microsoft Help format for Visual Studio 2012 and later, producing a signed cabinet file plus a manifest for installation, and into compiled CHM help for any Windows and some other platforms. A QCH route is also mentioned, using the Qt bindings.

### What do I need before I can build the Visual Studio help files?

The offline cppreference archive in HTML book format, PHP 5.6.1 or newer, the HTML Help Workshop from Microsoft, Tidy, the signing and cabinet tools from the Microsoft SDK, and a digital certificate, because unsigned cabinets will not be installed. The compiled CHM route does not need a certificate.

### Are there prebuilt help files in the repository?

Yes. The readme says the repository contains pre-built and signed files ready to install into Visual Studio 2012 and 2013, with 2015 and 2017 mentioned as untested, and a pre-built CHM file is included as well.

### How long does the conversion take?

The readme gives more than two hundred seconds for the C++ documentation with four thousand files, and a good deal less for the C documentation. The steps are to unpack the offline archive, drop the repository into its reference folder, and run the command script.

## Sources

- [License: MIT](https://github.com/myfreeer/cppreference2mshelp/blob/master/LICENSE)
- [myfreeer/cppreference2mshelp on GitHub](https://github.com/myfreeer/cppreference2mshelp)
- [Project website](https://zh.cppreference.com)
- [README](https://github.com/myfreeer/cppreference2mshelp/blob/master/README.md)
- [Releases](https://github.com/myfreeer/cppreference2mshelp/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/myfreeer-cppreference2mshelp
