Massive fiddling to get the install to work at all on a Win2K box under a
plain unprivileged User acct:
+ Had to duplicate Wise's Uninstal.wse script, in order to change the line
  at its end that unconditionally tries to write uninstall info under HKLM.
  This is our new file Uninstal.wse, which must be included by python20.wse
  instead of using Wise's version.
+ In every other case we write to HKLM, also write to HKCU instead (we
  were already doing that in *most* places, but not quite all).
+ If the user doesn't have admin privs, the DLLs we usually write to the
  system dir are written to the root of the Python installation instead.
  That's python22.dll, plus the two MSVC runtime DLLs.
+ Added a new component "Register file extensions".  Registering .py etc
  is done under HKEY_CLASSES_ROOT, and that also requires admin privs;
  i.e., AFAICT it's impossible for an unprivileged user to accomplish this.
  In the component selection dialog, if the user doesn't have admin privs
  I gray out this new component so the user knows they aren't getting file
  extensions.
After all that, Python installs, the Start Menu entries are OK, it runs
its test suite to completion, and the uninstaller works too.  Only known
problem so far is that the integration with Win2K's Add/Remove subsystem
isn't quite right yet in this irritating case.
diff --git a/PCbuild/python20.wse b/PCbuild/python20.wse
index 61669c7..71d9637 100644
--- a/PCbuild/python20.wse
+++ b/PCbuild/python20.wse
@@ -1,6 +1,6 @@
 Document Type: WSE
 item: Global
-  Version=8.14
+  Version=8.12
   Title=Python 2.2 alpha 1
   Flags=00010100
   Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
@@ -256,9 +256,26 @@
 item: Remark
   Text=D: test suite
 end
+item: Remark
+  Text=E: register file extensions (requires Admin privs)
+end
+item: Check Configuration
+  Flags=10111111
+end
 item: Set Variable
   Variable=COMPONENTS
-  Value=ABCD
+  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
 end
 item: Wizard Block
   Direction Variable=DIRECTION
@@ -766,26 +783,31 @@
       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 Tcl/Tk
       Text French=Python HTML docs
       Text French=Python utility scripts (Tools/)
       Text French=Python test suite (Lib/test/)
+      Text French=Register file extensons (requires Admin privs)
       Text French=
       Text German=Python interpreter, library and Tcl/Tk
       Text German=Python HTML docs
       Text German=Python utility scripts (Tools/)
       Text German=Python test suite (Lib/test/)
+      Text German=Register file extensons (requires Admin privs)
       Text German=
       Text Spanish=Python interpreter, library and Tcl/Tk
       Text Spanish=Python HTML docs
       Text Spanish=Python utility scripts (Tools/)
       Text Spanish=Python test suite (Lib/test/)
+      Text Spanish=Register file extensons (requires Admin privs)
       Text Spanish=
       Text Italian=Python interpreter, library and Tcl/Tk
       Text Italian=Python HTML docs
       Text Italian=Python utility scripts (Tools/)
       Text Italian=Python test suite (Lib/test/)
+      Text Italian=Register file extensons (requires Admin privs)
       Text Italian=
     end
     item: Static
@@ -1073,8 +1095,14 @@
 item: Remark
   Text=This include script allows uninstall support
 end
+item: Remark
+  Text=Note from Tim:  this is our own Uninstal.wse, a copy of Wise's except
+end
+item: Remark
+  Text=it writes to HKCU (instead of HKLM) if the user doesn't have admin privs.
+end
 item: Include Script
-  Pathname=%_WISE_%\INCLUDE\uninstal.wse
+  Pathname=.\Uninstal.wse
 end
 item: Remark
   Text=Note from Tim: these seeming no-ops actually convert to short filenames.
@@ -1179,24 +1207,41 @@
 end
 item: Remark
 end
+item: Check Configuration
+  Flags=10111111
+end
 item: Set Variable
   Variable=DLLDEST
   Value=%SYS32%
 end
+item: Else Statement
+end
+item: Set Variable
+  Variable=DLLDEST
+  Value=%MAINDIR%
+end
+item: End Block
+end
 item: Install File
   Source=..\license
   Destination=%MAINDIR%\LICENSE.txt
   Flags=0000000000000010
+  File Size=12540
+  File Date=20010717 163642
 end
 item: Install File
   Source=..\readme
   Destination=%MAINDIR%\README.txt
   Flags=0000000000000010
+  File Size=39442
+  File Date=20010509 141347
 end
 item: Install File
   Source=..\misc\news
   Destination=%MAINDIR%\NEWS.txt
   Flags=0000000000000010
+  File Size=84910
+  File Date=20010730 113103
 end
 item: Remark
 end
@@ -1215,16 +1260,25 @@
   Source=.\python.exe
   Destination=%MAINDIR%\python.exe
   Flags=0000000000000010
+  File Size=20539
+  File Date=20010730 113601
+  EXE Type=32
 end
 item: Install File
   Source=.\pythonw.exe
   Destination=%MAINDIR%\pythonw.exe
   Flags=0000000000000010
+  File Size=20540
+  File Date=20010730 113602
+  EXE Type=32
 end
 item: Install File
   Source=.\w9xpopen.exe
   Destination=%MAINDIR%\w9xpopen.exe
   Flags=0000000000000010
+  File Size=16384
+  File Date=20010730 113609
+  EXE Type=32
 end
 item: Remark
 end
@@ -1236,71 +1290,113 @@
   Destination=%MAINDIR%\DLLs\_winreg.pyd
   Description=Extension modules
   Flags=0000000000000010
+  File Size=36864
+  File Date=20010730 113612
+  EXE Type=32
 end
 item: Install File
   Source=.\_sre.pyd
   Destination=%MAINDIR%\DLLs\_sre.pyd
   Flags=0000000000000010
+  File Size=49209
+  File Date=20010730 113546
+  EXE Type=32
 end
 item: Install File
   Source=.\_symtable.pyd
   Destination=%MAINDIR%\DLLs\_symtable.pyd
   Flags=0000000000000010
+  File Size=20480
+  File Date=20010730 113548
+  EXE Type=32
 end
 item: Install File
   Source=.\_testcapi.pyd
   Destination=%MAINDIR%\DLLs\_testcapi.pyd
   Flags=0000000000000010
+  File Size=20480
+  File Date=20010730 113549
+  EXE Type=32
 end
 item: Install File
   Source=.\_tkinter.pyd
   Destination=%MAINDIR%\DLLs\_tkinter.pyd
   Flags=0000000000000010
+  File Size=28733
+  File Date=20010730 113553
+  EXE Type=32
 end
 item: Install File
   Source=.\_socket.pyd
   Destination=%MAINDIR%\DLLs\_socket.pyd
   Flags=0000000000000010
+  File Size=41020
+  File Date=20010730 113514
+  EXE Type=32
 end
 item: Install File
   Source=.\bsddb.pyd
   Destination=%MAINDIR%\DLLs\bsddb.pyd
   Flags=0000000000000010
+  File Size=81978
+  File Date=20010730 113554
+  EXE Type=32
 end
 item: Install File
   Source=.\mmap.pyd
   Destination=%MAINDIR%\DLLs\mmap.pyd
   Flags=0000000000000010
+  File Size=24576
+  File Date=20010730 113556
+  EXE Type=32
 end
 item: Install File
   Source=.\parser.pyd
   Destination=%MAINDIR%\DLLs\parser.pyd
   Flags=0000000000000010
+  File Size=41019
+  File Date=20010730 113558
+  EXE Type=32
 end
 item: Install File
   Source=.\pyexpat.pyd
   Destination=%MAINDIR%\DLLs\pyexpat.pyd
   Flags=0000000000000010
+  File Size=36924
+  File Date=20010730 113600
+  EXE Type=32
 end
 item: Install File
   Source=.\select.pyd
   Destination=%MAINDIR%\DLLs\select.pyd
   Flags=0000000000000010
+  File Size=20539
+  File Date=20010730 113604
+  EXE Type=32
 end
 item: Install File
   Source=.\unicodedata.pyd
   Destination=%MAINDIR%\DLLs\unicodedata.pyd
   Flags=0000000000000010
+  File Size=212992
+  File Date=20010730 113607
+  EXE Type=32
 end
 item: Install File
   Source=.\winsound.pyd
   Destination=%MAINDIR%\DLLs\winsound.pyd
   Flags=0000000000000010
+  File Size=20480
+  File Date=20010730 113615
+  EXE Type=32
 end
 item: Install File
   Source=.\zlib.pyd
   Destination=%MAINDIR%\DLLs\zlib.pyd
   Flags=0000000000000010
+  File Size=61497
+  File Date=20010730 113617
+  EXE Type=32
 end
 item: Remark
 end
@@ -1312,72 +1408,100 @@
   Destination=%MAINDIR%\libs\_winreg.lib
   Description=Link library files
   Flags=0000000000000010
+  File Size=1942
+  File Date=20010730 113612
 end
 item: Install File
   Source=.\_sre.lib
   Destination=%MAINDIR%\libs\_sre.lib
   Flags=0000000000000010
+  File Size=1892
+  File Date=20010730 113546
 end
 item: Install File
   Source=.\_symtable.lib
   Destination=%MAINDIR%\libs\_symtable.lib
   Flags=0000000000000010
+  File Size=1976
+  File Date=20010730 113548
 end
 item: Install File
   Source=.\_testcapi.lib
   Destination=%MAINDIR%\libs\_testcapi.lib
   Flags=0000000000000010
+  File Size=1976
+  File Date=20010730 113549
 end
 item: Install File
   Source=.\_tkinter.lib
   Destination=%MAINDIR%\libs\_tkinter.lib
   Description=Extension modules
   Flags=0000000000000010
+  File Size=1960
+  File Date=20010730 113553
 end
 item: Install File
   Source=.\_socket.lib
   Destination=%MAINDIR%\libs\_socket.lib
   Flags=0000000000000010
+  File Size=1942
+  File Date=20010730 113514
 end
 item: Install File
   Source=.\bsddb.lib
   Destination=%MAINDIR%\libs\bsddb.lib
   Flags=0000000000000010
+  File Size=1908
+  File Date=20010730 113554
 end
 item: Install File
   Source=.\mmap.lib
   Destination=%MAINDIR%\libs\mmap.lib
   Flags=0000000000000010
+  File Size=1892
+  File Date=20010730 113556
 end
 item: Install File
   Source=.\parser.lib
   Destination=%MAINDIR%\libs\parser.lib
   Flags=0000000000000010
+  File Size=1926
+  File Date=20010730 113558
 end
 item: Install File
   Source=.\pyexpat.lib
   Destination=%MAINDIR%\libs\pyexpat.lib
   Flags=0000000000000010
+  File Size=1942
+  File Date=20010730 113600
 end
 item: Install File
   Source=.\select.lib
   Destination=%MAINDIR%\libs\select.lib
   Flags=0000000000000010
+  File Size=1926
+  File Date=20010730 113604
 end
 item: Install File
   Source=.\unicodedata.lib
   Destination=%MAINDIR%\libs\unicodedata.lib
   Flags=0000000000000010
+  File Size=2010
+  File Date=20010730 113607
 end
 item: Install File
   Source=.\winsound.lib
   Destination=%MAINDIR%\libs\winsound.lib
   Flags=0000000000000010
+  File Size=1960
+  File Date=20010730 113615
 end
 item: Install File
   Source=.\zlib.lib
   Destination=%MAINDIR%\libs\zlib.lib
   Flags=0000000000000010
+  File Size=1892
+  File Date=20010730 113617
 end
 item: Remark
 end
@@ -1396,6 +1520,9 @@
   Destination=%MAINDIR%\DLLs\expat.dll
   Description=Expat library
   Flags=0000000000000010
+  File Size=135168
+  File Date=20010727 162455
+  EXE Type=32
 end
 item: Remark
 end
@@ -1465,6 +1592,8 @@
   Source=..\lib\distutils\readme
   Destination=%MAINDIR%\Lib\distutils\README.txt
   Flags=0000000000000010
+  File Size=815
+  File Date=20000408 223145
 end
 item: Install File
   Source=..\lib\distutils\command\*.py
@@ -1475,6 +1604,8 @@
   Source=..\lib\distutils\command\command_template
   Destination=%MAINDIR%\Lib\distutils\command\command_template
   Flags=0000000000000010
+  File Size=764
+  File Date=20000529 220454
 end
 item: Remark
 end
@@ -1514,6 +1645,8 @@
   Destination=%MAINDIR%\Lib\site-packages\README.txt
   Description=Site packages
   Flags=0000000000000010
+  File Size=121
+  File Date=20000331 150356
 end
 item: Remark
 end
@@ -1531,6 +1664,8 @@
   Destination=%MAINDIR%\include\pyconfig.h
   Description=Header files (pyconfig.h)
   Flags=0000000000000010
+  File Size=18728
+  File Date=20010726 172701
 end
 item: Remark
 end
@@ -1633,6 +1768,8 @@
   Destination=%MAINDIR%\Tools\Scripts\README.txt
   Description=Utility Scripts
   Flags=0000000000000010
+  File Size=2530
+  File Date=20000310 173656
 end
 item: Remark
 end
@@ -1647,6 +1784,8 @@
   Destination=%MAINDIR%\Tools\webchecker\README.txt
   Description=Web checker tool
   Flags=0000000000000010
+  File Size=738
+  File Date=19991117 104147
 end
 item: Remark
 end
@@ -1661,6 +1800,8 @@
   Destination=%MAINDIR%\Tools\versioncheck\README.txt
   Description=Version checker tool
   Flags=0000000000000010
+  File Size=2184
+  File Date=19971223 134348
 end
 item: Remark
 end
@@ -1687,6 +1828,8 @@
   Destination=%MAINDIR%\Tools\idle\idle.pyw
   Description=IDLE bootstrap script
   Flags=0000000000000010
+  File Size=152
+  File Date=20000306 121605
 end
 item: Remark
 end
@@ -1727,18 +1870,24 @@
   Destination=%MAINDIR%\Tools\pynche\README.txt
   Description=pynche color editor - README
   Flags=0000000100000010
+  File Size=15799
+  File Date=20010710 174955
 end
 item: Install File
   Source=..\tools\pynche\pynche
   Destination=%MAINDIR%\Tools\pynche\pynche.py
   Description=pynche color editor - main
   Flags=0000000100000010
+  File Size=190
+  File Date=19981006 233657
 end
 item: Install File
   Source=..\tools\pynche\pynche.pyw
   Destination=%MAINDIR%\Tools\pynche\pynche.pyw
   Description=pynche color editor - noconsole main
   Flags=0000000100000010
+  File Size=188
+  File Date=19981006 233658
 end
 item: End Block
 end
@@ -1757,6 +1906,8 @@
   Destination=%MAINDIR%\Lib\test\audiotest.au
   Description=Python Test files
   Flags=0000000000000010
+  File Size=23493
+  File Date=19990205 155744
 end
 item: Install File
   Source=..\lib\test\*.uue
@@ -1807,6 +1958,11 @@
   Value=A
   Flags=00001010
 end
+item: If/While Statement
+  Variable=COMPONENTS
+  Value=E
+  Flags=00001010
+end
 item: Remark
   Text=Register file extensions.
 end
@@ -1887,6 +2043,8 @@
   Key=Python.CompiledFile\DefaultIcon
   New Value=%MAINDIR%\pyc.ico
 end
+item: End Block
+end
 item: Remark
 end
 item: Remark
@@ -2013,6 +2171,15 @@
 item: Remark
   Text=Well, *this* is cryptic!  It's setting up the app publisher and URL entries for Win2K add/remove.
 end
+item: Remark
+  Text=Ack, and "Win2K" isn't enough either -- you can't actually do this without Admin privs too.
+end
+item: Check Configuration
+  Flags=11110010
+end
+item: Check Configuration
+  Flags=10111111
+end
 item: Edit Registry
   Total Keys=3
   item: Key
@@ -2034,6 +2201,10 @@
     Root=2
   end
 end
+item: End Block
+end
+item: End Block
+end
 item: Remark
 end
 item: Remark