Skip to content

Give the Windows python Tool a Family So an Off-Line Host Reads Correctly #1171

Description

@ptr727

Raised out of #1166, and deliberately left out of it because it changes what a report says on hosts that change did not otherwise touch.

The gap

In host-setup/windows/install-tools.ps1, the python record carries Family = '':

@{ Name = 'python'; Package = 'Python.Python.3.13'; Probe = 'py'; Optional = @(); Family = '' }

Family is what Resolve-ToolPackage uses to work out which package id an installed version actually belongs to, by matching that version against every id in the family read from a plain source search. node is the only tool that sets it today, because it ships under several ids.

Python ships under one id per minor line, so it has exactly the shape Family exists for, and a host that installed 3.12 or 3.14 by hand is currently misread rather than told that -Reinstall python is what moves it to the managed line. This host carries 3.12 and 3.13 side by side, which is the ordinary outcome of moving between lines since each id installs its own copy and uninstalling one does not touch another.

The fix, and the trap in it

Family = 'Python.Python.', with the trailing dot.

The dot is not cosmetic. Read-WingetSearchTable takes the family as a prefix, and a bare Python.Python also prefixes Python.PythonEmbeddablePackage.3.14 and Python.PythonInstallManager, both of which are in the catalog. Either would be matched into the family and could resolve as the installed id. The trailing dot excludes both.

Why it was not folded into #1166

It changes Get-ToolStatus output for hosts carrying a non-managed line, which is a reporting change independent of that change's subject. Worth its own diff and its own verification on a host with two lines installed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions