Show More
@@ -1,61 +1,61 | |||||
1 | Requirements |
|
1 | Requirements | |
2 | ============ |
|
2 | ============ | |
3 |
|
3 | |||
4 | Building the Inno installer requires a Windows machine. |
|
4 | Building the Inno installer requires a Windows machine. | |
5 |
|
5 | |||
6 | The following system dependencies must be installed: |
|
6 | The following system dependencies must be installed: | |
7 |
|
7 | |||
8 | * Python 2.7 (download from https://www.python.org/downloads/) |
|
8 | * Python 2.7 (download from https://www.python.org/downloads/) | |
9 | * Microsoft Visual C++ Compiler for Python 2.7 |
|
9 | * Microsoft Visual C++ Compiler for Python 2.7 | |
10 | (https://www.microsoft.com/en-us/download/details.aspx?id=44266) |
|
10 | (https://www.microsoft.com/en-us/download/details.aspx?id=44266) | |
11 | * Inno Setup (http://jrsoftware.org/isdl.php) version 5.4 or newer. |
|
11 | * Inno Setup (http://jrsoftware.org/isdl.php) version 5.4 or newer. | |
12 | Be sure to install the optional Inno Setup Preprocessor feature, |
|
12 | Be sure to install the optional Inno Setup Preprocessor feature, | |
13 | which is required. |
|
13 | which is required. | |
14 | * Python 3.5+ (to run the ``packaging.py`` script) |
|
14 | * Python 3.5+ (to run the ``packaging.py`` script) | |
15 |
|
15 | |||
16 | Building |
|
16 | Building | |
17 | ======== |
|
17 | ======== | |
18 |
|
18 | |||
19 | The ``packaging.py`` script automates the process of producing an |
|
19 | The ``packaging.py`` script automates the process of producing an | |
20 | Inno installer. It manages fetching and configuring the |
|
20 | Inno installer. It manages fetching and configuring the | |
21 | non-system dependencies (such as py2exe, gettext, and various |
|
21 | non-system dependencies (such as py2exe, gettext, and various | |
22 | Python packages). |
|
22 | Python packages). | |
23 |
|
23 | |||
24 | The script requires an activated ``Visual C++ 2008`` command prompt. |
|
24 | The script requires an activated ``Visual C++ 2008`` command prompt. | |
25 | A shortcut to such a prompt was installed with ``Microsoft Visual C++ |
|
25 | A shortcut to such a prompt was installed with ``Microsoft Visual C++ | |
26 | Compiler for Python 2.7``. From your Start Menu, look for |
|
26 | Compiler for Python 2.7``. From your Start Menu, look for | |
27 | ``Microsoft Visual C++ Compiler Package for Python 2.7`` then launch |
|
27 | ``Microsoft Visual C++ Compiler Package for Python 2.7`` then launch | |
28 | either ``Visual C++ 2008 32-bit Command Prompt`` or |
|
28 | either ``Visual C++ 2008 32-bit Command Prompt`` or | |
29 | ``Visual C++ 2008 64-bit Command Prompt``. |
|
29 | ``Visual C++ 2008 64-bit Command Prompt``. | |
30 |
|
30 | |||
31 | From the prompt, change to the Mercurial source directory. e.g. |
|
31 | From the prompt, change to the Mercurial source directory. e.g. | |
32 | ``cd c:\src\hg``. |
|
32 | ``cd c:\src\hg``. | |
33 |
|
33 | |||
34 | Next, invoke ``packaging.py`` to produce an Inno installer. You will |
|
34 | Next, invoke ``packaging.py`` to produce an Inno installer. You will | |
35 | need to supply the path to the Python interpreter to use.:: |
|
35 | need to supply the path to the Python interpreter to use.:: | |
36 |
|
36 | |||
37 |
$ py |
|
37 | $ py -3 contrib\packaging\packaging.py \ | |
38 | inno --python c:\python27\python.exe |
|
38 | inno --python c:\python27\python.exe | |
39 |
|
39 | |||
40 | .. note:: |
|
40 | .. note:: | |
41 |
|
41 | |||
42 | The script validates that the Visual C++ environment is |
|
42 | The script validates that the Visual C++ environment is | |
43 | active and that the architecture of the specified Python |
|
43 | active and that the architecture of the specified Python | |
44 | interpreter matches the Visual C++ environment and errors |
|
44 | interpreter matches the Visual C++ environment and errors | |
45 | if not. |
|
45 | if not. | |
46 |
|
46 | |||
47 | If everything runs as intended, dependencies will be fetched and |
|
47 | If everything runs as intended, dependencies will be fetched and | |
48 | configured into the ``build`` sub-directory, Mercurial will be built, |
|
48 | configured into the ``build`` sub-directory, Mercurial will be built, | |
49 | and an installer placed in the ``dist`` sub-directory. The final |
|
49 | and an installer placed in the ``dist`` sub-directory. The final | |
50 | line of output should print the name of the generated installer. |
|
50 | line of output should print the name of the generated installer. | |
51 |
|
51 | |||
52 | Additional options may be configured. Run |
|
52 | Additional options may be configured. Run | |
53 | ``packaging.py inno --help`` to see a list of program flags. |
|
53 | ``packaging.py inno --help`` to see a list of program flags. | |
54 |
|
54 | |||
55 | MinGW |
|
55 | MinGW | |
56 | ===== |
|
56 | ===== | |
57 |
|
57 | |||
58 | It is theoretically possible to generate an installer that uses |
|
58 | It is theoretically possible to generate an installer that uses | |
59 | MinGW. This isn't well tested and ``packaging.py`` and may properly |
|
59 | MinGW. This isn't well tested and ``packaging.py`` and may properly | |
60 | support it. See old versions of this file in version control for |
|
60 | support it. See old versions of this file in version control for | |
61 | potentially useful hints as to how to achieve this. |
|
61 | potentially useful hints as to how to achieve this. |
@@ -1,152 +1,153 | |||||
1 | <?xml version='1.0' encoding='windows-1252'?> |
|
1 | <?xml version='1.0' encoding='windows-1252'?> | |
2 | <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> |
|
2 | <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> | |
3 |
|
3 | |||
4 | <!-- Copyright 2010 Steve Borho <steve@borho.org> |
|
4 | <!-- Copyright 2010 Steve Borho <steve@borho.org> | |
5 |
|
5 | |||
6 | This software may be used and distributed according to the terms of the |
|
6 | This software may be used and distributed according to the terms of the | |
7 | GNU General Public License version 2 or any later version. --> |
|
7 | GNU General Public License version 2 or any later version. --> | |
8 |
|
8 | |||
9 | <?include guids.wxi ?> |
|
9 | <?include guids.wxi ?> | |
10 | <?include defines.wxi ?> |
|
10 | <?include defines.wxi ?> | |
11 |
|
11 | |||
12 | <?if $(var.Platform) = "x64" ?> |
|
12 | <?if $(var.Platform) = "x64" ?> | |
13 | <?define PFolder = ProgramFiles64Folder ?> |
|
13 | <?define PFolder = ProgramFiles64Folder ?> | |
14 | <?else?> |
|
14 | <?else?> | |
15 | <?define PFolder = ProgramFilesFolder ?> |
|
15 | <?define PFolder = ProgramFilesFolder ?> | |
16 | <?endif?> |
|
16 | <?endif?> | |
17 |
|
17 | |||
18 | <Product Id='*' |
|
18 | <Product Id='*' | |
19 | Name='Mercurial $(var.Version) ($(var.Platform))' |
|
19 | Name='Mercurial $(var.Version) ($(var.Platform))' | |
20 | UpgradeCode='$(var.ProductUpgradeCode)' |
|
20 | UpgradeCode='$(var.ProductUpgradeCode)' | |
21 | Language='1033' Codepage='1252' Version='$(var.Version)' |
|
21 | Language='1033' Codepage='1252' Version='$(var.Version)' | |
22 | Manufacturer='Matt Mackall and others'> |
|
22 | Manufacturer='Matt Mackall and others'> | |
23 |
|
23 | |||
24 | <Package Id='*' |
|
24 | <Package Id='*' | |
25 | Keywords='Installer' |
|
25 | Keywords='Installer' | |
26 | Description="Mercurial distributed SCM (version $(var.Version))" |
|
26 | Description="Mercurial distributed SCM (version $(var.Version))" | |
27 | Comments='$(var.Comments)' |
|
27 | Comments='$(var.Comments)' | |
28 | Platform='$(var.Platform)' |
|
28 | Platform='$(var.Platform)' | |
29 | Manufacturer='Matt Mackall and others' |
|
29 | Manufacturer='Matt Mackall and others' | |
30 | InstallerVersion='300' Languages='1033' Compressed='yes' SummaryCodepage='1252' /> |
|
30 | InstallerVersion='300' Languages='1033' Compressed='yes' SummaryCodepage='1252' /> | |
31 |
|
31 | |||
32 | <Media Id='1' Cabinet='mercurial.cab' EmbedCab='yes' DiskPrompt='CD-ROM #1' |
|
32 | <Media Id='1' Cabinet='mercurial.cab' EmbedCab='yes' DiskPrompt='CD-ROM #1' | |
33 | CompressionLevel='high' /> |
|
33 | CompressionLevel='high' /> | |
34 | <Property Id='DiskPrompt' Value="Mercurial $(var.Version) Installation [1]" /> |
|
34 | <Property Id='DiskPrompt' Value="Mercurial $(var.Version) Installation [1]" /> | |
35 |
|
35 | |||
36 | <Condition Message='Mercurial MSI installers require Windows XP or higher'> |
|
36 | <Condition Message='Mercurial MSI installers require Windows XP or higher'> | |
37 | VersionNT >= 501 |
|
37 | VersionNT >= 501 | |
38 | </Condition> |
|
38 | </Condition> | |
39 |
|
39 | |||
40 | <Property Id="INSTALLDIR"> |
|
40 | <Property Id="INSTALLDIR"> | |
41 | <ComponentSearch Id='SearchForMainExecutableComponent' |
|
41 | <ComponentSearch Id='SearchForMainExecutableComponent' | |
42 |
Guid='$(var.ComponentMainExecutableGUID)' |
|
42 | Guid='$(var.ComponentMainExecutableGUID)' | |
|
43 | Type='directory' /> | |||
43 | </Property> |
|
44 | </Property> | |
44 |
|
45 | |||
45 | <!--Property Id='ARPCOMMENTS'>any comments</Property--> |
|
46 | <!--Property Id='ARPCOMMENTS'>any comments</Property--> | |
46 | <Property Id='ARPCONTACT'>mercurial@mercurial-scm.org</Property> |
|
47 | <Property Id='ARPCONTACT'>mercurial@mercurial-scm.org</Property> | |
47 | <Property Id='ARPHELPLINK'>https://mercurial-scm.org/wiki/</Property> |
|
48 | <Property Id='ARPHELPLINK'>https://mercurial-scm.org/wiki/</Property> | |
48 | <Property Id='ARPURLINFOABOUT'>https://mercurial-scm.org/about/</Property> |
|
49 | <Property Id='ARPURLINFOABOUT'>https://mercurial-scm.org/about/</Property> | |
49 | <Property Id='ARPURLUPDATEINFO'>https://mercurial-scm.org/downloads/</Property> |
|
50 | <Property Id='ARPURLUPDATEINFO'>https://mercurial-scm.org/downloads/</Property> | |
50 | <Property Id='ARPHELPTELEPHONE'>https://mercurial-scm.org/wiki/Support</Property> |
|
51 | <Property Id='ARPHELPTELEPHONE'>https://mercurial-scm.org/wiki/Support</Property> | |
51 | <Property Id='ARPPRODUCTICON'>hgIcon.ico</Property> |
|
52 | <Property Id='ARPPRODUCTICON'>hgIcon.ico</Property> | |
52 |
|
53 | |||
53 | <Property Id='INSTALLEDMERCURIALPRODUCTS' Secure='yes'></Property> |
|
54 | <Property Id='INSTALLEDMERCURIALPRODUCTS' Secure='yes'></Property> | |
54 | <Property Id='REINSTALLMODE'>amus</Property> |
|
55 | <Property Id='REINSTALLMODE'>amus</Property> | |
55 |
|
56 | |||
56 | <!--Auto-accept the license page--> |
|
57 | <!--Auto-accept the license page--> | |
57 | <Property Id='LicenseAccepted'>1</Property> |
|
58 | <Property Id='LicenseAccepted'>1</Property> | |
58 |
|
59 | |||
59 | <Directory Id='TARGETDIR' Name='SourceDir'> |
|
60 | <Directory Id='TARGETDIR' Name='SourceDir'> | |
60 | <Directory Id='$(var.PFolder)' Name='PFiles'> |
|
61 | <Directory Id='$(var.PFolder)' Name='PFiles'> | |
61 | <Directory Id='INSTALLDIR' Name='Mercurial'> |
|
62 | <Directory Id='INSTALLDIR' Name='Mercurial'> | |
62 | <Component Id='MainExecutable' Guid='$(var.ComponentMainExecutableGUID)' Win64='$(var.IsX64)'> |
|
63 | <Component Id='MainExecutable' Guid='$(var.ComponentMainExecutableGUID)' Win64='$(var.IsX64)'> | |
63 | <CreateFolder /> |
|
64 | <CreateFolder /> | |
64 | <Environment Id="Environment" Name="PATH" Part="last" System="yes" |
|
65 | <Environment Id="Environment" Name="PATH" Part="last" System="yes" | |
65 | Permanent="no" Value="[INSTALLDIR]" Action="set" /> |
|
66 | Permanent="no" Value="[INSTALLDIR]" Action="set" /> | |
66 | </Component> |
|
67 | </Component> | |
67 | </Directory> |
|
68 | </Directory> | |
68 | </Directory> |
|
69 | </Directory> | |
69 |
|
70 | |||
70 | <Directory Id="ProgramMenuFolder" Name="Programs"> |
|
71 | <Directory Id="ProgramMenuFolder" Name="Programs"> | |
71 | <Directory Id="ProgramMenuDir" Name="Mercurial $(var.Version)"> |
|
72 | <Directory Id="ProgramMenuDir" Name="Mercurial $(var.Version)"> | |
72 | <Component Id="ProgramMenuDir" Guid="$(var.ProgramMenuDir.guid)" Win64='$(var.IsX64)'> |
|
73 | <Component Id="ProgramMenuDir" Guid="$(var.ProgramMenuDir.guid)" Win64='$(var.IsX64)'> | |
73 | <RemoveFolder Id='ProgramMenuDir' On='uninstall' /> |
|
74 | <RemoveFolder Id='ProgramMenuDir' On='uninstall' /> | |
74 | <RegistryValue Root='HKCU' Key='Software\Mercurial\InstallDir' Type='string' |
|
75 | <RegistryValue Root='HKCU' Key='Software\Mercurial\InstallDir' Type='string' | |
75 | Value='[INSTALLDIR]' KeyPath='yes' /> |
|
76 | Value='[INSTALLDIR]' KeyPath='yes' /> | |
76 | <Shortcut Id='UrlShortcut' Directory='ProgramMenuDir' Name='Mercurial Web Site' |
|
77 | <Shortcut Id='UrlShortcut' Directory='ProgramMenuDir' Name='Mercurial Web Site' | |
77 | Target='[ARPHELPLINK]' Icon="hgIcon.ico" IconIndex='0' /> |
|
78 | Target='[ARPHELPLINK]' Icon="hgIcon.ico" IconIndex='0' /> | |
78 | </Component> |
|
79 | </Component> | |
79 | </Directory> |
|
80 | </Directory> | |
80 | </Directory> |
|
81 | </Directory> | |
81 |
|
82 | |||
82 | <!-- Install VCRedist merge modules on Python 2. On Python 3, |
|
83 | <!-- Install VCRedist merge modules on Python 2. On Python 3, | |
83 | vcruntimeXXX.dll is part of the install layout and gets picked up |
|
84 | vcruntimeXXX.dll is part of the install layout and gets picked up | |
84 | as a regular file. --> |
|
85 | as a regular file. --> | |
85 | <?if $(var.PythonVersion) = "2" ?> |
|
86 | <?if $(var.PythonVersion) = "2" ?> | |
86 | <?if $(var.Platform) = "x86" ?> |
|
87 | <?if $(var.Platform) = "x86" ?> | |
87 | <Merge Id='VCRuntime' DiskId='1' Language='1033' |
|
88 | <Merge Id='VCRuntime' DiskId='1' Language='1033' | |
88 | SourceFile='$(var.VCRedistSrcDir)\microsoft.vcxx.crt.x86_msm.msm' /> |
|
89 | SourceFile='$(var.VCRedistSrcDir)\microsoft.vcxx.crt.x86_msm.msm' /> | |
89 | <Merge Id='VCRuntimePolicy' DiskId='1' Language='1033' |
|
90 | <Merge Id='VCRuntimePolicy' DiskId='1' Language='1033' | |
90 | SourceFile='$(var.VCRedistSrcDir)\policy.x.xx.microsoft.vcxx.crt.x86_msm.msm' /> |
|
91 | SourceFile='$(var.VCRedistSrcDir)\policy.x.xx.microsoft.vcxx.crt.x86_msm.msm' /> | |
91 | <?else?> |
|
92 | <?else?> | |
92 | <Merge Id='VCRuntime' DiskId='1' Language='1033' |
|
93 | <Merge Id='VCRuntime' DiskId='1' Language='1033' | |
93 | SourceFile='$(var.VCRedistSrcDir)\microsoft.vcxx.crt.x64_msm.msm' /> |
|
94 | SourceFile='$(var.VCRedistSrcDir)\microsoft.vcxx.crt.x64_msm.msm' /> | |
94 | <Merge Id='VCRuntimePolicy' DiskId='1' Language='1033' |
|
95 | <Merge Id='VCRuntimePolicy' DiskId='1' Language='1033' | |
95 | SourceFile='$(var.VCRedistSrcDir)\policy.x.xx.microsoft.vcxx.crt.x64_msm.msm' /> |
|
96 | SourceFile='$(var.VCRedistSrcDir)\policy.x.xx.microsoft.vcxx.crt.x64_msm.msm' /> | |
96 | <?endif?> |
|
97 | <?endif?> | |
97 | <?endif?> |
|
98 | <?endif?> | |
98 | </Directory> |
|
99 | </Directory> | |
99 |
|
100 | |||
100 | <Feature Id='Complete' Title='Mercurial' Description='The complete package' |
|
101 | <Feature Id='Complete' Title='Mercurial' Description='The complete package' | |
101 | Display='expand' Level='1' ConfigurableDirectory='INSTALLDIR' > |
|
102 | Display='expand' Level='1' ConfigurableDirectory='INSTALLDIR' > | |
102 | <Feature Id='MainProgram' Title='Program' Description='Mercurial command line app' |
|
103 | <Feature Id='MainProgram' Title='Program' Description='Mercurial command line app' | |
103 | Level='1' Absent='disallow' > |
|
104 | Level='1' Absent='disallow' > | |
104 | <ComponentRef Id='MainExecutable' /> |
|
105 | <ComponentRef Id='MainExecutable' /> | |
105 | <ComponentRef Id='ProgramMenuDir' /> |
|
106 | <ComponentRef Id='ProgramMenuDir' /> | |
106 | <ComponentGroupRef Id="hg.group.ROOT" /> |
|
107 | <ComponentGroupRef Id="hg.group.ROOT" /> | |
107 | <ComponentGroupRef Id="hg.group.defaultrc" /> |
|
108 | <ComponentGroupRef Id="hg.group.defaultrc" /> | |
108 | <ComponentGroupRef Id="hg.group.helptext" /> |
|
109 | <ComponentGroupRef Id="hg.group.helptext" /> | |
109 | <?ifdef MercurialHasLib?> |
|
110 | <?ifdef MercurialHasLib?> | |
110 | <ComponentGroupRef Id="hg.group.lib" /> |
|
111 | <ComponentGroupRef Id="hg.group.lib" /> | |
111 | <?endif?> |
|
112 | <?endif?> | |
112 | <ComponentGroupRef Id="hg.group.templates" /> |
|
113 | <ComponentGroupRef Id="hg.group.templates" /> | |
113 | <?if $(var.PythonVersion) = "2" ?> |
|
114 | <?if $(var.PythonVersion) = "2" ?> | |
114 | <MergeRef Id='VCRuntime' /> |
|
115 | <MergeRef Id='VCRuntime' /> | |
115 | <MergeRef Id='VCRuntimePolicy' /> |
|
116 | <MergeRef Id='VCRuntimePolicy' /> | |
116 | <?endif?> |
|
117 | <?endif?> | |
117 | </Feature> |
|
118 | </Feature> | |
118 | <?ifdef MercurialExtraFeatures?> |
|
119 | <?ifdef MercurialExtraFeatures?> | |
119 | <?foreach EXTRAFEAT in $(var.MercurialExtraFeatures)?> |
|
120 | <?foreach EXTRAFEAT in $(var.MercurialExtraFeatures)?> | |
120 | <FeatureRef Id="$(var.EXTRAFEAT)" /> |
|
121 | <FeatureRef Id="$(var.EXTRAFEAT)" /> | |
121 | <?endforeach?> |
|
122 | <?endforeach?> | |
122 | <?endif?> |
|
123 | <?endif?> | |
123 | <Feature Id='Locales' Title='Translations' Description='Translations' Level='1'> |
|
124 | <Feature Id='Locales' Title='Translations' Description='Translations' Level='1'> | |
124 | <ComponentGroupRef Id="hg.group.locale" /> |
|
125 | <ComponentGroupRef Id="hg.group.locale" /> | |
125 | </Feature> |
|
126 | </Feature> | |
126 | <Feature Id='Documentation' Title='Documentation' Description='HTML man pages' Level='1'> |
|
127 | <Feature Id='Documentation' Title='Documentation' Description='HTML man pages' Level='1'> | |
127 | <ComponentGroupRef Id="hg.group.doc" /> |
|
128 | <ComponentGroupRef Id="hg.group.doc" /> | |
128 | </Feature> |
|
129 | </Feature> | |
129 | <Feature Id='Misc' Title='Miscellaneous' Description='Contributed scripts' Level='1'> |
|
130 | <Feature Id='Misc' Title='Miscellaneous' Description='Contributed scripts' Level='1'> | |
130 | <ComponentGroupRef Id="hg.group.contrib" /> |
|
131 | <ComponentGroupRef Id="hg.group.contrib" /> | |
131 | </Feature> |
|
132 | </Feature> | |
132 | </Feature> |
|
133 | </Feature> | |
133 |
|
134 | |||
134 | <UIRef Id="WixUI_FeatureTree" /> |
|
135 | <UIRef Id="WixUI_FeatureTree" /> | |
135 | <UIRef Id="WixUI_ErrorProgressText" /> |
|
136 | <UIRef Id="WixUI_ErrorProgressText" /> | |
136 |
|
137 | |||
137 | <WixVariable Id="WixUILicenseRtf" Value="contrib\packaging\wix\COPYING.rtf" /> |
|
138 | <WixVariable Id="WixUILicenseRtf" Value="contrib\packaging\wix\COPYING.rtf" /> | |
138 |
|
139 | |||
139 | <Icon Id="hgIcon.ico" SourceFile="contrib/win32/mercurial.ico" /> |
|
140 | <Icon Id="hgIcon.ico" SourceFile="contrib/win32/mercurial.ico" /> | |
140 |
|
141 | |||
141 | <Upgrade Id='$(var.ProductUpgradeCode)'> |
|
142 | <Upgrade Id='$(var.ProductUpgradeCode)'> | |
142 | <UpgradeVersion |
|
143 | <UpgradeVersion | |
143 | IncludeMinimum='yes' Minimum='0.0.0' IncludeMaximum='no' OnlyDetect='no' |
|
144 | IncludeMinimum='yes' Minimum='0.0.0' IncludeMaximum='no' OnlyDetect='no' | |
144 | Property='INSTALLEDMERCURIALPRODUCTS' /> |
|
145 | Property='INSTALLEDMERCURIALPRODUCTS' /> | |
145 | </Upgrade> |
|
146 | </Upgrade> | |
146 |
|
147 | |||
147 | <InstallExecuteSequence> |
|
148 | <InstallExecuteSequence> | |
148 | <RemoveExistingProducts After='InstallInitialize'/> |
|
149 | <RemoveExistingProducts After='InstallInitialize'/> | |
149 | </InstallExecuteSequence> |
|
150 | </InstallExecuteSequence> | |
150 |
|
151 | |||
151 | </Product> |
|
152 | </Product> | |
152 | </Wix> |
|
153 | </Wix> |
@@ -1,71 +1,71 | |||||
1 | WiX Installer |
|
1 | WiX Installer | |
2 | ============= |
|
2 | ============= | |
3 |
|
3 | |||
4 | The files in this directory are used to produce an MSI installer using |
|
4 | The files in this directory are used to produce an MSI installer using | |
5 | the WiX Toolset (http://wixtoolset.org/). |
|
5 | the WiX Toolset (http://wixtoolset.org/). | |
6 |
|
6 | |||
7 | The MSI installers require elevated (admin) privileges due to the |
|
7 | The MSI installers require elevated (admin) privileges due to the | |
8 | installation of MSVC CRT libraries into the Windows system store. See |
|
8 | installation of MSVC CRT libraries into the Windows system store. See | |
9 | the Inno Setup installers in the ``inno`` sibling directory for installers |
|
9 | the Inno Setup installers in the ``inno`` sibling directory for installers | |
10 | that do not have this requirement. |
|
10 | that do not have this requirement. | |
11 |
|
11 | |||
12 | Requirements |
|
12 | Requirements | |
13 | ============ |
|
13 | ============ | |
14 |
|
14 | |||
15 | Building the WiX installers requires a Windows machine. The following |
|
15 | Building the WiX installers requires a Windows machine. The following | |
16 | dependencies must be installed: |
|
16 | dependencies must be installed: | |
17 |
|
17 | |||
18 | * Python 2.7 (download from https://www.python.org/downloads/) |
|
18 | * Python 2.7 (download from https://www.python.org/downloads/) | |
19 | * Microsoft Visual C++ Compiler for Python 2.7 |
|
19 | * Microsoft Visual C++ Compiler for Python 2.7 | |
20 | (https://www.microsoft.com/en-us/download/details.aspx?id=44266) |
|
20 | (https://www.microsoft.com/en-us/download/details.aspx?id=44266) | |
21 | * Python 3.5+ (to run the ``packaging.py`` script) |
|
21 | * Python 3.5+ (to run the ``packaging.py`` script) | |
22 |
|
22 | |||
23 | Building |
|
23 | Building | |
24 | ======== |
|
24 | ======== | |
25 |
|
25 | |||
26 | The ``packaging.py`` script automates the process of producing an MSI |
|
26 | The ``packaging.py`` script automates the process of producing an MSI | |
27 | installer. It manages fetching and configuring non-system dependencies |
|
27 | installer. It manages fetching and configuring non-system dependencies | |
28 | (such as py2exe, gettext, and various Python packages). |
|
28 | (such as py2exe, gettext, and various Python packages). | |
29 |
|
29 | |||
30 | The script requires an activated ``Visual C++ 2008`` command prompt. |
|
30 | The script requires an activated ``Visual C++ 2008`` command prompt. | |
31 | A shortcut to such a prompt was installed with ``Microsoft Visual |
|
31 | A shortcut to such a prompt was installed with ``Microsoft Visual | |
32 | C++ Compiler for Python 2.7``. From your Start Menu, look for |
|
32 | C++ Compiler for Python 2.7``. From your Start Menu, look for | |
33 | ``Microsoft Visual C++ Compiler Package for Python 2.7`` then |
|
33 | ``Microsoft Visual C++ Compiler Package for Python 2.7`` then | |
34 | launch either ``Visual C++ 2008 32-bit Command Prompt`` or |
|
34 | launch either ``Visual C++ 2008 32-bit Command Prompt`` or | |
35 | ``Visual C++ 2008 64-bit Command Prompt``. |
|
35 | ``Visual C++ 2008 64-bit Command Prompt``. | |
36 |
|
36 | |||
37 | From the prompt, change to the Mercurial source directory. e.g. |
|
37 | From the prompt, change to the Mercurial source directory. e.g. | |
38 | ``cd c:\src\hg``. |
|
38 | ``cd c:\src\hg``. | |
39 |
|
39 | |||
40 | Next, invoke ``packaging.py`` to produce an MSI installer. You will need |
|
40 | Next, invoke ``packaging.py`` to produce an MSI installer. You will need | |
41 | to supply the path to the Python interpreter to use.:: |
|
41 | to supply the path to the Python interpreter to use.:: | |
42 |
|
42 | |||
43 |
$ py |
|
43 | $ py -3 contrib\packaging\packaging.py \ | |
44 | wix --python c:\python27\python.exe |
|
44 | wix --python c:\python27\python.exe | |
45 |
|
45 | |||
46 | .. note:: |
|
46 | .. note:: | |
47 |
|
47 | |||
48 | The script validates that the Visual C++ environment is active and |
|
48 | The script validates that the Visual C++ environment is active and | |
49 | that the architecture of the specified Python interpreter matches the |
|
49 | that the architecture of the specified Python interpreter matches the | |
50 | Visual C++ environment. An error is raised otherwise. |
|
50 | Visual C++ environment. An error is raised otherwise. | |
51 |
|
51 | |||
52 | If everything runs as intended, dependencies will be fetched and |
|
52 | If everything runs as intended, dependencies will be fetched and | |
53 | configured into the ``build`` sub-directory, Mercurial will be built, |
|
53 | configured into the ``build`` sub-directory, Mercurial will be built, | |
54 | and an installer placed in the ``dist`` sub-directory. The final line |
|
54 | and an installer placed in the ``dist`` sub-directory. The final line | |
55 | of output should print the name of the generated installer. |
|
55 | of output should print the name of the generated installer. | |
56 |
|
56 | |||
57 | Additional options may be configured. Run ``packaging.py wix --help`` to |
|
57 | Additional options may be configured. Run ``packaging.py wix --help`` to | |
58 | see a list of program flags. |
|
58 | see a list of program flags. | |
59 |
|
59 | |||
60 | Relationship to TortoiseHG |
|
60 | Relationship to TortoiseHG | |
61 | ========================== |
|
61 | ========================== | |
62 |
|
62 | |||
63 | TortoiseHG uses the WiX files in this directory. |
|
63 | TortoiseHG uses the WiX files in this directory. | |
64 |
|
64 | |||
65 | The code for building TortoiseHG installers lives at |
|
65 | The code for building TortoiseHG installers lives at | |
66 | https://bitbucket.org/tortoisehg/thg-winbuild and is maintained by |
|
66 | https://bitbucket.org/tortoisehg/thg-winbuild and is maintained by | |
67 | Steve Borho (steve@borho.org). |
|
67 | Steve Borho (steve@borho.org). | |
68 |
|
68 | |||
69 | When changing behavior of the WiX installer, be sure to notify |
|
69 | When changing behavior of the WiX installer, be sure to notify | |
70 | the TortoiseHG Project of the changes so they have ample time |
|
70 | the TortoiseHG Project of the changes so they have ample time | |
71 | provide feedback and react to those changes. |
|
71 | provide feedback and react to those changes. |
@@ -1,72 +1,76 | |||||
1 | == New Features == |
|
1 | == New Features == | |
2 |
|
2 | |||
3 | * There is a new config section for templates used by hg commands. It |
|
3 | * There is a new config section for templates used by hg commands. It | |
4 | is called `[command-templates]`. Some existing config options have |
|
4 | is called `[command-templates]`. Some existing config options have | |
5 | been deprecated in favor of config options in the new |
|
5 | been deprecated in favor of config options in the new | |
6 | section. These are: `ui.logtemplate` to `command-templates.log`, |
|
6 | section. These are: `ui.logtemplate` to `command-templates.log`, | |
7 | `ui.graphnodetemplate` to `command-templates.graphnode`, |
|
7 | `ui.graphnodetemplate` to `command-templates.graphnode`, | |
8 | `ui.mergemarkertemplate` to `command-templates.mergemarker`, |
|
8 | `ui.mergemarkertemplate` to `command-templates.mergemarker`, | |
9 | `ui.pre-merge-tool-output-template` to |
|
9 | `ui.pre-merge-tool-output-template` to | |
10 | `command-templates.pre-merge-tool-output`. |
|
10 | `command-templates.pre-merge-tool-output`. | |
11 |
|
11 | |||
12 | * There is a new set of config options for the template used for the |
|
12 | * There is a new set of config options for the template used for the | |
13 | one-line commit summary displayed by various commands, such as `hg |
|
13 | one-line commit summary displayed by various commands, such as `hg | |
14 | rebase`. The main one is `command-templates.oneline-summary`. That |
|
14 | rebase`. The main one is `command-templates.oneline-summary`. That | |
15 | can be overridden per command with |
|
15 | can be overridden per command with | |
16 | `command-templates.oneline-summary.<command>`, where `<command>` |
|
16 | `command-templates.oneline-summary.<command>`, where `<command>` | |
17 | can be e.g. `rebase`. As part of this effort, the default format |
|
17 | can be e.g. `rebase`. As part of this effort, the default format | |
18 | from `hg rebase` was reorganized a bit. |
|
18 | from `hg rebase` was reorganized a bit. | |
19 |
|
19 | |||
20 | * `hg purge` is now a core command using `--confirm` by default. |
|
20 | * `hg purge` is now a core command using `--confirm` by default. | |
21 |
|
21 | |||
22 | * `hg strip`, from the strip extension, is now a core command, `hg |
|
22 | * `hg strip`, from the strip extension, is now a core command, `hg | |
23 | debugstrip`. The extension remains for compatibility. |
|
23 | debugstrip`. The extension remains for compatibility. | |
24 |
|
24 | |||
25 | * `hg diff` and `hg extdiff` now support `--from <rev>` and `--to <rev>` |
|
25 | * `hg diff` and `hg extdiff` now support `--from <rev>` and `--to <rev>` | |
26 | arguments as clearer alternatives to `-r <revs>`. `-r <revs>` has been |
|
26 | arguments as clearer alternatives to `-r <revs>`. `-r <revs>` has been | |
27 | deprecated. |
|
27 | deprecated. | |
28 |
|
28 | |||
29 | * The memory footprint per changeset during pull/unbundle |
|
29 | * The memory footprint per changeset during pull/unbundle | |
30 | operations has been further reduced. |
|
30 | operations has been further reduced. | |
31 |
|
31 | |||
32 | * There is a new internal merge tool called `internal:mergediff` (can |
|
32 | * There is a new internal merge tool called `internal:mergediff` (can | |
33 | be set as the value for the `merge` config in the `[ui]` |
|
33 | be set as the value for the `merge` config in the `[ui]` | |
34 | section). It resolves merges the same was as `internal:merge` and |
|
34 | section). It resolves merges the same was as `internal:merge` and | |
35 | `internal:merge3`, but it shows conflicts differently. Instead of |
|
35 | `internal:merge3`, but it shows conflicts differently. Instead of | |
36 | showing 2 or 3 snapshots of the conflicting pieces of code, it |
|
36 | showing 2 or 3 snapshots of the conflicting pieces of code, it | |
37 | shows one snapshot and a diff. This may be useful when at least one |
|
37 | shows one snapshot and a diff. This may be useful when at least one | |
38 | side of the conflict is similar to the base. The new marker style |
|
38 | side of the conflict is similar to the base. The new marker style | |
39 | is also supported by "premerge" as |
|
39 | is also supported by "premerge" as | |
40 | `merge-tools.<tool>.premerge=keep-mergediff`. |
|
40 | `merge-tools.<tool>.premerge=keep-mergediff`. | |
41 |
|
41 | |||
42 | * External hooks are now called with `HGPLAIN=1` preset. |
|
42 | * External hooks are now called with `HGPLAIN=1` preset. This has the side | |
|
43 | effect of ignoring aliases, templates, revsetaliases, and a few other config | |||
|
44 | options in any `hg` command spawned by the hook. The previous behavior | |||
|
45 | can be restored by setting HGPLAINEXCEPT appropriately in the parent process. | |||
|
46 | See `hg help environment` for the list of items, and how to set it. | |||
43 |
|
47 | |||
44 | * The `branchmap` cache is updated more intelligently and can be |
|
48 | * The `branchmap` cache is updated more intelligently and can be | |
45 | significantly faster for repositories with many branches and changesets. |
|
49 | significantly faster for repositories with many branches and changesets. | |
46 |
|
50 | |||
47 | * The `rev-branch-cache` is now updated incrementally whenever changesets |
|
51 | * The `rev-branch-cache` is now updated incrementally whenever changesets | |
48 | are added. |
|
52 | are added. | |
49 |
|
53 | |||
50 |
|
54 | |||
51 | == New Experimental Features == |
|
55 | == New Experimental Features == | |
52 |
|
56 | |||
53 | * `experimental.single-head-per-branch:public-changes-only` can be used |
|
57 | * `experimental.single-head-per-branch:public-changes-only` can be used | |
54 | restrict the single head check to public revision. This is useful for |
|
58 | restrict the single head check to public revision. This is useful for | |
55 | overlay repository that have both a publishing and non-publishing view |
|
59 | overlay repository that have both a publishing and non-publishing view | |
56 | of the same storage. |
|
60 | of the same storage. | |
57 |
|
61 | |||
58 |
|
62 | |||
59 | == Bug Fixes == |
|
63 | == Bug Fixes == | |
60 |
|
64 | |||
61 |
|
65 | |||
62 |
|
66 | |||
63 | == Backwards Compatibility Changes == |
|
67 | == Backwards Compatibility Changes == | |
64 |
|
68 | |||
65 | * `--force-lock` and `--force-wlock` options on `hg debuglock` command are |
|
69 | * `--force-lock` and `--force-wlock` options on `hg debuglock` command are | |
66 | renamed to `--force-free-lock` and `--force-free-wlock` respectively. |
|
70 | renamed to `--force-free-lock` and `--force-free-wlock` respectively. | |
67 |
|
71 | |||
68 |
|
72 | |||
69 | == Internal API Changes == |
|
73 | == Internal API Changes == | |
70 |
|
74 | |||
71 | * `changelog.branchinfo` is deprecated and will be removed after 5.8. |
|
75 | * `changelog.branchinfo` is deprecated and will be removed after 5.8. | |
72 | It is superseded by `changelogrevision.branchinfo`. |
|
76 | It is superseded by `changelogrevision.branchinfo`. |
@@ -1,72 +1,22 | |||||
1 | == New Features == |
|
1 | == New Features == | |
2 |
|
2 | |||
3 | * There is a new config section for templates used by hg commands. It |
|
|||
4 | is called `[command-templates]`. Some existing config options have |
|
|||
5 | been deprecated in favor of config options in the new |
|
|||
6 | section. These are: `ui.logtemplate` to `command-templates.log`, |
|
|||
7 | `ui.graphnodetemplate` to `command-templates.graphnode`, |
|
|||
8 | `ui.mergemarkertemplate` to `command-templates.mergemarker`, |
|
|||
9 | `ui.pre-merge-tool-output-template` to |
|
|||
10 | `command-templates.pre-merge-tool-output`. |
|
|||
11 |
|
||||
12 | * There is a new set of config options for the template used for the |
|
|||
13 | one-line commit summary displayed by various commands, such as `hg |
|
|||
14 | rebase`. The main one is `command-templates.oneline-summary`. That |
|
|||
15 | can be overridden per command with |
|
|||
16 | `command-templates.oneline-summary.<command>`, where `<command>` |
|
|||
17 | can be e.g. `rebase`. As part of this effort, the default format |
|
|||
18 | from `hg rebase` was reorganized a bit. |
|
|||
19 |
|
||||
20 | * `hg purge` is now a core command using `--confirm` by default. |
|
3 | * `hg purge` is now a core command using `--confirm` by default. | |
21 |
|
4 | |||
22 | * `hg strip`, from the strip extension, is now a core command, `hg |
|
|||
23 | debugstrip`. The extension remains for compatibility. |
|
|||
24 |
|
||||
25 | * `hg diff` and `hg extdiff` now support `--from <rev>` and `--to <rev>` |
|
|||
26 | arguments as clearer alternatives to `-r <revs>`. `-r <revs>` has been |
|
|||
27 | deprecated. |
|
|||
28 |
|
||||
29 | * The memory footprint per changeset during pull/unbundle |
|
|||
30 | operations has been further reduced. |
|
|||
31 |
|
||||
32 | * There is a new internal merge tool called `internal:mergediff` (can |
|
|||
33 | be set as the value for the `merge` config in the `[ui]` |
|
|||
34 | section). It resolves merges the same was as `internal:merge` and |
|
|||
35 | `internal:merge3`, but it shows conflicts differently. Instead of |
|
|||
36 | showing 2 or 3 snapshots of the conflicting pieces of code, it |
|
|||
37 | shows one snapshot and a diff. This may be useful when at least one |
|
|||
38 | side of the conflict is similar to the base. The new marker style |
|
|||
39 | is also supported by "premerge" as |
|
|||
40 | `merge-tools.<tool>.premerge=keep-mergediff`. |
|
|||
41 |
|
||||
42 | * External hooks are now called with `HGPLAIN=1` preset. |
|
|||
43 |
|
||||
44 | * The `branchmap` cache is updated more intelligently and can be |
|
|||
45 | significantly faster for repositories with many branches and changesets. |
|
|||
46 |
|
||||
47 | * The `rev-branch-cache` is now updated incrementally whenever changesets |
|
5 | * The `rev-branch-cache` is now updated incrementally whenever changesets | |
48 | are added. |
|
6 | are added. | |
49 |
|
7 | |||
50 |
|
8 | |||
51 | == New Experimental Features == |
|
9 | == New Experimental Features == | |
52 |
|
10 | |||
53 | * `experimental.single-head-per-branch:public-changes-only` can be used |
|
|||
54 | restrict the single head check to public revision. This is useful for |
|
|||
55 | overlay repository that have both a publishing and non-publishing view |
|
|||
56 | of the same storage. |
|
|||
57 |
|
||||
58 |
|
11 | |||
59 | == Bug Fixes == |
|
12 | == Bug Fixes == | |
60 |
|
13 | |||
61 |
|
14 | |||
62 |
|
15 | |||
63 | == Backwards Compatibility Changes == |
|
16 | == Backwards Compatibility Changes == | |
64 |
|
17 | |||
65 | * `--force-lock` and `--force-wlock` options on `hg debuglock` command are |
|
|||
66 | renamed to `--force-free-lock` and `--force-free-wlock` respectively. |
|
|||
67 |
|
||||
68 |
|
18 | |||
69 | == Internal API Changes == |
|
19 | == Internal API Changes == | |
70 |
|
20 | |||
71 | * `changelog.branchinfo` is deprecated and will be removed after 5.8. |
|
21 | * `changelog.branchinfo` is deprecated and will be removed after 5.8. | |
72 | It is superseded by `changelogrevision.branchinfo`. |
|
22 | It is superseded by `changelogrevision.branchinfo`. |
General Comments 0
You need to be logged in to leave comments.
Login now