[Python-checkins] gh-101849: Add upgrade codes for old versions of launcher that ended up with later version numbers (GH-101877)
miss-islington
webhook-mailer at python.org
Mon Feb 13 15:59:19 EST 2023
https://github.com/python/cpython/commit/fd155b91392c5bd238781bb11e040cf46c94725c
commit: fd155b91392c5bd238781bb11e040cf46c94725c
branch: 3.11
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: miss-islington <31488909+miss-islington at users.noreply.github.com>
date: 2023-02-13T12:59:12-08:00
summary:
gh-101849: Add upgrade codes for old versions of launcher that ended up with later version numbers (GH-101877)
(cherry picked from commit 0c6fe81dce9d6bb1dce5e4503f1b42bc5355ba24)
Co-authored-by: Steve Dower <steve.dower at python.org>
files:
A Misc/NEWS.d/next/Windows/2023-02-13-16-32-50.gh-issue-101849.7lm_53.rst
M Tools/msi/common.wxs
M Tools/msi/launcher/launcher.wxs
diff --git a/Misc/NEWS.d/next/Windows/2023-02-13-16-32-50.gh-issue-101849.7lm_53.rst b/Misc/NEWS.d/next/Windows/2023-02-13-16-32-50.gh-issue-101849.7lm_53.rst
new file mode 100644
index 000000000000..861d4de9f9a6
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2023-02-13-16-32-50.gh-issue-101849.7lm_53.rst
@@ -0,0 +1 @@
+Ensures installer will correctly upgrade existing ``py.exe`` launcher installs.
diff --git a/Tools/msi/common.wxs b/Tools/msi/common.wxs
index b819d320ee94..0d61c1e61be7 100644
--- a/Tools/msi/common.wxs
+++ b/Tools/msi/common.wxs
@@ -25,7 +25,6 @@
<UpgradeVersion Property="DOWNGRADE" Minimum="$(var.Version)" IncludeMinimum="no" OnlyDetect="yes" />
<UpgradeVersion Property="UPGRADE" Minimum="$(var.UpgradeMinimumVersion)" IncludeMinimum="yes" Maximum="$(var.Version)" IncludeMaximum="no" />
</Upgrade>
- <?endif ?>
<?ifdef CoreUpgradeCode ?>
<?if $(var.UpgradeCode)!=$(var.CoreUpgradeCode) ?>
@@ -42,6 +41,7 @@
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" Overridable="yes">UPGRADE</RemoveExistingProducts>
</InstallExecuteSequence>
+ <?endif ?>
</Fragment>
<Fragment>
diff --git a/Tools/msi/launcher/launcher.wxs b/Tools/msi/launcher/launcher.wxs
index b83058c63bf6..49f1f7b8c176 100644
--- a/Tools/msi/launcher/launcher.wxs
+++ b/Tools/msi/launcher/launcher.wxs
@@ -34,13 +34,34 @@
<Custom Before="SetLauncherInstallDirectoryLM" Action="SetLauncherInstallDirectoryCU">NOT Installed AND NOT ALLUSERS=1</Custom>
<Custom Before="CostFinalize" Action="SetLauncherInstallDirectoryLM">NOT Installed AND ALLUSERS=1</Custom>
+ <?if $(var.UpgradeMinimumVersion)="3.11.0.0" ?>
+ <RemoveExistingProducts After="InstallValidate">UPGRADE or REMOVE_350_LAUNCHER or REMOVE_360A1_LAUNCHER or UPGRADE_3_11_0 or UPGRADE_3_11_1</RemoveExistingProducts>
+ <?else ?>
<RemoveExistingProducts After="InstallValidate">UPGRADE or REMOVE_350_LAUNCHER or REMOVE_360A1_LAUNCHER</RemoveExistingProducts>
+ <?endif ?>
</InstallExecuteSequence>
+ <?if $(var.UpgradeMinimumVersion)="3.11.0.0" ?>
+ <Condition Message="!(loc.NoDowngrade)">Installed OR NOT DOWNGRADE OR UPGRADE_3_11_0 OR UPGRADE_3_11_1</Condition>
+ <?else ?>
+ <Condition Message="!(loc.NoDowngrade)">Installed OR NOT DOWNGRADE</Condition>
+ <?endif ?>
+
<!-- Upgrade all versions of the launcher -->
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Property="DOWNGRADE" Minimum="$(var.Version)" IncludeMinimum="no" OnlyDetect="yes" />
<UpgradeVersion Property="UPGRADE" Minimum="0.0.0.0" IncludeMinimum="yes" Maximum="$(var.Version)" IncludeMaximum="no" />
+ <!--
+ Prior to 3.11.2150, version numbers incorrectly used date-based
+ revision numbers in the third field. Because these are higher than
+ the real version, it prevents upgrades.
+ Releases of 3.10 have a similar issue, however, no significant
+ changes have shipped in the launcher, so we don't worry about it.
+ -->
+ <?if $(var.UpgradeMinimumVersion)="3.11.0.0" ?>
+ <UpgradeVersion Property="UPGRADE_3_11_0" Minimum="3.11.7966.0" IncludeMinimum="yes" Maximum="3.11.7966.0" IncludeMaximum="yes" />
+ <UpgradeVersion Property="UPGRADE_3_11_1" Minimum="3.11.8009.0" IncludeMinimum="yes" Maximum="3.11.8009.0" IncludeMaximum="yes" />
+ <?endif ?>
</Upgrade>
<!-- Python 3.5.0 shipped with a different UpgradeCode -->
<Upgrade Id="A71530B9-E89D-53DB-9C2D-C6D7551876D8">
More information about the Python-checkins
mailing list