Before I came across the SCM-Manager project, I had been looking into possibly writing my own similar app, probably initially only supporting Mercurial, and went through many of those documentation pages trying to get hgwebdir working. I was first trying to get it to work within IIS and failed, but later tried Tomcat's CGI support and was able to eventually get it to work. I think it was even working with just the pre-packaged Windows binaries of Python and Mercurial, not from source. I'll need to look back to see if I'm correct and can reproduce the install steps.
I've done some more experimentation, and my experience seems to match what you posted; lots of issues with binary modules when using the pre-compiled mercurial distribution, but success using the source with --pure, same versions as you listed.
With this approach, the steps seem relatively simple and reproducible... there's just a few too many of them for general usage. Maybe I'll try putting together an installer using IzPack that:
-Installs Python 2.6.6 (bundled in the installer)
-Runs the Mercurial pure source install (bundled in the installer, probably as a ZIP file)
-Optionally adds python and/or the hg to the PATH
Such an installer would provide a one-step install for a Windows setup compatible with running hgweb. Depending on the performance of the "pure" hg, it might make sense to include the Mercurial binary distribution in the bundle as well for better performance.
Ive done some more tests and at the end it works with the TortoiseHg 1.1.7 and Python 2.6.6. Mercurial uses .pyo files and Python seems to load those files only when it was started with -O. In the next days i will extend the SCM-Manager.
Tested your hg installer changes on Windows. Looks like a great approach. I tested with Python 2.6.6 and TortoiseHg 1.1.7 on Windows XP Pro. I then uninstalled everything, and tried again with Python 2.6.6 and a "pure" install of Mercurial from source. I added a minor patch to support that configuration as well. I then uninstalled everything, and tried again with Python 2.6.6 and the "Mercurial 1.7.2 Python 2.6 package" binary. This configuration also seemed to work.