There are two installation approaches for Mercurial on Windows.
One approach is to bundle Mercurial (using py2exe) into a tight package which can be installed under C:\Program Files\Mercurial and added to your PATH. For brevity, I'll call this the "Windows" approach, as this is the standard way to distribute Windows applications.
There are several installers available that follow the Windows approach. They are listed in Download#Windows section. Among them de-facto official installers built by Lee Cantey, but unlisted there is an unofficial "Batteries Included" installer that appends many extras needed to generate a fully functional first-time install (a diff and merge tool, a tcl interpreter for hgk, and a GUI commit tool).
Pros for the Windows approach:
- Single installer, everything under a single directory
- Predictable directory layout for Windows users
- Main hg.exe executable like in other cmdline tools
- Single application to manage/uninstall
Cons for the Windows approach:
- No access to PYTHONPATH
- Unable to install new Python extensions
- No access to python libs to provide required modules (e.g. bzr for convert extension)
- Difficult to debug in case of problems
- Every py2exe app gets it's own copy of python.dll, libs
The other approach is to install Mercurial as a python application. This means installing the full Python interpreter and it's libraries, and then installing Mercurial and it's dependencies as site-packages. We'll call this the "Python" approach. On most Unix/Linux systems, this is the recommended method for installing Python applications.
An example of an installer which follows the Python approach can be found here. This installer does not include any software inside it. Instead, it scans your machine to figure out what it needs and then downloads and installs just those parts and then assembles everything together into a coherent system.
Pros for the Python approach:
- Installer only needs to download missing pieces
- End-user has a fully functional python development environment
- It's easier to upgrade individual components
Cons for the Python approach:
- You end up with many apps installed (python, setuptools, pywin32, pyqt, mercurial, qct, kdiff3, etc)
- Less control over the entire install (users may modify/upgrade parts)
- Directory structure is unfamiliar to Windows users
- Will occupy more disk space than py2exe approach if Mercurial is your only Python-based app