# HG changeset patch # User Gregory Szorc # Date 1551666169 28800 # Node ID 765f836a948492fe992149d3e343396b8e809ebc # Parent 343968d5236da4375fc7199a6b0f0b5556b269d4 inno: move inno installer files to contrib/packaging/inno Let's isolate the inno installer files to their own directory so the separation between things is clearer. This required adjusting a few relative paths and references to the old directory. Differential Revision: https://phab.mercurial-scm.org/D6059 diff -r 343968d5236d -r 765f836a9484 contrib/packaging/inno/mercurial.iss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/packaging/inno/mercurial.iss Sun Mar 03 18:22:49 2019 -0800 @@ -0,0 +1,120 @@ +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +#ifndef VERSION +#define FileHandle +#define FileLine +#define VERSION = "unknown" +#if FileHandle = FileOpen(SourcePath + "\..\..\..\mercurial\__version__.py") + #expr FileLine = FileRead(FileHandle) + #expr FileLine = FileRead(FileHandle) + #define VERSION = Copy(FileLine, Pos('"', FileLine)+1, Len(FileLine)-Pos('"', FileLine)-1) +#endif +#if FileHandle + #expr FileClose(FileHandle) +#endif +#pragma message "Detected Version: " + VERSION +#endif + +#ifndef ARCH +#define ARCH = "x86" +#endif + +[Setup] +AppCopyright=Copyright 2005-2019 Matt Mackall and others +AppName=Mercurial +AppVersion={#VERSION} +#if ARCH == "x64" +AppVerName=Mercurial {#VERSION} (64-bit) +OutputBaseFilename=Mercurial-{#VERSION}-x64 +ArchitecturesAllowed=x64 +ArchitecturesInstallIn64BitMode=x64 +#else +AppVerName=Mercurial {#VERSION} +OutputBaseFilename=Mercurial-{#VERSION} +#endif +InfoAfterFile=contrib/win32/postinstall.txt +LicenseFile=COPYING +ShowLanguageDialog=yes +AppPublisher=Matt Mackall and others +AppPublisherURL=https://mercurial-scm.org/ +AppSupportURL=https://mercurial-scm.org/ +AppUpdatesURL=https://mercurial-scm.org/ +AppID={{4B95A5F1-EF59-4B08-BED8-C891C46121B3} +AppContact=mercurial@mercurial-scm.org +DefaultDirName={pf}\Mercurial +SourceDir=..\..\.. +VersionInfoDescription=Mercurial distributed SCM (version {#VERSION}) +VersionInfoCopyright=Copyright 2005-2019 Matt Mackall and others +VersionInfoCompany=Matt Mackall and others +InternalCompressLevel=max +SolidCompression=true +SetupIconFile=contrib\win32\mercurial.ico +AllowNoIcons=true +DefaultGroupName=Mercurial +PrivilegesRequired=none + +[Files] +Source: contrib\mercurial.el; DestDir: {app}/Contrib +Source: contrib\vim\*.*; DestDir: {app}/Contrib/Vim +Source: contrib\zsh_completion; DestDir: {app}/Contrib +Source: contrib\bash_completion; DestDir: {app}/Contrib +Source: contrib\tcsh_completion; DestDir: {app}/Contrib +Source: contrib\tcsh_completion_build.sh; DestDir: {app}/Contrib +Source: contrib\hgk; DestDir: {app}/Contrib; DestName: hgk.tcl +Source: contrib\xml.rnc; DestDir: {app}/Contrib +Source: contrib\mercurial.el; DestDir: {app}/Contrib +Source: contrib\mq.el; DestDir: {app}/Contrib +Source: contrib\hgweb.fcgi; DestDir: {app}/Contrib +Source: contrib\hgweb.wsgi; DestDir: {app}/Contrib +Source: contrib\win32\ReadMe.html; DestDir: {app}; Flags: isreadme +Source: contrib\win32\postinstall.txt; DestDir: {app}; DestName: ReleaseNotes.txt +Source: dist\hg.exe; DestDir: {app}; AfterInstall: Touch('{app}\hg.exe.local') +#if ARCH == "x64" +Source: dist\lib\*.dll; Destdir: {app}\lib +Source: dist\lib\*.pyd; Destdir: {app}\lib +#else +Source: dist\w9xpopen.exe; DestDir: {app} +#endif +Source: dist\python*.dll; Destdir: {app}; Flags: skipifsourcedoesntexist +Source: dist\msvc*.dll; DestDir: {app}; Flags: skipifsourcedoesntexist +Source: dist\Microsoft.VC*.CRT.manifest; DestDir: {app}; Flags: skipifsourcedoesntexist +Source: dist\lib\library.zip; DestDir: {app}\lib +Source: dist\add_path.exe; DestDir: {app} +Source: doc\*.html; DestDir: {app}\Docs +Source: doc\style.css; DestDir: {app}\Docs +Source: mercurial\help\*.txt; DestDir: {app}\help +Source: mercurial\help\internals\*.txt; DestDir: {app}\help\internals +Source: mercurial\default.d\*.rc; DestDir: {app}\default.d +Source: mercurial\locale\*.*; DestDir: {app}\locale; Flags: recursesubdirs createallsubdirs skipifsourcedoesntexist +Source: mercurial\templates\*.*; DestDir: {app}\Templates; Flags: recursesubdirs createallsubdirs +Source: CONTRIBUTORS; DestDir: {app}; DestName: Contributors.txt +Source: COPYING; DestDir: {app}; DestName: Copying.txt + +[INI] +Filename: {app}\Mercurial.url; Section: InternetShortcut; Key: URL; String: https://mercurial-scm.org/ +Filename: {app}\default.d\editor.rc; Section: ui; Key: editor; String: notepad + +[UninstallDelete] +Type: files; Name: {app}\Mercurial.url +Type: filesandordirs; Name: {app}\default.d +Type: files; Name: "{app}\hg.exe.local" + +[Icons] +Name: {group}\Uninstall Mercurial; Filename: {uninstallexe} +Name: {group}\Mercurial Command Reference; Filename: {app}\Docs\hg.1.html +Name: {group}\Mercurial Configuration Files; Filename: {app}\Docs\hgrc.5.html +Name: {group}\Mercurial Ignore Files; Filename: {app}\Docs\hgignore.5.html +Name: {group}\Mercurial Web Site; Filename: {app}\Mercurial.url + +[Run] +Filename: "{app}\add_path.exe"; Parameters: "{app}"; Flags: postinstall; Description: "Add the installation path to the search path" + +[UninstallRun] +Filename: "{app}\add_path.exe"; Parameters: "/del {app}" + +[Code] +procedure Touch(fn: String); +begin + SaveStringToFile(ExpandConstant(fn), '', False); +end; diff -r 343968d5236d -r 765f836a9484 contrib/packaging/inno/readme.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/packaging/inno/readme.txt Sun Mar 03 18:22:49 2019 -0800 @@ -0,0 +1,131 @@ +The standalone Windows installer for Mercurial is built in a somewhat +jury-rigged fashion. + +It has the following prerequisites. Ensure to take the packages +matching the mercurial version you want to build (32-bit or 64-bit). + + Python 2.6 for Windows + http://www.python.org/download/releases/ + + A compiler: + either MinGW + http://www.mingw.org/ + or Microsoft Visual C++ 2008 SP1 Express Edition + http://www.microsoft.com/express/Downloads/Download-2008.aspx + + Python for Windows Extensions + http://sourceforge.net/projects/pywin32/ + + mfc71.dll (just download, don't install; not needed for Python 2.6) + http://starship.python.net/crew/mhammond/win32/ + + Visual C++ 2008 redistributable package (needed for >= Python 2.6 or if you compile with MSVC) + for 32-bit: + http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf + for 64-bit: + http://www.microsoft.com/downloads/details.aspx?familyid=bd2a6171-e2d6-4230-b809-9a8d7548c1b6 + + The py2exe distutils extension + http://sourceforge.net/projects/py2exe/ + + GnuWin32 gettext utility (if you want to build translations) + http://gnuwin32.sourceforge.net/packages/gettext.htm + + Inno Setup + http://www.jrsoftware.org/isdl.php#qsp + + Get and install ispack-5.3.10.exe or later (includes Inno Setup Processor), + which is necessary to package Mercurial. + + ISTool - optional + http://www.istool.org/default.aspx/ + + add_path (you need only add_path.exe in the zip file) + http://www.barisione.org/apps.html#add_path + + Docutils + http://docutils.sourceforge.net/ + + CA Certs file + http://curl.haxx.se/ca/cacert.pem + +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. + +Building instructions for MinGW: + python setup.py build -c mingw32 + python setup.py py2exe -b 2 +Note: the previously suggested combined command of "python setup.py build -c +mingw32 py2exe -b 2" doesn't work correctly anymore as it doesn't include the +extensions in the mercurial subdirectory. +If you want to create a file named setup.cfg with the contents: +[build] +compiler=mingw32 +you can skip the first build step. + +Building instructions with MSVC 2008 Express Edition: + for 32-bit: + "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 + python setup.py py2exe -b 2 + for 64-bit: + "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64 + python setup.py py2exe -b 3 + +Copy add_path.exe and cacert.pem files into the dist directory that just got created. + +If you are using Python 2.6 or later, or if you are using MSVC 2008 to compile +mercurial, you must include the C runtime libraries in the installer. To do so, +install the Visual C++ 2008 redistributable package. Then in your windows\winsxs +folder, locate the folder containing the dlls version 9.0.21022.8. +For x86, it should be named like x86_Microsoft.VC90.CRT_(...)_9.0.21022.8(...). +For x64, it should be named like amd64_Microsoft.VC90.CRT_(...)_9.0.21022.8(...). +Copy the files named msvcm90.dll, msvcp90.dll and msvcr90.dll into the dist +directory. +Then in the windows\winsxs\manifests folder, locate the corresponding manifest +file (x86_Microsoft.VC90.CRT_(...)_9.0.21022.8(...).manifest for x86, +amd64_Microsoft.VC90.CRT_(...)_9.0.21022.8(...).manifest for x64), copy it in the +dist directory and rename it to Microsoft.VC90.CRT.manifest. + +Before building the installer, you have to build Mercurial HTML documentation +(or fix mercurial.iss to not reference the doc directory): + + cd doc + mingw32-make html + cd .. + +If you use ISTool, you open the +C:\hg\hg-release\contrib\packaging\inno\mercurial.iss +file and type Ctrl-F9 to compile the installer file. + +Otherwise you run the Inno Setup compiler. Assuming it's in the path +you should execute: + + iscc contrib\packaging\inno\mercurial.iss /dVERSION=foo + +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. +If the /dVERSION=foo parameter is not given in the command line, the +installer will retrieve the version information from the __version__.py file. + +If you want to build an installer for a 64-bit mercurial, add /dARCH=x64 to +your command line: + iscc contrib\packaging\inno\mercurial.iss /dARCH=x64 + +To automate the steps above you may want to create a batchfile based on the +following (MinGW build chain): + + echo [build] > setup.cfg + echo compiler=mingw32 >> setup.cfg + python setup.py py2exe -b 2 + cd doc + mingw32-make html + cd .. + iscc contrib\packaging\inno\mercurial.iss /dVERSION=snapshot + +and run it from the root of the hg repository (c:\hg\hg-release). diff -r 343968d5236d -r 765f836a9484 contrib/win32/mercurial.iss --- a/contrib/win32/mercurial.iss Tue Mar 05 04:34:45 2019 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -#ifndef VERSION -#define FileHandle -#define FileLine -#define VERSION = "unknown" -#if FileHandle = FileOpen(SourcePath + "\..\..\mercurial\__version__.py") - #expr FileLine = FileRead(FileHandle) - #expr FileLine = FileRead(FileHandle) - #define VERSION = Copy(FileLine, Pos('"', FileLine)+1, Len(FileLine)-Pos('"', FileLine)-1) -#endif -#if FileHandle - #expr FileClose(FileHandle) -#endif -#pragma message "Detected Version: " + VERSION -#endif - -#ifndef ARCH -#define ARCH = "x86" -#endif - -[Setup] -AppCopyright=Copyright 2005-2019 Matt Mackall and others -AppName=Mercurial -AppVersion={#VERSION} -#if ARCH == "x64" -AppVerName=Mercurial {#VERSION} (64-bit) -OutputBaseFilename=Mercurial-{#VERSION}-x64 -ArchitecturesAllowed=x64 -ArchitecturesInstallIn64BitMode=x64 -#else -AppVerName=Mercurial {#VERSION} -OutputBaseFilename=Mercurial-{#VERSION} -#endif -InfoAfterFile=contrib/win32/postinstall.txt -LicenseFile=COPYING -ShowLanguageDialog=yes -AppPublisher=Matt Mackall and others -AppPublisherURL=https://mercurial-scm.org/ -AppSupportURL=https://mercurial-scm.org/ -AppUpdatesURL=https://mercurial-scm.org/ -AppID={{4B95A5F1-EF59-4B08-BED8-C891C46121B3} -AppContact=mercurial@mercurial-scm.org -DefaultDirName={pf}\Mercurial -SourceDir=..\.. -VersionInfoDescription=Mercurial distributed SCM (version {#VERSION}) -VersionInfoCopyright=Copyright 2005-2019 Matt Mackall and others -VersionInfoCompany=Matt Mackall and others -InternalCompressLevel=max -SolidCompression=true -SetupIconFile=contrib\win32\mercurial.ico -AllowNoIcons=true -DefaultGroupName=Mercurial -PrivilegesRequired=none - -[Files] -Source: contrib\mercurial.el; DestDir: {app}/Contrib -Source: contrib\vim\*.*; DestDir: {app}/Contrib/Vim -Source: contrib\zsh_completion; DestDir: {app}/Contrib -Source: contrib\bash_completion; DestDir: {app}/Contrib -Source: contrib\tcsh_completion; DestDir: {app}/Contrib -Source: contrib\tcsh_completion_build.sh; DestDir: {app}/Contrib -Source: contrib\hgk; DestDir: {app}/Contrib; DestName: hgk.tcl -Source: contrib\xml.rnc; DestDir: {app}/Contrib -Source: contrib\mercurial.el; DestDir: {app}/Contrib -Source: contrib\mq.el; DestDir: {app}/Contrib -Source: contrib\hgweb.fcgi; DestDir: {app}/Contrib -Source: contrib\hgweb.wsgi; DestDir: {app}/Contrib -Source: contrib\win32\ReadMe.html; DestDir: {app}; Flags: isreadme -Source: contrib\win32\postinstall.txt; DestDir: {app}; DestName: ReleaseNotes.txt -Source: dist\hg.exe; DestDir: {app}; AfterInstall: Touch('{app}\hg.exe.local') -#if ARCH == "x64" -Source: dist\lib\*.dll; Destdir: {app}\lib -Source: dist\lib\*.pyd; Destdir: {app}\lib -#else -Source: dist\w9xpopen.exe; DestDir: {app} -#endif -Source: dist\python*.dll; Destdir: {app}; Flags: skipifsourcedoesntexist -Source: dist\msvc*.dll; DestDir: {app}; Flags: skipifsourcedoesntexist -Source: dist\Microsoft.VC*.CRT.manifest; DestDir: {app}; Flags: skipifsourcedoesntexist -Source: dist\lib\library.zip; DestDir: {app}\lib -Source: dist\add_path.exe; DestDir: {app} -Source: doc\*.html; DestDir: {app}\Docs -Source: doc\style.css; DestDir: {app}\Docs -Source: mercurial\help\*.txt; DestDir: {app}\help -Source: mercurial\help\internals\*.txt; DestDir: {app}\help\internals -Source: mercurial\default.d\*.rc; DestDir: {app}\default.d -Source: mercurial\locale\*.*; DestDir: {app}\locale; Flags: recursesubdirs createallsubdirs skipifsourcedoesntexist -Source: mercurial\templates\*.*; DestDir: {app}\Templates; Flags: recursesubdirs createallsubdirs -Source: CONTRIBUTORS; DestDir: {app}; DestName: Contributors.txt -Source: COPYING; DestDir: {app}; DestName: Copying.txt - -[INI] -Filename: {app}\Mercurial.url; Section: InternetShortcut; Key: URL; String: https://mercurial-scm.org/ -Filename: {app}\default.d\editor.rc; Section: ui; Key: editor; String: notepad - -[UninstallDelete] -Type: files; Name: {app}\Mercurial.url -Type: filesandordirs; Name: {app}\default.d -Type: files; Name: "{app}\hg.exe.local" - -[Icons] -Name: {group}\Uninstall Mercurial; Filename: {uninstallexe} -Name: {group}\Mercurial Command Reference; Filename: {app}\Docs\hg.1.html -Name: {group}\Mercurial Configuration Files; Filename: {app}\Docs\hgrc.5.html -Name: {group}\Mercurial Ignore Files; Filename: {app}\Docs\hgignore.5.html -Name: {group}\Mercurial Web Site; Filename: {app}\Mercurial.url - -[Run] -Filename: "{app}\add_path.exe"; Parameters: "{app}"; Flags: postinstall; Description: "Add the installation path to the search path" - -[UninstallRun] -Filename: "{app}\add_path.exe"; Parameters: "/del {app}" - -[Code] -procedure Touch(fn: String); -begin - SaveStringToFile(ExpandConstant(fn), '', False); -end; diff -r 343968d5236d -r 765f836a9484 contrib/win32/win32-build.txt --- a/contrib/win32/win32-build.txt Tue Mar 05 04:34:45 2019 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -The standalone Windows installer for Mercurial is built in a somewhat -jury-rigged fashion. - -It has the following prerequisites. Ensure to take the packages -matching the mercurial version you want to build (32-bit or 64-bit). - - Python 2.6 for Windows - http://www.python.org/download/releases/ - - A compiler: - either MinGW - http://www.mingw.org/ - or Microsoft Visual C++ 2008 SP1 Express Edition - http://www.microsoft.com/express/Downloads/Download-2008.aspx - - Python for Windows Extensions - http://sourceforge.net/projects/pywin32/ - - mfc71.dll (just download, don't install; not needed for Python 2.6) - http://starship.python.net/crew/mhammond/win32/ - - Visual C++ 2008 redistributable package (needed for >= Python 2.6 or if you compile with MSVC) - for 32-bit: - http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf - for 64-bit: - http://www.microsoft.com/downloads/details.aspx?familyid=bd2a6171-e2d6-4230-b809-9a8d7548c1b6 - - The py2exe distutils extension - http://sourceforge.net/projects/py2exe/ - - GnuWin32 gettext utility (if you want to build translations) - http://gnuwin32.sourceforge.net/packages/gettext.htm - - Inno Setup - http://www.jrsoftware.org/isdl.php#qsp - - Get and install ispack-5.3.10.exe or later (includes Inno Setup Processor), - which is necessary to package Mercurial. - - ISTool - optional - http://www.istool.org/default.aspx/ - - add_path (you need only add_path.exe in the zip file) - http://www.barisione.org/apps.html#add_path - - Docutils - http://docutils.sourceforge.net/ - - CA Certs file - http://curl.haxx.se/ca/cacert.pem - -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. - -Building instructions for MinGW: - python setup.py build -c mingw32 - python setup.py py2exe -b 2 -Note: the previously suggested combined command of "python setup.py build -c -mingw32 py2exe -b 2" doesn't work correctly anymore as it doesn't include the -extensions in the mercurial subdirectory. -If you want to create a file named setup.cfg with the contents: -[build] -compiler=mingw32 -you can skip the first build step. - -Building instructions with MSVC 2008 Express Edition: - for 32-bit: - "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 - python setup.py py2exe -b 2 - for 64-bit: - "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64 - python setup.py py2exe -b 3 - -Copy add_path.exe and cacert.pem files into the dist directory that just got created. - -If you are using Python 2.6 or later, or if you are using MSVC 2008 to compile -mercurial, you must include the C runtime libraries in the installer. To do so, -install the Visual C++ 2008 redistributable package. Then in your windows\winsxs -folder, locate the folder containing the dlls version 9.0.21022.8. -For x86, it should be named like x86_Microsoft.VC90.CRT_(...)_9.0.21022.8(...). -For x64, it should be named like amd64_Microsoft.VC90.CRT_(...)_9.0.21022.8(...). -Copy the files named msvcm90.dll, msvcp90.dll and msvcr90.dll into the dist -directory. -Then in the windows\winsxs\manifests folder, locate the corresponding manifest -file (x86_Microsoft.VC90.CRT_(...)_9.0.21022.8(...).manifest for x86, -amd64_Microsoft.VC90.CRT_(...)_9.0.21022.8(...).manifest for x64), copy it in the -dist directory and rename it to Microsoft.VC90.CRT.manifest. - -Before building the installer, you have to build Mercurial HTML documentation -(or fix mercurial.iss to not reference the doc directory): - - cd doc - mingw32-make html - cd .. - -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. - -Otherwise you run the Inno Setup compiler. Assuming it's in the path -you should execute: - - iscc contrib\win32\mercurial.iss /dVERSION=foo - -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. -If the /dVERSION=foo parameter is not given in the command line, the -installer will retrieve the version information from the __version__.py file. - -If you want to build an installer for a 64-bit mercurial, add /dARCH=x64 to -your command line: - iscc contrib\win32\mercurial.iss /dARCH=x64 - -To automate the steps above you may want to create a batchfile based on the -following (MinGW build chain): - - echo [build] > setup.cfg - echo compiler=mingw32 >> setup.cfg - python setup.py py2exe -b 2 - cd doc - mingw32-make html - cd .. - iscc contrib\win32\mercurial.iss /dVERSION=snapshot - -and run it from the root of the hg repository (c:\hg\hg-release). diff -r 343968d5236d -r 765f836a9484 contrib/wix/README.txt --- a/contrib/wix/README.txt Tue Mar 05 04:34:45 2019 +0530 +++ b/contrib/wix/README.txt Sun Mar 03 18:22:49 2019 -0800 @@ -10,9 +10,7 @@ the only sane way to keep the source tree and the installer in sync. The MSI installer builder uses only the mercurial.ini file from the -contrib/win32 folder, the contents of which have been historically used -to create an InnoSetup based installer. The rest of the files there are -ignored. +contrib/win32 folder. The MSI packages built by thg-winbuild require elevated (admin) privileges to be installed due to the installation of MSVC CRT libraries