Issue #23260: Update Windows installer
diff --git a/Tools/msi/tools/tools.wixproj b/Tools/msi/tools/tools.wixproj
new file mode 100644
index 0000000..18e6bab
--- /dev/null
+++ b/Tools/msi/tools/tools.wixproj
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{24CBEB95-BC1E-4EA9-AEA9-33834BCCD0EC}</ProjectGuid>
+        <SchemaVersion>2.0</SchemaVersion>
+        <OutputName>tools</OutputName>
+        <OutputType>Package</OutputType>
+    </PropertyGroup>
+    <Import Project="..\msi.props" />
+    <ItemGroup>
+        <Compile Include="*.wxs" />
+    </ItemGroup>
+    <ItemGroup>
+        <EmbeddedResource Include="*.wxl" />
+    </ItemGroup>
+    <ItemGroup>
+        <ToolDirectories Include="scripts;i18n;pynche;pynche\X;demo" />
+    </ItemGroup>
+    <ItemGroup>
+        <InstallFiles Include="$(PySourcePath)Tools\scripts\**\*.py;
+                               $(PySourcePath)Tools\scripts\**\*.pyw;
+                               $(PySourcePath)Tools\scripts\**\*.txt;
+                               $(PySourcePath)Tools\i18n\**\*.py;
+                               $(PySourcePath)Tools\i18n\**\*.pyw;
+                               $(PySourcePath)Tools\i18n\**\*.txt;
+                               $(PySourcePath)Tools\pynche\**\*.py;
+                               $(PySourcePath)Tools\pynche\**\*.pyw;
+                               $(PySourcePath)Tools\pynche\**\*.txt;
+                               $(PySourcePath)Tools\demo\**\*.py;
+                               $(PySourcePath)Tools\demo\**\*.pyw;
+                               $(PySourcePath)Tools\demo\**\*.txt;
+                               $(PySourcePath)Tools\parser\**\*.py">
+                <SourceBase>$(PySourcePath)</SourceBase>
+                <Source>!(bindpath.src)</Source>
+                <TargetBase>$(PySourcePath)</TargetBase>
+                <Target_></Target_>
+                <Group>tools_py</Group>
+        </InstallFiles>
+    </ItemGroup>
+    
+    <Import Project="..\msi.targets" />
+</Project>
\ No newline at end of file
diff --git a/Tools/msi/tools/tools.wxs b/Tools/msi/tools/tools.wxs
new file mode 100644
index 0000000..366d4c6
--- /dev/null
+++ b/Tools/msi/tools/tools.wxs
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+    <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
+        <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" />
+        <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
+        
+        <PropertyRef Id="UpgradeTable" />
+        
+        <Feature Id="DefaultFeature" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)">
+            <ComponentGroupRef Id="tools_py" />
+            <ComponentGroupRef Id="tools_scripts" />
+        </Feature>
+    </Product>
+</Wix>
diff --git a/Tools/msi/tools/tools_en-US.wxl b/Tools/msi/tools/tools_en-US.wxl
new file mode 100644
index 0000000..a138417
--- /dev/null
+++ b/Tools/msi/tools/tools_en-US.wxl
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+    <String Id="Descriptor">Utility Scripts</String>
+    <String Id="ShortDescriptor">tools</String>
+</WixLocalization>
diff --git a/Tools/msi/tools/tools_files.wxs b/Tools/msi/tools/tools_files.wxs
new file mode 100644
index 0000000..3ae0db2
--- /dev/null
+++ b/Tools/msi/tools/tools_files.wxs
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+    <Fragment>
+        <ComponentGroup Id="tools_scripts">
+            <Component Id="Tools_scripts_2to3.py" Directory="Tools_scripts" Guid="*">
+                <File Id="Tools_scripts_2to3.py" Name="2to3.py" Source="!(bindpath.src)Tools\scripts\2to3" />
+            </Component>
+            <Component Id="Tools_scripts_pydoc3.py" Directory="Tools_scripts" Guid="*">
+                <File Id="Tools_scripts_pydoc3.py" Name="pydoc3.py" Source="!(bindpath.src)Tools\scripts\pydoc3" />
+            </Component>
+            <Component Id="Tools_scripts_pyvenv.py" Directory="Tools_scripts" Guid="*">
+                <File Id="Tools_scripts_pyvenv.py" Name="pyvenv.py" Source="!(bindpath.src)Tools\scripts\pyvenv" />
+            </Component>
+        </ComponentGroup>
+    </Fragment>
+</Wix>