Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change Windows install to applocal UCRT #76688

Closed
zooba opened this issue Jan 6, 2018 · 8 comments
Closed

Change Windows install to applocal UCRT #76688

zooba opened this issue Jan 6, 2018 · 8 comments
Assignees
Labels
3.7 (EOL) end of life 3.8 only security fixes OS-windows type-feature A feature request or enhancement

Comments

@zooba
Copy link
Member

zooba commented Jan 6, 2018

BPO 32507
Nosy @pfmoore, @tjguk, @zware, @zooba
PRs
  • bpo-32507: Change Windows install to include app-local UCRT #5119
  • bpo-32507: Change Windows install to include app-local UCRT #5119
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = 'https://github.com/zooba'
    closed_at = <Date 2018-01-09.08:16:36.363>
    created_at = <Date 2018-01-06.23:59:01.529>
    labels = ['3.8', 'type-feature', '3.7', 'OS-windows']
    title = 'Change Windows install to applocal UCRT'
    updated_at = <Date 2018-01-09.08:16:36.362>
    user = 'https://github.com/zooba'

    bugs.python.org fields:

    activity = <Date 2018-01-09.08:16:36.362>
    actor = 'steve.dower'
    assignee = 'steve.dower'
    closed = True
    closed_date = <Date 2018-01-09.08:16:36.363>
    closer = 'steve.dower'
    components = ['Windows']
    creation = <Date 2018-01-06.23:59:01.529>
    creator = 'steve.dower'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 32507
    keywords = ['patch', 'patch']
    message_count = 8.0
    messages = ['309589', '309609', '309614', '309635', '309640', '309653', '309688', '309689']
    nosy_count = 4.0
    nosy_names = ['paul.moore', 'tim.golden', 'zach.ware', 'steve.dower']
    pr_nums = ['5119', '5119']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'enhancement'
    url = 'https://bugs.python.org/issue32507'
    versions = ['Python 3.7', 'Python 3.8']

    @zooba
    Copy link
    Member Author

    zooba commented Jan 6, 2018

    There's enough instability due to using the proper UCRT installer (e.g. bpo-25546, bpo-25954, also others not reported on bpo) and good enough install base that we can simplify things by just installing it locally on machines that require it.

    This may also require updating venv (though I think we're fine) and virtualenv (I'll ping).

    My proposal is to bundle the UCRT redistributable DLLs into their own MSI and install them alongside the main executable when required. If a user later installs it properly, the up-to-date version will be used instead. This should be good enough to cover people still on Windows 7/8, and will also reduce the installer size slightly (though at the cost of potentially breaking non-standard virtual environments or entrypoint stubs that link to the CRT dynamically).

    @zooba zooba added 3.7 (EOL) end of life 3.8 only security fixes labels Jan 6, 2018
    @zooba zooba self-assigned this Jan 6, 2018
    @zooba zooba added OS-windows type-feature A feature request or enhancement labels Jan 6, 2018
    @zooba
    Copy link
    Member Author

    zooba commented Jan 7, 2018

    The PR is ready, but I'll leave this open for a few days in case anyone wants to comment.

    @pfmoore
    Copy link
    Member

    pfmoore commented Jan 7, 2018

    Does this mean that we'll need to update the bundled ucrt whenever there are security patches to the baseline version? Are we happy with the security implications of that?

    I thought one of the key advantages of using the system CRT (whether the old msvcrXX.dll or the new ucrt) was that we automatically received security patches.

    @zooba
    Copy link
    Member Author

    zooba commented Jan 7, 2018

    Technically yes, though I think at this stage it will be very few machines that end up with our copy, and users can patch their own system using Windows Update even if we've installed a copy. Particularly for our user base, where I suspect most pre-Win10 Python users will have installed 3.5 or 3.6 previously and so have the proper update.

    There should be very few first time Python users on older operating systems, and it will approach zero over time.

    @pfmoore
    Copy link
    Member

    pfmoore commented Jan 7, 2018

    Oh, so we're talking here about bundling the ucrt installers and then if the user doesn't already have ucrt installed system wide, we will install a local copy, but if they do, we don't do anything? If we install a local copy, then it'll be used until the user installs a system copy, at which point the local copy remains but gets ignored, correct? That seems OK, although I can see a local copy that's not used being confusing - but it's for very few users so no real issue.

    I'm not sure what you're saying for venv/virtualenv though? Presumably they will need to copy the local copy if it's present, but that local copy will be ignored if there's a system copy?

    @zooba
    Copy link
    Member Author

    zooba commented Jan 8, 2018

    All correct. I believe venv is fine, as it copies all DLLs, but virtualenv is more selective and will need to be updated.

    @zooba
    Copy link
    Member Author

    zooba commented Jan 9, 2018

    New changeset d135f20 by Steve Dower in branch 'master':
    bpo-32507: Change Windows install to include app-local UCRT (bpo-5119)
    d135f20

    @zooba
    Copy link
    Member Author

    zooba commented Jan 9, 2018

    Missed the a4 cutoff, but it'll be in 3.7.0b1.

    @zooba zooba closed this as completed Jan 9, 2018
    @ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    3.7 (EOL) end of life 3.8 only security fixes OS-windows type-feature A feature request or enhancement
    Projects
    None yet
    Development

    No branches or pull requests

    2 participants