+ Redid file associations on Win2K in what I believe is "the right way".
  Can't test it until getting to a Win2K box, because the non-Admin way
  of setting file associations on Win2K doesn't work on any other flavor
  of Windows (and other flavors of Windows never need Admin privs to
  do it the old way).
+ Consequently got rid of the "Register file associations" Component and
  associated GUI.
+ Added a line to the summary saying whether or not this is an Admin-level
  install (I fear that will be an important clue someday).
+ Minor fiddling to the summary to reduce the # of lines.  Added a
  horizontal scrollbar in case the install path is very long.
+ Reworked the way the Main and Tools components share pydoc.pyw; cleaner
  and simpler.
diff --git a/PCbuild/python20.wse b/PCbuild/python20.wse
index 47b3dc3..6131986 100644
--- a/PCbuild/python20.wse
+++ b/PCbuild/python20.wse
@@ -25,7 +25,7 @@
   Version Copyright=©2001 Python Software Foundation
   Version Company=PythonLabs at Zope Corporation
   Crystal Format=10111100101100000010001001001001
-  Step View=&Properties
+  Step View=&All
   Variable Name1=_WISE_
   Variable Description1=WISE root directory
   Variable Default1=C:\PROGRAM FILES\WISE INSTALLMASTER 8.1
@@ -280,27 +280,9 @@
 item: Remark
   Text=D: test suite
 end
-item: Remark
-  Text=E: register file extensions (requires Admin privs)
-end
-item: If/While Statement
-  Variable=DOADMIN
-  Value=1
-end
 item: Set Variable
   Variable=COMPONENTS
-  Value=ABCDE
-end
-item: Else Statement
-end
-item: Remark
-  Text=Lowercase E grays out the "register file extension" choice.
-end
-item: Set Variable
-  Variable=COMPONENTS
-  Value=ABCDe
-end
-item: End Block
+  Value=ABCD
 end
 item: Wizard Block
   Direction Variable=DIRECTION
@@ -311,6 +293,120 @@
   Filler Color=8421440
   Flags=00000011
 end
+item: If/While Statement
+  Variable=DISPLAY
+  Value=Start Installation
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=Install directory:  %MAINDIR%%CRLF%
+end
+item: Remark
+end
+item: If/While Statement
+  Variable=DOADMIN
+  Value=1
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=%CRLF%Doing admin install.%CRLF%
+  Flags=00000001
+end
+item: Else Statement
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=%CRLF%Doing non-admin install.%CRLF%
+  Flags=00000001
+end
+item: End Block
+end
+item: Remark
+end
+item: If/While Statement
+  Variable=DOBACKUP
+  Value=A
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=%CRLF%Make backups, into %BACKUP%%CRLF%
+  Flags=00000001
+end
+item: Else Statement
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=%CRLF%Don't make backups.%CRLF%
+  Flags=00000001
+end
+item: End Block
+end
+item: Remark
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=%CRLF%Components:%CRLF%
+  Flags=00000001
+end
+item: If/While Statement
+  Variable=COMPONENTS
+  Value=A
+  Flags=00000010
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=    Python interpreter, libraries and IDLE%CRLF%
+  Flags=00000001
+end
+item: End Block
+end
+item: If/While Statement
+  Variable=COMPONENTS
+  Value=B
+  Flags=00000010
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=    Python documentation%CRLF%
+  Flags=00000001
+end
+item: End Block
+end
+item: If/While Statement
+  Variable=COMPONENTS
+  Value=C
+  Flags=00000010
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=    Tool and utility scripts%CRLF%
+  Flags=00000001
+end
+item: End Block
+end
+item: If/While Statement
+  Variable=COMPONENTS
+  Value=D
+  Flags=00000010
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=    Python test suite%CRLF%
+  Flags=00000001
+end
+item: End Block
+end
+item: Remark
+end
+item: Set Variable
+  Variable=SUMMARY
+  Value=%CRLF%Start Menu group:  %GROUP%%CRLF%
+  Flags=00000001
+end
+item: End Block
+end
+item: Remark
+end
 item: Custom Dialog Set
   Name=Select Destination Directory
   Display Variable=DISPLAY
@@ -774,7 +870,6 @@
       Text=Python HTML docs
       Text=Python utility scripts (Tools/)
       Text=Python test suite (Lib/test/)
-      Text=Register file extensons (requires Admin privs)
       Text=
       Text French=Python interpreter, library and IDLE
       Text French=Python HTML docs
@@ -1014,146 +1109,28 @@
       Rectangle=86 54 259 175
       Help Context=16711681
       Enabled Color=00000000000000001111111111111111
-      Create Flags=01010000101000000001100010000100
+      Create Flags=01010000101100000001100000000100
       Text=%SUMMARY%
     end
   end
 end
 item: Remark
 end
-item: Remark
-  Text=If we just finished "Select Destination Directory":
-end
-item: Remark
-  Text=    %MAINDIR% is set, so reinitialize %BACKUP% to match.
-end
-item: Remark
-  Text=ElseIf we just finished "Select Program Manager Group":
-end
-item: Remark
-  Text=    "Start Installation" is next, so build a summary for "Start Installation" to display.
-end
-item: Remark
-end
 item: If/While Statement
   Variable=DISPLAY
   Value=Select Destination Directory
 end
+item: Remark
+  Text=User may have changed MAINDIR, so reset BACKUP to match.
+end
 item: Set Variable
   Variable=BACKUP
   Value=%MAINDIR%\BACKUP
 end
-item: Remark
-end
-item: ElseIf Statement
-  Variable=DISPLAY
-  Value=Select Program Manager Group
-end
-item: Set Variable
-  Variable=SUMMARY
-  Value=Installation directory%CRLF%    %MAINDIR%%CRLF%
-end
-item: Remark
-end
-item: Set Variable
-  Variable=SUMMARY
-  Value=%CRLF%Make backups?%CRLF%
-  Flags=00000001
-end
-item: If/While Statement
-  Variable=DOBACKUP
-  Value=A
-end
-item: Set Variable
-  Variable=SUMMARY
-  Value=    Yes, into %BACKUP%%CRLF%
-  Flags=00000001
-end
-item: Else Statement
-end
-item: Set Variable
-  Variable=SUMMARY
-  Value=    No%CRLF%
-  Flags=00000001
-end
 item: End Block
 end
 item: Remark
 end
-item: Set Variable
-  Variable=SUMMARY
-  Value=%CRLF%Components%CRLF%
-  Flags=00000001
-end
-item: If/While Statement
-  Variable=COMPONENTS
-  Value=A
-  Flags=00000010
-end
-item: Set Variable
-  Variable=SUMMARY
-  Value=    Python interpreter, libraries and IDLE%CRLF%
-  Flags=00000001
-end
-item: End Block
-end
-item: If/While Statement
-  Variable=COMPONENTS
-  Value=B
-  Flags=00000010
-end
-item: Set Variable
-  Variable=SUMMARY
-  Value=    Python documentation%CRLF%
-  Flags=00000001
-end
-item: End Block
-end
-item: If/While Statement
-  Variable=COMPONENTS
-  Value=C
-  Flags=00000010
-end
-item: Set Variable
-  Variable=SUMMARY
-  Value=    Tool and utility scripts%CRLF%
-  Flags=00000001
-end
-item: End Block
-end
-item: If/While Statement
-  Variable=COMPONENTS
-  Value=D
-  Flags=00000010
-end
-item: Set Variable
-  Variable=SUMMARY
-  Value=    Python test suite%CRLF%
-  Flags=00000001
-end
-item: End Block
-end
-item: If/While Statement
-  Variable=COMPONENTS
-  Value=E
-  Flags=00000010
-end
-item: Set Variable
-  Variable=SUMMARY
-  Value=    Register file extensions%CRLF%
-  Flags=00000001
-end
-item: End Block
-end
-item: Remark
-end
-item: Set Variable
-  Variable=SUMMARY
-  Value=%CRLF%Start Menu group%CRLF%    %GROUP%%CRLF%
-  Flags=00000001
-end
-item: End Block
-end
 item: End Block
 end
 item: Remark
@@ -1756,17 +1733,6 @@
 item: Remark
 end
 item: Remark
-  Text=Windows pydoc driver
-end
-item: Install File
-  Source=..\tools\scripts\*.pyw
-  Destination=%MAINDIR%\Tools\Scripts
-  Description=Windows pydoc driver
-  Flags=0000000000000010
-end
-item: Remark
-end
-item: Remark
   Text=Microsoft C runtime libraries
 end
 item: Install File
@@ -1830,24 +1796,6 @@
   Flags=0000000000000010
 end
 item: Remark
-  Text=*.pyw is installed by the main component; if we install it twice, a copy gets made
-end
-item: Remark
-  Text= in BACKUP, and then a rollback-uninstall will copy back the first one.
-end
-item: Check if File/Dir Exists
-  Pathname=%MAINDIR%\Tools\Scripts\pydoc.pyw
-  Flags=00000101
-end
-item: Install File
-  Source=..\tools\scripts\*.pyw
-  Destination=%MAINDIR%\Tools\Scripts
-  Description=Utility Scripts
-  Flags=0000000000000010
-end
-item: End Block
-end
-item: Remark
 end
 item: Install File
   Source=..\tools\webchecker\*.py
@@ -1982,6 +1930,24 @@
 item: Remark
 end
 item: Remark
+  Text=Windows pydoc driver
+end
+item: If/While Statement
+  Variable=COMPONENTS
+  Value=AC
+  Flags=00001010
+end
+item: Install File
+  Source=..\tools\scripts\*.pyw
+  Destination=%MAINDIR%\Tools\Scripts
+  Description=Windows pydoc driver
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Remark
+end
+item: Remark
   Text=DONE with file copying.
 end
 item: Remark
@@ -1995,15 +1961,39 @@
   Flags=00001010
 end
 item: Remark
-  Text=Register file extensions.
+  Text=Register file extensions.  As usual, Admin privs get in the way, but with a twist:
 end
 item: Remark
-  Text=Registering file extensions requires Admin privs.
+  Text=You don't need admin privs to write to HKEY_CLASSES_ROOT *except* under Win2K.
+end
+item: Remark
+  Text=On Win2K, a user without Admin privs has to register extensions under HKCU\Software\CLASSES instead.
+end
+item: Remark
+  Text=But while you can *do* that under other flavors of Windows too, it has no useful effect except in Win2K.
+end
+item: Set Variable
+  Variable=USE_HKCR
+  Value=1
+end
+item: Check Configuration
+  Flags=11110010
 end
 item: If/While Statement
-  Variable=COMPONENTS
-  Value=E
-  Flags=00001010
+  Variable=DOADMIN
+  Value=0
+end
+item: Set Variable
+  Variable=USE_HKCR
+  Value=0
+end
+item: End Block
+end
+item: End Block
+end
+item: If/While Statement
+  Variable=USE_HKCR
+  Value=1
 end
 item: Remark
   Text=File types.
@@ -2098,6 +2088,116 @@
   Key=.pyo
   New Value=Python.CompiledFile
 end
+item: Else Statement
+end
+item: Remark
+  Text=File types.
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\Python.File
+  New Value=Python File
+  Root=1
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\Python.File\shell\open\command
+  New Value=%MAINDIR%\python.exe "%%1" %%*
+  Root=1
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\Python.File\DefaultIcon
+  New Value=%MAINDIR%\Py.ico
+  Root=1
+end
+item: Remark
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\Python.NoConFile
+  New Value=Python File (no console)
+  Root=1
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\Python.NoConFile\shell\open\command
+  New Value=%MAINDIR%\pythonw.exe "%%1" %%*
+  Root=1
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\Python.NoConFile\DefaultIcon
+  New Value=%MAINDIR%\Py.ico
+  Root=1
+end
+item: Remark
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\Python.CompiledFile
+  New Value=Compiled Python File
+  Root=1
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\Python.CompiledFile\shell\open\command
+  New Value=%MAINDIR%\python.exe "%%1" %%*
+  Root=1
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\Python.CompiledFile\DefaultIcon
+  New Value=%MAINDIR%\pyc.ico
+  Root=1
+end
+item: Remark
+end
+item: Remark
+  Text=File extensions.
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\.py
+  New Value=Python.File
+  Root=1
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\.py
+  New Value=text/plain
+  Value Name=Content Type
+  Root=1
+end
+item: Remark
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\.pyw
+  New Value=Python.NoConFile
+  Root=1
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\.pyw
+  New Value=text/plain
+  Value Name=Content Type
+  Root=1
+end
+item: Remark
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\.pyc
+  New Value=Python.CompiledFile
+  Root=1
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\CLASSES\.pyo
+  New Value=Python.CompiledFile
+  Root=1
+end
 item: End Block
 end
 item: Remark