classification
Title: Backport py.exe to 3.4
Type: Stage: resolved
Components: Windows Versions: Python 3.4
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: steve.dower Nosy List: BreamoreBoy, larry, loewis, python-dev, steve.dower, tim.golden, zach.ware
Priority: normal Keywords: patch

Created on 2015-05-28 00:10 by steve.dower, last changed 2015-11-07 18:09 by steve.dower. This issue is now closed.

Files
File name Uploaded Description Edit
24306_1.patch steve.dower, 2015-06-20 16:11
Messages (9)
msg244226 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2015-05-28 00:10
For 3.5 32-bit installs we register in a different key to avoid collisions with 64-bit installs, but now the 3.4 launcher can't find us.

If you have installed 3.4 for all users (likely) and then install 3.5 just-for-me (also likely), then you'll continue to get the 3.4 launcher, and there's no way to avoid this because there's no option to omit it.

I think we should backport the launcher to 3.4 so that the next 3.4 release will be able to also work with 3.5.

Thoughts?
msg244253 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2015-05-28 03:42
Can it actually do any harm?  It certainly appears to remove the potential for a lot of bug reports from a lot of frustrated users, myself included.
msg244265 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2015-05-28 04:42
I didn't mention it initially, but the harm it can do is overriding newer versions. The 3.5 and later installers have proper versioning built in, but I don't think that's possible with the 3.4 installer as well (due to MSI limitations, not any deficiency of the previous authoring).

Of course, we're already in a place where "last installed wins", so the only other option is to remove the launcher from 3.4 (or all installers...) and require a separate installation.
msg244333 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2015-05-28 18:03
I don't see removing the launcher as an option.  So how about do the backport and make certain it's well documented in the release notes and here https://docs.python.org/3/using/windows.html ?  If anyone has a better idea feel free to fire away.
msg245564 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2015-06-20 16:11
Attached a patch to set the component IDs in the 3.4 installer to match the ones we're using for 3.5 and later. This should prevent downgrading of the launcher in future releases, though it's not strictly the "right" way to do this. (Nosied Martin in case he wants to weigh in on this.) (The right way is to have a separate MSI with a matching upgrade code, which is not feasible for 3.4.)

Unfortunately, it won't help when 3.5 is installed per-user (the default), but there's nothing we can do there short of backporting the launcher changes, probably selectively to avoid the fixes for the VC10->14 change. (Nosied Larry to see if he wants to approve this.)
msg245568 - (view) Author: Larry Hastings (larry) * (Python committer) Date: 2015-06-20 18:52
"Last installed wins" isn't perfect, but at least it's predictable.

Is it possible to make the 3.4 installer detect that 3.5+ is installed and not install the launcher?
msg245572 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2015-06-20 20:11
The current patch should do that for all-user installs of 3.5, but those aren't the default. There's no sensible way to detect per-user installs.
msg253940 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2015-11-02 18:57
So with the 3.5 launcher being installed all-users by default, the attached patch is a good option.

I'm not able to build 3.4 entirely, but I made the modification to the MSI directly and it works fine, so I intend to go ahead and apply it (with some extra line wrapping for formatting purposes) before 3.4.4

Unfortunately, I believe upgrades from 3.4.3 to 3.4.4 may remove the 3.5 launcher and then replace it with the 3.4 one. Unfortunately, there's no way to prevent this. Subsequently repairing or installing 3.5 should bring back the newer one.

Martin - any concerns here?
msg254292 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-11-07 18:09
New changeset 6181476b5534 by Steve Dower in branch '3.4':
Issue #24306: Sets component ID for launcher to match 3.5 and later to avoid downgrading.
https://hg.python.org/cpython/rev/6181476b5534
History
Date User Action Args
2015-11-07 18:09:57steve.dowersetstatus: open -> closed
assignee: steve.dower
resolution: fixed
stage: resolved
2015-11-07 18:09:35python-devsetnosy: + python-dev
messages: + msg254292
2015-11-02 18:57:43steve.dowersetmessages: + msg253940
2015-06-20 20:11:15steve.dowersetmessages: + msg245572
2015-06-20 18:52:19larrysetmessages: + msg245568
2015-06-20 16:11:46steve.dowersetfiles: + 24306_1.patch

nosy: + loewis, larry
messages: + msg245564

keywords: + patch
2015-05-28 18:03:26BreamoreBoysetmessages: + msg244333
2015-05-28 04:42:03steve.dowersetmessages: + msg244265
2015-05-28 03:42:32BreamoreBoysetnosy: + BreamoreBoy
messages: + msg244253
2015-05-28 00:10:56steve.dowercreate