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="&quot;$(PythonExe)&quot; generate_md5.py @(UserFiles->'&quot;%(FullPath)&quot;',' ')" />
+    </Target>
+</Project>