Generates and signs a self-extracting executable containing an embedded Python.
diff --git a/Tools/msi/make_zip.proj b/Tools/msi/make_zip.proj
new file mode 100644
index 0000000..d47de88
--- /dev/null
+++ b/Tools/msi/make_zip.proj
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectGuid>{10487945-15D1-4092-A214-338395C4116B}</ProjectGuid>
+ <OutputName>python</OutputName>
+ <OutputSuffix></OutputSuffix>
+ </PropertyGroup>
+
+ <Import Project="msi.props" />
+
+ <PropertyGroup>
+ <TargetName>python-$(PythonVersion)-embed-$(ArchName)</TargetName>
+ <TargetExt>.exe</TargetExt>
+ <TargetPath>$(OutputPath)\en-us\$(TargetName)$(TargetExt)</TargetPath>
+ <Arguments>"$(PythonExe)" "$(MSBuildThisFileDirectory)\make_zip.py"</Arguments>
+ <Arguments>$(Arguments) -e -o "$(TargetPath)" -t "$(IntermediateOutputPath)\zip_$(ArchName)" -a $(ArchName)</Arguments>
+ <Arguments Condition="Exists('$(RAR)')">$(Arguments) --rar "$(RAR)"</Arguments>
+ <Environment>set DOC_FILENAME=python$(PythonVersion).chm</Environment>
+ </PropertyGroup>
+
+ <Target Name="_Build">
+ <Exec Command="setlocal
+$(Environment)
+$(Arguments)" />
+ </Target>
+
+ <Target Name="AfterBuild" />
+ <Target Name="Build" DependsOnTargets="_Build;AfterBuild" />
+
+ <Target Name="ShowHashes">
+ <ItemGroup>
+ <UserFiles Include="@(File)" Condition="'%(File.CopyTo)' == '$(EXETarget)'" />
+ </ItemGroup>
+
+ <Exec Command=""$(PythonExe)" generate_md5.py @(UserFiles->'"%(FullPath)"',' ')" />
+ </Target>
+</Project>