Make installation process friendly for custom locations (non-admin) on windows

Problem

The installation process of python currently is very non friendly for installing to non default locations in windows. No information is given about the installation process specifics.

The “setup progress” just shows this totally uninformative bar, with no option to “Show more” like in most other installers.

This becomes painful as after installation in custom location, there become just so many locations to keep track of and manually fix: it touches most all things related to installations i can think of:

Directories:

  • %APPDATA%/Python/Python{version}/ : for Scripts and site-packages
  • %LOCALAPPDATA%/ : for Programs/Python, Package Cache, & pip
  • %USERPROFILE%/*.whl : package files

Registry KEYS related to Python under:

  • \SOFTWARE\Microsoft\Windows\CurrentVersion\ : for . and Uninstall
  • \SOFTWARE\Python\PythonCore{version}\PythonPath : under both the HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE

Proposed solutions:

  1. For py launcher: Optionally using .config instead of depending on the .reg (windows registry keys, or say, regedit)
  2. Giving a read logs button in end of Setup progress for successful completions too
  3. Giving “Show more” button on the Setup progress page.
    I would suggest looking at the msys2 installation page - it gives a selectable/copyable output of the installation process
  4. One page mentioning the locations of installation things (& missed) can be given in end. This is a more verbose and more log-like format of what is shown in the other installers at second last page before proceeding to installation.

This will help a lot for rising above from previous corrupted uninstallations as well.

Example of the 4th suggestion point given below:

Python: <install location>
Py launcher: uses <xyz>/.config <or> <xyz> keys in Registry
Scripts & Packages: %APPDATA%/Python/Python{version}/
   ... <put above mentioned paths here> ...

Suggestions:
Add <xyz> in PATH <show this only if not selected while installation>