Adds pydoc shortcut, Edit with IDLE menu, moves redist folder into externals and fixes test script.
diff --git a/Tools/msi/tcltk/tcltk.wxs b/Tools/msi/tcltk/tcltk.wxs
index 819fccb..4a0d80f 100644
--- a/Tools/msi/tcltk/tcltk.wxs
+++ b/Tools/msi/tcltk/tcltk.wxs
@@ -8,18 +8,24 @@
         <PropertyRef Id="REGISTRYKEY" />
         
         <Property Id="PYTHON_EXE" Secure="yes">
-            <ComponentSearch Id="PythonExe" Guid="$(var.PythonwExeComponentGuid)">
+            <ComponentSearch Id="PythonExe" Guid="$(var.PythonExeComponentGuid)">
+                <FileSearch Name="python.exe" />
+            </ComponentSearch>
+        </Property>
+        
+        <Property Id="PYTHONW_EXE" Secure="yes">
+            <ComponentSearch Id="PythonwExe" Guid="$(var.PythonwExeComponentGuid)">
                 <FileSearch Name="pythonw.exe" />
             </ComponentSearch>
         </Property>
         
-        <Condition Message="!(loc.NoPython)">PYTHON_EXE</Condition>
+        <Condition Message="!(loc.NoPython)">PYTHON_EXE and PYTHONW_EXE</Condition>
 
         <Feature Id="DefaultFeature" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)">
             <ComponentGroupRef Id="tkinter_extension" />
             <ComponentGroupRef Id="tcltk_dlls" />
             <ComponentGroupRef Id="tcltk_lib" />
-            <ComponentGroupRef Id="tkinter_lib" />
+            <ComponentGroupRef Id="tkinter_lib" Primary="yes" />
             
             <Component Id="idle_shortcut" Directory="MenuDir">
                 <RegistryValue KeyPath="yes" Root="HKMU" Key="[REGISTRYKEY]\Idle" Type="string" Value="[#Lib_idlelib_idle.pyw]" />
@@ -29,11 +35,62 @@
                           Directory="MenuDir"
                           Name="!(loc.ShortcutName)"
                           Description="!(loc.ShortcutDescription)"
-                          Target="[PYTHON_EXE]"
+                          Target="[PYTHONW_EXE]"
                           Arguments='"[#Lib_idlelib_idle.pyw]"'
                           Icon="idle.exe">
                     <Icon Id="idle.exe" SourceFile="!(bindpath.src)Lib\idlelib\Icons\idle.ico" />
                 </Shortcut>
+                <Shortcut Id="pydoc.py"
+                          Target="[PYTHON_EXE]"
+                          Arguments='-m pydoc -b'
+                          Name="!(loc.PyDocShortcutName)"
+                          Description="!(loc.PyDocShortcutDescription)"
+                          Icon="idle.exe" />
+            </Component>
+        </Feature>
+        <Feature Id="AssociateFiles" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)">
+            <ComponentGroupRef Id="tkinter_lib" />
+            
+            <!-- We fix the guid of the Subcommands key so that it is correctly reference counted -->
+            <Component Id="assoc_subcommands" Directory="InstallDirectory" Guid="{57D47B4C-96E6-40A0-A958-57083D74423F}">
+                <Condition>VersionNT > 600</Condition>
+                <RegistryValue Root="HKCR" Key="$(var.TestPrefix)Python.File\Shell\editwithidle" Name="MUIVerb" Value="!(loc.EditMenu)" Type="string" KeyPath="yes" />
+                <RegistryValue Root="HKCR" Key="$(var.TestPrefix)Python.File\Shell\editwithidle" Name="Subcommands" Value="" Type="string" KeyPath="no" />
+            </Component>
+            <Component Id="assoc_subcommands_nocon" Directory="InstallDirectory" Guid="{07061D85-9151-4FC4-BB78-13628020D026}">
+                <Condition>VersionNT > 600</Condition>
+                <RegistryValue Root="HKCR" Key="$(var.TestPrefix)Python.NoConFile\Shell\editwithidle" Name="MUIVerb" Value="!(loc.EditMenu)" Type="string" KeyPath="yes" />
+                <RegistryValue Root="HKCR" Key="$(var.TestPrefix)Python.NoConFile\Shell\editwithidle" Name="Subcommands" Value="" Type="string" KeyPath="no" />
+            </Component>
+            
+            <Component Id="assoc_editwithidle" Directory="InstallDirectory">
+                <Condition>VersionNT > 600</Condition>
+                <RegistryKey Root="HKCR" Key="$(var.TestPrefix)Python.File\Shell\editwithidle\shell\edit$(var.MajorVersionNumber)$(var.MinorVersionNumber)$(var.Suffix32)">
+                    <RegistryValue Name="MUIVerb" Value="!(loc.EditSubMenu)" Type="string" KeyPath="yes" />
+                    <RegistryValue Key="command" Value='"[PYTHONW_EXE]" -m idlelib "%L" %*' Type="string" />
+                </RegistryKey>
+            </Component>
+            <Component Id="assoc_editwithidle_nocon" Directory="InstallDirectory">
+                <Condition>VersionNT > 600</Condition>
+                <RegistryKey Root="HKCR" Key="$(var.TestPrefix)Python.NoConFile\Shell\editwithidle\shell\edit$(var.MajorVersionNumber)$(var.MinorVersionNumber)$(var.Suffix32)">
+                    <RegistryValue Name="MUIVerb" Value="!(loc.EditSubMenu)" Type="string" KeyPath="yes" />
+                    <RegistryValue Key="command" Value='"[PYTHONW_EXE]" -m idlelib "%L" %*' Type="string" />
+                </RegistryKey>
+            </Component>
+            
+            <Component Id="assoc_editwithidle_vista" Directory="InstallDirectory">
+                <Condition>VersionNT = 600</Condition>
+                <RegistryKey Root="HKCR" Key="$(var.TestPrefix)Python.File\Shell\editwithidle$(var.MajorVersionNumber)$(var.MinorVersionNumber)$(var.Suffix32)">
+                    <RegistryValue Value="!(loc.EditSubMenu)" Type="string" KeyPath="yes" />
+                    <RegistryValue Key="command" Value='"[PYTHONW_EXE]" -m idlelib "%L" %*' Type="string" />
+                </RegistryKey>
+            </Component>
+            <Component Id="assoc_editwithidle_nocon_vista" Directory="InstallDirectory">
+                <Condition>VersionNT = 600</Condition>
+                <RegistryKey Root="HKCR" Key="$(var.TestPrefix)Python.NoConFile\Shell\editwithidle$(var.MajorVersionNumber)$(var.MinorVersionNumber)$(var.Suffix32)">
+                    <RegistryValue Value="!(loc.EditSubMenu)" Type="string" KeyPath="yes" />
+                    <RegistryValue Key="command" Value='"[PYTHONW_EXE]" -m idlelib "%L" %*' Type="string" />
+                </RegistryKey>
             </Component>
         </Feature>
     </Product>