win32-build.txt
115 lines
| 3.9 KiB
| text/plain
|
TextLexer
|
r1291 | The standalone Windows installer for Mercurial is built in a somewhat | ||
jury-rigged fashion. | ||||
It has the following prerequisites, at least as I build it: | ||||
Python for Windows | ||||
|
r4401 | http://www.python.org/ftp/python/2.4.3/python-2.4.3.msi | ||
|
r1291 | |||
MinGW | ||||
http://www.mingw.org/ | ||||
Python for Windows Extensions | ||||
http://sourceforge.net/projects/pywin32/ | ||||
|
r8058 | mfc71.dll (just download, don't install; not needed for Python 2.6) | ||
|
r1291 | http://starship.python.net/crew/mhammond/win32/ | ||
|
r8058 | Visual C++ 2008 redistributable package (needed for Python 2.6) | ||
http://www.microsoft.com/downloads/details.aspx?familyid=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en | ||||
|
r1291 | The py2exe distutils extension | ||
http://sourceforge.net/projects/py2exe/ | ||||
|
r9175 | GnuWin32 gettext utility | ||
http://gnuwin32.sourceforge.net/packages/gettext.htm | ||||
|
r1291 | Inno Setup | ||
|
r9356 | http://www.jrsoftware.org/isdl.php#qsp | ||
Get and install ispack-5.3.4.exe which includes Inno Setup Processor, | ||||
which is necessary to package Mercurial. | ||||
|
r1291 | |||
|
r4401 | ISTool - optional | ||
|
r1291 | http://www.istool.org/default.aspx/ | ||
|
r2384 | add_path (you need only add_path.exe in the zip file) | ||
http://www.barisione.org/apps.html#add_path | ||||
|
r7660 | Asciidoc - optional | ||
http://www.methods.co.nz/asciidoc/ | ||||
|
r1291 | And, of course, Mercurial itself. | ||
Once you have all this installed and built, clone a copy of the | ||||
Mercurial repository you want to package, and name the repo | ||||
C:\hg\hg-release. | ||||
In a shell, build a standalone copy of the hg.exe program: | ||||
|
r5081 | python setup.py build -c mingw32 | ||
|
r4401 | python setup.py py2exe -b 1 | ||
Note: the previously suggested combined command of "python setup.py build -c | ||||
mingw32 py2exe -b 1" doesn't work correctly anymore as it doesn't include the | ||||
extensions in the mercurial subdirectory. | ||||
|
r1291 | |||
|
r4401 | If you want to create a file named setup.cfg with the contents: | ||
[build] | ||||
compiler=mingw32 | ||||
you can skip the first build step. | ||||
|
r8058 | Copy add_path.exe into the dist directory that just got created. | ||
If you are using Python up to version 2.5.4, copy mfc71.dll into the dist | ||||
directory that just got created. | ||||
If you are using Python 2.6 or later, after installing the Visual C++ 2008 | ||||
redistributable package copy into the dist directory that just got created the | ||||
following files: | ||||
- from the directory starting with | ||||
Windows/WinSxS/x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8 | ||||
the files named: msvcm90.dll, msvcp90.dll and msvcr90.dll | ||||
- from the directory starting with | ||||
Windows/WinSxS/x86_Microsoft.VC90.MFC_1fc8b3b9a1e18e3b_9.0.21022.8 | ||||
the files named: mfc90.dll, mfc90u.dll, mfcm90.dll and mfcm90u.dll | ||||
- from the directory named Windows/WinSxS/Manifests, the manifest file | ||||
starting with x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8 | ||||
(rename it to Microsoft.VC90.CRT.manifest) and the manifest file starting | ||||
with x86_Microsoft.VC90.MFC_1fc8b3b9a1e18e3b_9.0.21022.8 (rename it to | ||||
Microsoft.VC90.MFC.manifest) | ||||
|
r1291 | |||
|
r7660 | Before building the installer, you have to build Mercurial HTML documentation | ||
(or fix mercurial.iss to not reference the doc directory). Assuming you have an | ||||
"asciidoc.bat" batch file somewhere in your PATH: | ||||
cd doc | ||||
mingw32-make ASCIIDOC=asciidoc.bat html | ||||
cd .. | ||||
|
r4401 | If you use ISTool, you open the C:\hg\hg-release\contrib\win32\mercurial.iss | ||
file and type Ctrl-F9 to compile the installer file. | ||||
|
r9356 | Otherwise you run the Inno Setup compiler. Assuming it's in the path | ||
you should execute: | ||||
|
r4401 | |||
|
r9356 | iscc contrib\win32\mercurial.iss /DVERSION=foo | ||
|
r4401 | |||
|
r9356 | Where 'foo' is the version number you would like to see in the | ||
'Add/Remove Applications' tool. The installer will be placed into | ||||
a directory named Output/ at the root of your repository. | ||||
|
r1291 | |||
|
r4401 | To automate the steps above you may want to create a batchfile based on the | ||
following: | ||||
echo [build] > setup.cfg | ||||
echo compiler=mingw32 >> setup.cfg | ||||
python setup.py py2exe -b 1 | ||||
|
r7660 | cd doc | ||
mingw32-make ASCIIDOC=asciidoc.bat html | ||||
cd .. | ||||
|
r9356 | iscc contrib\win32\mercurial.iss /DVERSION=snapshot | ||
|
r4401 | |||
and run it from the root of the hg repository (c:\hg\hg-release). | ||||