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/Uninstal.wse b/PCbuild/Uninstal.wse
new file mode 100644
index 0000000..6836eea
--- /dev/null
+++ b/PCbuild/Uninstal.wse
@@ -0,0 +1,507 @@
+Document Type: WSE
+item: Global
+  Version=8.11
+  Flags=00000100
+  Split=1420
+  Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+  Copy Default=1
+  Japanese Font Name=MS Gothic
+  Japanese Font Size=10
+  Start Gradient=0 0 255
+  End Gradient=0 0 0
+  Windows Flags=00000000000000000000101000001000
+  Message Font=MS Sans Serif
+  Font Size=8
+  Disk Label=GLBS
+  Disk Filename=INSTALL
+  Patch Flags=0000000000000001
+  Patch Threshold=200
+  Patch Memory=4096
+  Per-User Version ID=1
+  Crystal Format=10111100101100000010001001001001
+  File Checksum=2338111989
+end
+item: Remark
+end
+item: Remark
+  Text=     Install Support for uninstalling the application.
+end
+item: Remark
+end
+item: Set Variable
+  Variable=UNINSTALL_PATH
+  Value=%_LOGFILE_PATH_%
+  Flags=00000010
+end
+item: Set Variable
+  Variable=UNINSTALL_PATH
+  Value=%UNINSTALL_PATH%\UNWISE.EXE
+end
+item: Compiler Variable If
+  Variable=_EXE_OS_TYPE_
+  Value=WIN32
+end
+item: Install File
+  Source=%_WISE_%\UNWISE32.EXE
+  Destination=%UNINSTALL_PATH%
+  Flags=0000000000000010
+end
+item: Compiler Variable Else
+end
+item: Install File
+  Source=%_WISE_%\UNWISE.EXE
+  Destination=%UNINSTALL_PATH%
+  Flags=0000000000000010
+end
+item: Compiler Variable End
+end
+item: Remark
+end
+item: Remark
+  Text=     Install Support for multiple languages
+end
+item: Remark
+end
+item: Set Variable
+  Variable=UNINSTALL_LANG
+  Value=%UNINSTALL_PATH%
+  Flags=00000010
+end
+item: Set Variable
+  Variable=UNINSTALL_LANG
+  Value=%UNINSTALL_LANG%\UNWISE.INI
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=C
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.FRA
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_C_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.FRA
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=D
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.FRA
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_D_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.FRA
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=E
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.DEU
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_E_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.DEU
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=F
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.PTG
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_F_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.PTG
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=G
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.ESP
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_G_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.ESP
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=H
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.ESP
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_H_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.ESP
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=I
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.ITA
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_I_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.ITA
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=J
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.DAN
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_J_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.DAN
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=K
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.FIN
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_K_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.FIN
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=L
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.ISL
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_L_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.ISL
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=M
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.NLD
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_M_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.NLD
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=N
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.NOR
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_N_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.NOR
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=O
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.SVE
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_O_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.SVE
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Compiler Variable If
+  Variable=_LANG_LIST_
+  Value=P
+  Flags=00000010
+end
+item: Compiler Variable If
+  Value=%_WISE_%\LANGUAGE\UNWISE.JPN
+  Flags=00000011
+end
+item: If/While Statement
+  Variable=LANG
+  Value=%_LANG_P_NAME_%
+end
+item: Install File
+  Source=%_WISE_%\LANGUAGE\UNWISE.JPN
+  Destination=%UNINSTALL_LANG%
+  Flags=0000000000000010
+end
+item: End Block
+end
+item: Compiler Variable End
+end
+item: Compiler Variable End
+end
+item: Remark
+end
+item: Remark
+  Text=     Install the add/remove or uninstall icon
+end
+item: Remark
+end
+item: Set Variable
+  Variable=UNINSTALL_PATH
+  Value=%UNINSTALL_PATH%
+  Flags=00010100
+end
+item: Set Variable
+  Variable=INST_LOG_PATH
+  Value=%_LOGFILE_PATH_%
+  Flags=00010100
+end
+item: Check Configuration
+  Flags=10111011
+end
+item: Check Configuration
+  Flags=10111111
+end
+item: Remark
+  Text=Write under HKLM.
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+  New Value=%APPTITLE%
+  Value Name=DisplayName
+  Root=2
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+  New Value=%UNINSTALL_PATH% %INST_LOG_PATH%
+  New Value=
+  Value Name=UninstallString
+  Root=2
+end
+item: Else Statement
+end
+item: Remark
+  Text=Write under HKCU, but identical otherwise.
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+  New Value=%APPTITLE%
+  Value Name=DisplayName
+  Root=1
+end
+item: Edit Registry
+  Total Keys=1
+  Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+  New Value=%UNINSTALL_PATH% %INST_LOG_PATH%
+  New Value=
+  Value Name=UninstallString
+  Root=1
+end
+item: End Block
+end
+item: Else Statement
+end
+item: Add ProgMan Icon
+  Group=%GROUP%
+  Icon Name=Uninstall %APPTITLE%
+  Command Line=%UNINSTALL_PATH% %INST_LOG_PATH%
+end
+item: End Block
+end
+item: Check Configuration
+  Flags=11110010
+end
+item: If/While Statement
+  Variable=DOBRAND
+  Value=1
+end
+item: Edit Registry
+  Total Keys=2
+  item: Key
+    Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+    New Value=%COMPANY%
+    Value Name=RegCompany
+    Root=2
+  end
+  item: Key
+    Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE%
+    New Value=%NAME%
+    Value Name=RegOwner
+    Root=2
+  end
+end
+item: End Block
+end
+item: End Block
+end