diff --git a/Lib/shutil.py b/Lib/shutil.py
index a130077..f375a5b 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -972,8 +972,8 @@
     return os.terminal_size((columns, lines))
 
 def which(cmd, mode=os.F_OK | os.X_OK, path=None):
-    """Given a file, mode, and a path string, return the path which conforms
-    to the given mode on the path."""
+    """Given a command, mode, and a path string, return the path which
+    conforms to the given mode on the path."""
     # Check that a given file can be accessed with the correct mode.
     # Additionally check that `file` is not a directory, as on Windows
     # directories pass the os.access check.
diff --git a/Tools/msi/msi.py b/Tools/msi/msi.py
index 889649a..124747d 100644
--- a/Tools/msi/msi.py
+++ b/Tools/msi/msi.py
@@ -405,6 +405,7 @@
               ("ErrorDialog", "ErrorDlg"),
               ("Progress1", "Install"),   # modified in maintenance type dlg
               ("Progress2", "installs"),
+              ("ModifyPath", "0"),
               ("MaintenanceForm_Action", "Repair")])
 
     # Fonts, see "TextStyle Table"
@@ -634,7 +635,11 @@
     c.event("SpawnDialog", "ExistingDirectoryDlg", 'TargetExists=1 and REMOVEOLDVERSION="" and REMOVEOLDSNAPSHOT=""', 2)
     c.event("SetTargetPath", "TARGETDIR", 'TargetExists=0 or REMOVEOLDVERSION<>"" or REMOVEOLDSNAPSHOT<>""', 3)
     c.event("SpawnWaitDialog", "WaitForCostingDlg", "CostingComplete=1", 4)
-    c.event("NewDialog", "SelectFeaturesDlg", 'TargetExists=0 or REMOVEOLDVERSION<>"" or REMOVEOLDSNAPSHOT<>""', 5)
+    #c.event("NewDialog", "PathInfoDlg", "1=1", 5) # Show this once no matter what.
+    c.event("NewDialog", "PathInfoDlg", 'TargetExists=0 or REMOVEOLDVERSION<>"" or REMOVEOLDSNAPSHOT<>""', 5)
+
+    # SelectFeaturesDlg is no longer directly shown from here. PathInfoDlg
+    # currently takes care of showing it.
 
     c = seldlg.cancel("Cancel", "DirectoryCombo")
     c.event("SpawnDialog", "CancelDlg")
@@ -649,6 +654,38 @@
     c = seldlg.pushbutton("NewDir", 324, 70, 30, 18, 3, "New", None)
     c.event("DirectoryListNew", "0")
 
+
+    #####################################################################
+    # PathInfoDlg
+    path_dialog = PyDialog(db, "PathInfoDlg", x, y, w, h, modal, title,
+                           "Yes", "No", "Yes")
+    path_dialog.title("New for Python 3.3")
+    path_dialog.text("News", 135, 65, 240, 130, 0x30003,
+        "New in 3.3 is the ability to add [TARGETDIR] to\n"
+        "your system's Path variable. This option allows you\n"
+        "to type `python` at a command prompt without\n"
+        "requiring anything else on your part.\n\n"
+        "However, users of multiple versions need to be\n"
+        "aware that this will overrule the behavior of any\n"
+        "existing Python installations that you have placed\n"
+        "on the Path.\n\n"
+        "If you choose to enable this feature, it will be\n"
+        "applied after you logout."
+        )
+
+    path_dialog.text("Question", 135, 235, 240, 40, 0x30003,
+            "{\\VerdanaBold10}Would you like to add Python to the Path?")
+
+    c = path_dialog.back("< Back", "No")
+    c.event("NewDialog", "SelectDirectoryDlg")
+
+    c = path_dialog.next("Yes", "Back", name="Yes")
+    c.event("[ModifyPath]", "1", order=1)
+    c.event("NewDialog", "SelectFeaturesDlg", order=2)
+
+    c = path_dialog.cancel("No", "Yes", name="No")
+    c.event("NewDialog", "SelectFeaturesDlg", order=1)
+
     #####################################################################
     # SelectFeaturesDlg
     features = PyDialog(db, "SelectFeaturesDlg", x, y, w, h, modal|track_disk_space,
@@ -660,7 +697,7 @@
                   "Click on the icons in the tree below to change the way features will be installed.")
 
     c=features.back("< Back", "Next")
-    c.event("NewDialog", "SelectDirectoryDlg")
+    c.event("NewDialog", "PathInfoDlg")
 
     c=features.next("Next >", "Cancel")
     c.mapping("SelectionNoItems", "Enabled")
@@ -853,8 +890,6 @@
                          level=0)
     private_crt = Feature(db, "PrivateCRT", "MSVCRT", "C Run-Time (private)", 0,
                           level=0)
-    add_data(db, "Condition", [("SharedCRT", 1, sys32cond),
-                               ("PrivateCRT", 1, "not "+sys32cond)])
     # We don't support advertisement of extensions
     ext_feature = Feature(db, "Extensions", "Register Extensions",
                           "Make this Python installation the default Python installation", 3,
@@ -879,6 +914,9 @@
                         "prompt without needing the full path.", 13,
                         parent = default_feature, attributes=2|8,
                         level=2)
+    add_data(db, "Condition", [("SharedCRT", 1, sys32cond),
+                               ("PrivateCRT", 1, "not "+sys32cond),
+                               ("PrependPath", 1, "ModifyPath='0'")])
 
 def extract_msvcr100():
     # Find the redistributable files
