This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: 3.8b3 - windows install gui/ inconsistent options
Type: behavior Stage:
Components: Installation, Windows Versions: Python 3.8
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: Christopher Brousseau, Dimitri Merejkowsky, paul.moore, steve.dower, tim.golden, zach.ware
Priority: normal Keywords:

Created on 2019-08-02 17:21 by Christopher Brousseau, last changed 2022-04-11 14:59 by admin.

Files
File name Uploaded Description Edit
python_3.8b3_screen02_optional_features_2019-08-02_9-56-02.png Christopher Brousseau, 2019-08-02 17:21 screenshot - install python (first screen)
Messages (8)
msg348907 - (view) Author: Christopher Brousseau (Christopher Brousseau) * Date: 2019-08-02 17:21
When installing 3.8.0b3 64-bit into Win 10 using the gui following the `customize installation` path, there are duplicate and inconsistent options on three different screens for the `install for all users` checkbox.

Observed Behavior:
1. first screen (Install Python) - `install launcher for all users` is marked as checked as default
2. second screen (Optional Features) - 
2.1 `for all users` is also marked as checked if first screen marked.  if second screen marked - this is unchecked.
2.2 layout of this checkbox is above a comment that relates only to the "py launcher" checkbox.  would be more clear for user if `for all users` was located below "py launcher", or removed from this screen (per note below)
3. third screen (Advanced Options) - `Install for all users` is UNchecked in all cases, even if first & second screens are checked.

Expected Behavior:
1. if first screen is checked, all follow on screens are also checked
2. feature options only appear on one screen, or at a minimum, checkbox label is exactly the same on all screens

Additional Questions for the team:
1. Should all install customizations be removed from first screen, set as default options and just listed as descriptions under the `Install Now` default?
2. Should `for all users` option be removed from the 2nd screen (Optional Features)?  It seems more like an "advanced option" than a feature.

Screenshots (this site appears to only allow one file)
first: https://imgur.com/a/0a45CBh
second: https://imgur.com/a/6ZV16bV
third:  https://imgur.com/a/stRTh25

Link to binary used for this:
https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-amd64.exe
msg348911 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2019-08-02 19:19
The "for all users" checkbox you refer to only applies to the launcher, which is why it is immediately alongside the option to install the launcher (and above the comment about the launcher).

The "Install for all users" option on the final page is for the Python runtime (and if selected, also the launcher).

So the only duplication is the "launcher for all users" checkbox on the front page, and that's there so that people who use the default options are able to easily disable it if they don't have administrative privileges. (Also, everything on the front page is a duplicate of something else :) )

I'd happily accept an alternative design for the launcher options if it doesn't involve making the window larger and only uses checkboxes (we have fairly limited UI options available in this installer framework). Or maybe there's a simple text update we can make?
msg349174 - (view) Author: Christopher Brousseau (Christopher Brousseau) * Date: 2019-08-07 16:33
Ah - I didn't realize the nuances here - thank you for clearing that up for me.  Understand the design goal of keeping window size and using only checkboxes - simple.  Also agree some text changes may help, here are some suggestions for your consideration:

screen 1 - install python
recommend we change "install launcher" to "install py launcher" to be explicit.

Long term - it would be cleaner if the user had only 'default' and customize installation on this screen, with all configurations either bundled under Default, or moved to other screens for 'Customized' installs.  We could add notes under default that we're installing python for all users, py launcher, adding Python to PATH, etc.

If a user does not have admin privileges, it may not be helpful to them to present choices they can't install.  For a default install - we could test if user has admin privileges and install for all users, or fall back to 'user' only install.

screen 2 - optional features
recommend we move "for all users" to screen 3, since this screen is about features to add, while the following screen is about how they are configured on the system.  

If this isn't possible in this release, consider 
1. changing current "py launcher" checkbox to "upgrade py launcher"
2. moving "for all users" to next line down - looks like we have space
3. changing "for all users" to "py launcher for all users"

screen 3 - advanced options
two recommendations:
1. change "install for all users" to "install python for all users"
2. insert checkbox for "install py launcher for all users" as 2nd item in list.  This would then be directly above the existing "Associate files with Python" checkbox
msg349175 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2019-08-07 17:06
> recommend we change "install launcher" to "install py launcher" to be explicit.

To be clear, you mean we change "Install launcher for all users" to "Install py launcher for all users"? You get the launcher by default regardless, the only choice here is whether _everyone_ on your machine gets it (and you need to be an admin).

> Long term - it would be cleaner if the user had only 'default' and customize installation on this screen, with all configurations either bundled under Default, or moved to other screens for 'Customized' installs.  We could add notes under default that we're installing python for all users, py launcher, adding Python to PATH, etc.

This is where we started, and the notes are already there. What changed is:
* we don't add Python to PATH by default (because it's bad), and people couldn't find the option
* we had to replace the 3.4 py.exe launcher, which was always for all users, while making it easy for non-admins to install Python

> If a user does not have admin privileges, it may not be helpful to them to present choices they can't install.  For a default install - we could test if user has admin privileges and install for all users, or fall back to 'user' only install.

This is not possible. Most users do not start with admin privileges, but when prompted can provide them (via UAC). What we have here is the best we can offer without requiring complicated leaps of understanding for every type of user.

> recommend we move "for all users" to screen 3, since this screen is about features to add, while the following screen is about how they are configured on the system.

To clarify, we add an "Install py launcher for all users" checkbox on screen 3 and remove it from screen 2? What gets removed from screen 3 to make space for it?

> 1. changing current "py launcher" checkbox to "upgrade py launcher"

But this is incorrect. If you don't select the checkbox, you don't get the launcher. It's a choice to have or not-have, not a choice to upgrade or not-upgrade.

> 2. moving "for all users" to next line down - looks like we have space
> 3. changing "for all users" to "py launcher for all users"

This is feasible, but not high priority. PRs welcome.

> 1. change "install for all users" to "install python for all users"

Trivial - the string is in one of the .wxl files in Tools/msi/bundle (I forget which one right now).

> 2. insert checkbox for "install py launcher for all users" as 2nd item in list.  This would then be directly above the existing "Associate files with Python" checkbox

Instead of the "for all users" on the previous page? This should be straightforward as well, as the enable/disable logic should be the same as for the current one. A change to one of the .thm files, IIRC.


But all this is going to take someone motivated enough to contribute and test it. Right now, I have higher priority issues to spend my limited volunteer time on than the traditional installer. I can review PRs though (ideally including real screenshots so I don't also have to do the manual testing myself).
msg349242 - (view) Author: Christopher Brousseau (Christopher Brousseau) * Date: 2019-08-08 16:43
First, I'd like to say **thank you** all the work you and the team here do for Python, and Python on Windows.  I really appreciate the thoughtful feedback on these ideas.  

Following up on items in this thread:

> do you mean we change "Install launcher for all users" to "Install py launcher for all users"?
yes - that is correct, good clarification

> long term comments
I see - okay, perhaps we should defer this point to think about it in context of a PR (per below).  I really like the idea of not requiring complicated leaps of understanding for every type of user.

The main idea I'm thinking about on this first screen: the Default and Customize options are complete/self contained actions - but there there are more choices below that could apply to either Default or Customized installations.  When a user clicks on Install Now, the installation starts immediately, so the user may not configure these two checkboxes.  

The Customize workflow allows the user to back out all the way to the first screen, so it's easy for a user to back up to the beginning if they want to.

Maybe this is an order of operations question. Perhaps the checkboxes should be above Install Now or Customize, so there is a linear flow of decisions:  configure, then execute.  

Another idea, using UAC perhaps the Default could be 'install py launcher for all users' and not add to PATH.

However, it seems like there may be a few additional requirements.  One requirement being Default users need the ability optionally install for all users because of Admin privilege issues, secondly the ability to add Python to PATH.  A third requirement is these two choices be available and obvious to both installation paths.  Are these correct?



> test for admin privileges
I did not know that testing for this was not possible - learned something - thanks!


>To clarify, we add an "Install py launcher for all users" checkbox on screen 3 and remove it from screen 2? What gets removed from screen 3 to make space for it?

Correct - that wording seems right.  On the space question, it seems like there is space below "Download Debug binaries" so the list from "Associate files" through "Download Debug binaries" could be shifted down without requiring anything to be deleted.  


> 1. changing current "py launcher" checkbox to "upgrade py launcher"
> But this is incorrect. If you don't select the checkbox, you don't get the launcher. It's a choice to have > or not-have, not a choice to upgrade or not-upgrade.

Got it - I was responding to the grey text below the current checkbox that reads "Upgrades the global py launcher from the previous version".
Would it be correct to label this checkbox as "install py launcher"?


> other suggestions discussed in this thread.
> e.g. 2. moving "for all users" to next line down - looks like we have space, etc.
> This is feasible, but not high priority. PRs welcome.

Agree - this is low priority.  I will look into doing PR for this, and have to get setup to submit patches etc. so perhaps this is for future release if PR accepted.
msg389513 - (view) Author: Dimitri Merejkowsky (Dimitri Merejkowsky) * Date: 2021-03-25 18:11
I know this is two years later so maybe this is not the best way to get answers, but Steve Dower said:

> We don't add Python to PATH by default (because it's bad), and people couldn't find the option

Could someone clarify this for me? Because my experience as a Python teacher tells me the exact opposite.

For context, I've been teaching Python to absolute beginners (some of them do not even know how to *use* Windows to begin with).

I do tell them repeatedly to make sure to tick the "add python to Path", but every time, one of them forgot.

This gets even worse when the course is done remotely because I have to *tell* the students what to do through a screen-sharing app ...

Here's what I had to tell one of the students to do this morning.

Step 1: Tick "Display Hidden Items" in the Display option of the Windows File Explorer

Step 2: Go into c:\users\AppData

Step 3: Type `python.exe` in the search bar

Step 4: Copy/paste the full path 

Step 5: Open "Edit environment variables for my account"

Step 6: Click on "Edit environment variables"

Step 7: Click on Path

Step 8: Copy/paste the full path, without "python.exe"

Step 9: Copy/paste the full path, adding `\Scripts\` at the end

Step 10: restart cmd.exe


In insight, I wonder if I should have just told him to just re-run the installer and tick the box ...

Some notes: 

Fixing #14302 would help for step 9, which is nice.

I know very well that writing a Windows installer is far for trivial, but I'm ready to try and make a PR anyway. That being said, I understand there may be good reasons to *not* add python to PATH that I don't know about.
msg389746 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2021-03-29 20:40
The main problem with adding Python to PATH is interfering with other application's DLL and executable resolution order, as well as the inevitable confusion when multiple PATH updates do not play well together (which they don't).

The best thing you can do with your students (those on Windows 10, at least) is get Python from the Microsoft Store, which is able to do the PATH updates property (and you can modify them through the built-in "Manage App Execution Aliases" control panel if you have multiple).

Any other solution that is reliable, maintainable (for users) and usable is going to require significantly more development (and will break many existing users' workflows, but hopefully not too badly) than just flipping the checkbox. But some of us are thinking about it (me in particular, since I'm sick to death of being abused over this issue but would rather find a good way to fix it than just quit).
msg389811 - (view) Author: Dimitri Merejkowsky (Dimitri Merejkowsky) * Date: 2021-03-30 09:01
> the inevitable confusion when multiple PATH updates do not play well together (which they don't).

Oh I see. Did not think about that. I can see a scenario where you install 3.9, PATH is set, you install 3.10, the PATH update fails for some reason and then you get stuck because PATH was not updated correctly... and then you're back to manually setting PATH which was the thing we were trying to prevent ...

> you can modify [Python installations coming from the Windows store] through the built-in "Manage App Execution Aliases" control panel if you have multiple)

Good to know, thanks. That was one of my concerns actually.

> I'm sick to death of being abused over this issue

I'm sorry to hear that and I apologize - I was simply trying to get answers.

Well, now that I know why the box is not ticked, I can say I'm happy with the state of the installer, and I guess I'll continue to teach my students about PATH - after all, it's a useful skill to have ;)
History
Date User Action Args
2022-04-11 14:59:18adminsetgithub: 81926
2021-03-30 09:01:22Dimitri Merejkowskysetmessages: + msg389811
2021-03-29 20:40:17steve.dowersetmessages: + msg389746
2021-03-25 18:11:33Dimitri Merejkowskysetnosy: + Dimitri Merejkowsky
messages: + msg389513
2019-08-08 16:43:03Christopher Brousseausetmessages: + msg349242
2019-08-07 17:06:36steve.dowersetmessages: + msg349175
2019-08-07 16:33:46Christopher Brousseausetmessages: + msg349174
2019-08-02 19:19:58steve.dowersetmessages: + msg348911
2019-08-02 17:21:08Christopher Brousseaucreate