Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
c4b7600b
Commit
c4b7600b
authored
Oct 01, 2015
by
Steve Dower
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improves support for building unofficial versions of the Windows installer.
parent
d5963e61
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
99 additions
and
41 deletions
+99
-41
Tools/msi/buildrelease.bat
Tools/msi/buildrelease.bat
+29
-14
Tools/msi/bundle/bundle.targets
Tools/msi/bundle/bundle.targets
+4
-3
Tools/msi/bundle/bundle.wxs
Tools/msi/bundle/bundle.wxs
+2
-0
Tools/msi/bundle/packagegroups/launcher.wxs
Tools/msi/bundle/packagegroups/launcher.wxs
+4
-0
Tools/msi/bundle/packagegroups/packageinstall.wxs
Tools/msi/bundle/packagegroups/packageinstall.wxs
+26
-0
Tools/msi/bundle/packagegroups/pip.wxs
Tools/msi/bundle/packagegroups/pip.wxs
+25
-0
Tools/msi/bundle/packagegroups/postinstall.wxs
Tools/msi/bundle/packagegroups/postinstall.wxs
+0
-19
Tools/msi/msi.props
Tools/msi/msi.props
+9
-5
No files found.
Tools/msi/buildrelease.bat
View file @
c4b7600b
...
...
@@ -4,17 +4,28 @@
rem This script is intended for building official releases of Python.
rem To use it to build alternative releases, you should clone this file
rem and modify the following three URIs.
rem
rem The first two will ensure that your release can be installed
rem alongside an official Python release, while the second specifies
rem the URL that will be used to download installation files. The
rem files available from this URL *will* conflict with your installer.
rem Trust me, you don't want them, even if it seems like a good idea.
set
RELEASE_URI_X86
=
http
://www.python.org/win32
set
RELEASE_URI_X64
=
http
://www.python.org/amd64
set
DOWNLOAD_URL_BASE
=
https
://www.python.org/ftp/python
set
DOWNLOAD_URL
=
rem These two will ensure that your release can be installed
rem alongside an official Python release, by modifying the GUIDs used
rem for all components.
rem
rem The following substitutions will be applied to the release URI:
rem Variable Description Example
rem {arch} architecture amd64, win32
set
RELEASE_URI
=
http
://www.python.org/
{
arch
}
rem This is the URL that will be used to download installation files.
rem The files available from the default URL *will* conflict with your
rem installer. Trust me, you don't want them, even if it seems like a
rem good idea.
rem
rem The following substitutions will be applied to the download URL:
rem Variable Description Example
rem {version} version number 3.5.0
rem {arch} architecture amd64, win32
rem {releasename} release name a1, b2, rc3 (or blank for final)
rem {msi} MSI filename core.msi
set
DOWNLOAD_URL
=
https
://www.python.org/ftp/python/
{
version
}
/
{
arch
}{
releasename
}
/
{
msi
}
set
D
=
%~dp0
set
PCBUILD
=
%D%
..\..\PCBuild\
...
...
@@ -90,14 +101,12 @@ if "%1" EQU "x86" (
set
BUILD_PLAT
=
Win32
set
OUTDIR_PLAT
=
win32
set
OBJDIR_PLAT
=
x86
set
RELEASE_URI
=
%RELEASE
_URI_X86
%
)
ELSE
(
call
"
%PCBUILD%
env.bat"
x86_amd64
set
BUILD
=
%PCBUILD%
amd64
\
set
BUILD_PLAT
=
x64
set
OUTDIR_PLAT
=
amd64
set
OBJDIR_PLAT
=
x64
set
RELEASE_URI
=
%RELEASE
_URI_X64
%
)
if
exist
"
%BUILD%
en-us"
(
...
...
@@ -157,10 +166,16 @@ echo -x64 Build x64 installers
echo
-
-build
(
-b
)
Incrementally
build
Python
rather
than
rebuilding
echo
-
-skip-build
(
-B
)
Do
not
build
Python
(
just
do
the
installers
)
echo
-
-skip-doc
(
-D
)
Do
not
build
documentation
echo
-
-download
Specify
the
full
download
URL
for
MSIs
(
should
include
{
2
})
echo
-
-download
Specify
the
full
download
URL
for
MSIs
echo
-
-test
Specify
the
test
directory
to
run
the
installer
tests
echo
-h
Display
this
help
information
echo
.
echo
If
no
architecture
is
specified
,
all
architectures
will
be
built
.
echo
If
-
-test
is
not
specified
,
the
installer
tests
are
not
run
.
echo
.
\ No newline at end of file
echo
.
echo
The
following
substitutions
will
be
applied
to
the
download
URL
:
echo
Variable
Description
Example
echo
{
version
}
version
number
3
.5.0
echo
{
arch
}
architecture
amd64
,
win32
echo
{
releasename
}
release
name
a1
,
b2
,
rc3
(
or
blank
for
final
)
echo
{
msi
}
MSI
filename
core
.msi
Tools/msi/bundle/bundle.targets
View file @
c4b7600b
...
...
@@ -16,8 +16,9 @@
<OutputPath>
$(OutputPath)en-us\
</OutputPath>
<OutDir>
$(OutputPath)
</OutDir>
<DownloadUrl
Condition=
"'$(DownloadUrl)' == '' and '$(DownloadUrlBase)' != ''"
>
$(DownloadUrlBase.TrimEnd(`/`))/$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)/$(ArchName)$(ReleaseLevelName)/
</DownloadUrl>
<DefineConstants
Condition=
"'$(DownloadUrl)' != ''"
>
$(DefineConstants);DownloadUrl=$(DownloadUrl){2}
</DefineConstants>
<!-- See Tools/msi/buildrelease.bat for help on configuring the download URL -->
<DownloadUrl
Condition=
"'$(DownloadUrl)' == '' and '$(DownloadUrlBase)' != ''"
>
$(DownloadUrlBase.TrimEnd(`/`))/{version}/{arch}{releasename}/{msi}
</DownloadUrl>
<DefineConstants
Condition=
"'$(DownloadUrl)' != ''"
>
$(DefineConstants);DownloadUrl=$(DownloadUrl.Replace(`{version}`, `$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)`).Replace(`{arch}`, `$(ArchName)`).Replace(`{releasename}`, `$(ReleaseName)`).Replace(`{msi}`, `{2}`))
</DefineConstants>
<DefineConstants
Condition=
"'$(DownloadUrl)' == ''"
>
$(DefineConstants);DownloadUrl={2}
</DefineConstants>
</PropertyGroup>
...
...
@@ -88,7 +89,7 @@
<Target
Name=
"BuildLauncher"
BeforeTargets=
"BeforeBuild"
Condition=
"'$(RebuildAll)' != 'false'"
>
<!-- Build the launcher MSI using Exec rather than MSBuild -->
<Exec
Command=
'msbuild ..\launcher\launcher.wixproj /p:Platform=x86 /p:OutputPath="$(BuildPath.TrimEnd(`\`))" /p:OutputSuffix=$(Platform) /p:BuildForRelease=$(BuildForRelease) /p:UseTestMarker=$(UseTestMarker)'
<Exec
Command=
'msbuild ..\launcher\launcher.wixproj /p:Platform=x86 /p:
ReleaseUri="$(ReleaseUri)" /p:
OutputPath="$(BuildPath.TrimEnd(`\`))" /p:OutputSuffix=$(Platform) /p:BuildForRelease=$(BuildForRelease) /p:UseTestMarker=$(UseTestMarker)'
ContinueOnError=
"false"
/>
</Target>
...
...
Tools/msi/bundle/bundle.wxs
View file @
c4b7600b
...
...
@@ -85,6 +85,8 @@
<PackageGroupRef
Id=
"tools"
/>
<PackageGroupRef
Id=
"tcltk"
/>
<PackageGroupRef
Id=
"launcher"
/>
<PackageGroupRef
Id=
"pip"
/>
<PackageGroupRef
Id=
"packageinstall"
/>
<PackageGroupRef
Id=
"postinstall"
/>
</Chain>
</Bundle>
...
...
Tools/msi/bundle/packagegroups/launcher.wxs
View file @
c4b7600b
...
...
@@ -9,6 +9,8 @@
DownloadUrl=
"$(var.DownloadUrl)"
ForcePerMachine=
"yes"
EnableFeatureSelection=
"yes"
Permanent=
"yes"
Visible=
"yes"
InstallCondition=
"(InstallAllUsers or InstallLauncherAllUsers) and Include_launcher"
/>
<MsiPackage
Id=
"launcher_JustForMe"
...
...
@@ -17,6 +19,8 @@
DownloadUrl=
"$(var.DownloadUrl)"
ForcePerMachine=
"no"
EnableFeatureSelection=
"yes"
Permanent=
"yes"
Visible=
"yes"
InstallCondition=
"not (InstallAllUsers or InstallLauncherAllUsers) and Include_launcher"
/>
</PackageGroup>
</Fragment>
...
...
Tools/msi/bundle/packagegroups/packageinstall.wxs
0 → 100644
View file @
c4b7600b
<?xml version="1.0"?>
<Wix
xmlns=
"http://schemas.microsoft.com/wix/2006/wi"
>
<Fragment>
<PackageGroup
Id=
"packageinstall"
>
<!--
This is an example of installing a package using pip as part of main install.
For a network-only install, remove the Payload element and change the install
command to specify the package and (optionally) version specifier.
<ExePackage Id="requests"
SourceFile="py.exe"
Compressed="yes"
DisplayName="!(loc.CompileAllDescription)"
InstallCommand='-$(var.ShortVersion)$(var.Suffix32) -m pip install requests-2.7.0-py2.py3-none-any.whl'
UninstallCommand='-$(var.ShortVersion)$(var.Suffix32) -m pip uninstall -y requests'
Vital="no"
InstallCondition="Include_pip and not LauncherOnly">
<Payload SourceFile="requests-2.7.0-py2.py3-none-any.whl"
Compressed="$(var.CompressMSI)"
DownloadUrl="$(var.DownloadUrl)" />
</ExePackage>
-->
</PackageGroup>
</Fragment>
</Wix>
\ No newline at end of file
Tools/msi/bundle/packagegroups/pip.wxs
0 → 100644
View file @
c4b7600b
<?xml version="1.0"?>
<Wix
xmlns=
"http://schemas.microsoft.com/wix/2006/wi"
>
<Fragment>
<PackageGroup
Id=
"pip"
>
<MsiPackage
Id=
"pip_AllUsers"
SourceFile=
"pip.msi"
Compressed=
"$(var.CompressMSI)"
DownloadUrl=
"$(var.DownloadUrl)"
ForcePerMachine=
"yes"
InstallCondition=
"InstallAllUsers and Include_pip and not LauncherOnly"
>
<MsiProperty
Name=
"TARGETDIR"
Value=
"[TargetDir]"
/>
<MsiProperty
Name=
"OPTIONALFEATURESREGISTRYKEY"
Value=
"[OptionalFeaturesRegistryKey]"
/>
</MsiPackage>
<MsiPackage
Id=
"pip_JustForMe"
SourceFile=
"pip.msi"
Compressed=
"$(var.CompressMSI)"
DownloadUrl=
"$(var.DownloadUrl)"
ForcePerMachine=
"no"
InstallCondition=
"not InstallAllUsers and Include_pip and not LauncherOnly"
>
<MsiProperty
Name=
"TARGETDIR"
Value=
"[TargetDir]"
/>
<MsiProperty
Name=
"OPTIONALFEATURESREGISTRYKEY"
Value=
"[OptionalFeaturesRegistryKey]"
/>
</MsiPackage>
</PackageGroup>
</Fragment>
</Wix>
\ No newline at end of file
Tools/msi/bundle/packagegroups/postinstall.wxs
View file @
c4b7600b
...
...
@@ -2,25 +2,6 @@
<Wix
xmlns=
"http://schemas.microsoft.com/wix/2006/wi"
>
<Fragment>
<PackageGroup
Id=
"postinstall"
>
<MsiPackage
Id=
"pip_AllUsers"
SourceFile=
"pip.msi"
Compressed=
"$(var.CompressMSI)"
DownloadUrl=
"$(var.DownloadUrl)"
ForcePerMachine=
"yes"
InstallCondition=
"InstallAllUsers and Include_pip and not LauncherOnly"
>
<MsiProperty
Name=
"TARGETDIR"
Value=
"[TargetDir]"
/>
<MsiProperty
Name=
"OPTIONALFEATURESREGISTRYKEY"
Value=
"[OptionalFeaturesRegistryKey]"
/>
</MsiPackage>
<MsiPackage
Id=
"pip_JustForMe"
SourceFile=
"pip.msi"
Compressed=
"$(var.CompressMSI)"
DownloadUrl=
"$(var.DownloadUrl)"
ForcePerMachine=
"no"
InstallCondition=
"not InstallAllUsers and Include_pip and not LauncherOnly"
>
<MsiProperty
Name=
"TARGETDIR"
Value=
"[TargetDir]"
/>
<MsiProperty
Name=
"OPTIONALFEATURESREGISTRYKEY"
Value=
"[OptionalFeaturesRegistryKey]"
/>
</MsiPackage>
<MsiPackage
Id=
"path_AllUsers"
SourceFile=
"path.msi"
Compressed=
"$(var.CompressMSI)"
...
...
Tools/msi/msi.props
View file @
c4b7600b
...
...
@@ -11,6 +11,12 @@
<Configuration
Condition=
"'$(Configuration)' == ''"
>
Release
</Configuration>
<Platform
Condition=
"'$(Platform)' == ''"
>
x86
</Platform>
<InstallScope
Condition=
"'$(InstallScope)' != 'perMachine'"
>
perUser
</InstallScope>
</PropertyGroup>
<Import
Project=
"wix.props"
/>
<Import
Project=
"..\..\PCBuild\tcltk.props"
/>
<PropertyGroup>
<!--
This URI is used to generate the various GUIDs used by the installer.
Installers built with the same URI will upgrade each other or block
...
...
@@ -21,17 +27,15 @@
that intend to bundle Python should rebuild these modules with their
own URI to avoid conflicting with the official releases.
The official releases
are built with http://www.python.org/.
The official releases
use "http://www.python.org/$(ArchName)"
This is not the same as the DownloadUrl property used in the bundle
projects.
-->
<ReleaseUri
Condition=
"'$(ReleaseUri)' == ''"
>
$(ComputerName)
</ReleaseUri>
<ReleaseUri
Condition=
"'$(ReleaseUri)' == ''"
>
$(ComputerName)
/$(ArchName)/
</ReleaseUri>
<ReleaseUri
Condition=
"!$(ReleaseUri.EndsWith(`/`))"
>
$(ReleaseUri)/
</ReleaseUri>
</PropertyGroup>
<Import
Project=
"wix.props"
/>
<Import
Project=
"..\..\PCBuild\tcltk.props"
/>
<ItemGroup>
<Compile
Include=
"$(MSBuildThisFileDirectory)common.wxs"
/>
...
...
@@ -150,7 +154,7 @@
<Target
Name=
"_GenerateGuids"
AfterTargets=
"PrepareForBuild"
>
<PropertyGroup>
<_Uuids>
@(_Uuid->'("%(Identity)", "$(MajorVersionNumber).$(MinorVersionNumber)/%(Uri)")',',')
</_Uuids>
<_GenerateCommand>
import uuid; print('\n'.join('{}={}'.format(i, uuid.uuid5(uuid.UUID('c8d9733e-a70c-43ff-ab0c-e26456f11083'), '$(ReleaseUri)' + j)) for i,j in [$(_Uuids.Replace(`"`,`'`))]))
</_GenerateCommand>
<_GenerateCommand>
import uuid; print('\n'.join('{}={}'.format(i, uuid.uuid5(uuid.UUID('c8d9733e-a70c-43ff-ab0c-e26456f11083'), '$(ReleaseUri
.Replace(`{arch}`, `$(ArchName)`)
)' + j)) for i,j in [$(_Uuids.Replace(`"`,`'`))]))
</_GenerateCommand>
</PropertyGroup>
<Exec
Command=
'"$(PythonExe)" -c "$(_GenerateCommand)" > "$(IntermediateOutputPath)$(OutputName)guids.txt"'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment