Scanning for Python
since version 3.5, the packagers of the official Python distribution for Windows have been going out of their way to do everything wrong about packaging that they possibly could.
- Instead of a single MSI package, they ship an executable wrapper around 22 of them.
- The ARP entries for the individual packages are created as hidden (by declaring them "system components")
- The "main" ARP entry is always left in HKCU of the executing user, even for a per-machine installation, therefore it will not show up in ARP for any other user.
- The uninstall executable is put into the executing user's profile. If that profile is deleted, uninstallation becomes very difficult (you have to remove each individual MSI package by hand).
The third point above is what gives me the most trouble right now, because Inventory does not see the installed package either, even when it was installed by Deploy using the same account on the target.
Is there something I can do to make Inventory see the ARP entry in the user profile (of the Deploy user, the same as the Inventory scanner) rather than HKLM?
(There is a workaround, but it is ugly: I can install the individual MSIs directly, and they will properly register in HKLM, and will not be hidden. The downside is that this will result in between 8 (for a normal installation) and 43 (all packages for x86 and x64) ARP entries. They also must be upgraded in lockstep, and in a particular order, which, fortunately, Deploy can do. The whole approach is documented as unsupported, though.)