[Python-checkins] cpython (3.5): Removes versioning from py.exe launcher installer and ensures that old

steve.dower python-checkins at python.org
Wed May 18 18:54:42 EDT 2016


https://hg.python.org/cpython/rev/60129a556672
changeset:   101433:60129a556672
branch:      3.5
parent:      101431:79197e60e441
user:        Steve Dower <steve.dower at microsoft.com>
date:        Wed May 18 15:54:05 2016 -0700
summary:
  Removes versioning from py.exe launcher installer and ensures that old launchers are replaced by newer ones.

files:
  Tools/msi/common.wxs                  |   4 +++-
  Tools/msi/launcher/launcher.wixproj   |   3 ++-
  Tools/msi/launcher/launcher.wxs       |  13 +++++++++----
  Tools/msi/launcher/launcher_en-US.wxl |  10 ++++++++--
  Tools/msi/msi.props                   |   4 ++--
  Tools/msi/msi.targets                 |   4 ++--
  6 files changed, 26 insertions(+), 12 deletions(-)


diff --git a/Tools/msi/common.wxs b/Tools/msi/common.wxs
--- a/Tools/msi/common.wxs
+++ b/Tools/msi/common.wxs
@@ -21,8 +21,8 @@
             <UpgradeVersion Property="UPGRADE" Minimum="$(var.UpgradeMinimumVersion)" IncludeMinimum="yes" Maximum="$(var.Version)" IncludeMaximum="no" />
         </Upgrade>
         
+        <?ifdef CoreUpgradeCode ?>
         <?if $(var.UpgradeCode)!=$(var.CoreUpgradeCode) ?>
-        <?ifndef SkipMissingCore ?>
         <Upgrade Id="$(var.CoreUpgradeCode)">
             <UpgradeVersion Property="MISSING_CORE" Minimum="$(var.Version)" IncludeMinimum="yes" Maximum="$(var.Version)" IncludeMaximum="yes" OnlyDetect="yes" />
         </Upgrade>
@@ -47,9 +47,11 @@
     </Fragment>
     
     <Fragment>
+    <?ifdef InstallDirectoryGuidSeed ?>
         <Directory Id="TARGETDIR" Name="SourceDir">
             <Directory Id="InstallDirectory" ComponentGuidGenerationSeed="$(var.InstallDirectoryGuidSeed)" />
         </Directory>
+    <?endif ?>
     </Fragment>
     
     <!-- Top-level directories -->
diff --git a/Tools/msi/launcher/launcher.wixproj b/Tools/msi/launcher/launcher.wixproj
--- a/Tools/msi/launcher/launcher.wixproj
+++ b/Tools/msi/launcher/launcher.wixproj
@@ -5,7 +5,8 @@
         <SchemaVersion>2.0</SchemaVersion>
         <OutputName>launcher</OutputName>
         <OutputType>Package</OutputType>
-        <DefineConstants>SkipMissingCore=1;$(DefineConstants)</DefineConstants>
+        <DefineConstants>UpgradeCode=1B68A0EC-4DD3-5134-840E-73854B0863F1;$(DefineConstants)</DefineConstants>
+        <IgnoreCommonWxlTemplates>true</IgnoreCommonWxlTemplates>
     </PropertyGroup>
     <Import Project="..\msi.props" />
     <ItemGroup>
diff --git a/Tools/msi/launcher/launcher.wxs b/Tools/msi/launcher/launcher.wxs
--- a/Tools/msi/launcher/launcher.wxs
+++ b/Tools/msi/launcher/launcher.wxs
@@ -5,7 +5,6 @@
         <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
         
         <Property Id="Suppress_TARGETDIR_Check" Value="1" />
-        <PropertyRef Id="UpgradeTable" />
         <PropertyRef Id="ARPPRODUCTICON" />
 
         <Feature Id="DefaultFeature" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)">
@@ -27,12 +26,18 @@
             <Custom Before="SetLauncherInstallDirectoryLM" Action="SetLauncherInstallDirectoryCU">NOT Installed AND NOT ALLUSERS=1</Custom>
             <Custom Before="CostFinalize" Action="SetLauncherInstallDirectoryLM">NOT Installed AND ALLUSERS=1</Custom>
 
-            <RemoveExistingProducts After="InstallInitialize">UPGRADE or REMOVE_OLD_LAUNCHER</RemoveExistingProducts>
+            <RemoveExistingProducts After="InstallValidate">UPGRADE or REMOVE_350_LAUNCHER</RemoveExistingProducts>
         </InstallExecuteSequence>
         
-        <!-- Python 3.5.0 shipped with an incorrect UpgradeCode -->
+        <!-- Python 3.5.0 shipped with a different UpgradeCode -->
         <Upgrade Id="A71530B9-E89D-53DB-9C2D-C6D7551876D8">
-            <UpgradeVersion Maximum="$(var.Version)" Property="REMOVE_OLD_LAUNCHER" />
+            <UpgradeVersion Minimum="0.0.0.0" Property="REMOVE_350_LAUNCHER" />
         </Upgrade>
+        <!-- Python 3.6.0a1 shipped with a different UpgradeCode -->
+        <Upgrade Id="394750C0-7880-5A8F-999F-933965FBCFB4">
+            <UpgradeVersion Maximum="$(var.Version)" Property="REMOVE_360A1_LAUNCHER" />
+            <UpgradeVersion Minimum="$(var.Version)" Property="BLOCK_360A1_LAUNCHER" />
+        </Upgrade>
+        <Condition Message="!(loc.NoDowngrade)">Installed OR NOT BLOCK_360A1_LAUNCHER</Condition>
     </Product>
 </Wix>
diff --git a/Tools/msi/launcher/launcher_en-US.wxl b/Tools/msi/launcher/launcher_en-US.wxl
--- a/Tools/msi/launcher/launcher_en-US.wxl
+++ b/Tools/msi/launcher/launcher_en-US.wxl
@@ -1,7 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
-    <String Id="Descriptor">Launcher</String>
-    <String Id="ShortDescriptor">launcher</String>
+    <String Id="LCID">1033</String>
+    <String Id="Culture">en-us</String>
+    <String Id="ProductName">Python Launcher</String>
+    <String Id="Title">Python Launcher</String>
+    <String Id="Description">Python Launcher</String>
+    <String Id="Manufacturer">Python Software Foundation</String>
+    <String Id="NoDowngrade">A newer version of the Python launcher is already installed.</String>
+    <String Id="NoTargetDir">The TARGETDIR variable must be provided when invoking this installer.</String>
     <String Id="PythonFileDescription">Python File</String>
     <String Id="PythonNoConFileDescription">Python File (no console)</String>
     <String Id="PythonCompiledFileDescription">Compiled Python File</String>
diff --git a/Tools/msi/msi.props b/Tools/msi/msi.props
--- a/Tools/msi/msi.props
+++ b/Tools/msi/msi.props
@@ -39,7 +39,7 @@
     
     <ItemGroup>
         <Compile Include="$(MSBuildThisFileDirectory)common.wxs" />
-        <WxlTemplate Include="$(MSBuildThisFileDirectory)\*.wxl_template" />
+        <WxlTemplate Include="$(MSBuildThisFileDirectory)\*.wxl_template" Condition="$(IgnoreCommonWxlTemplates) != 'true'" />
         <WixExtension Include="WixUtilExtension">
             <HintPath>WixUtilExtension</HintPath>
             <Name>WixUtilExtension</Name>
@@ -150,7 +150,7 @@
             <Uri>lib2to3/pickles</Uri>
         </_Uuid>
     </ItemGroup>
-    <Target Name="_GenerateGuids" AfterTargets="PrepareForBuild">
+    <Target Name="_GenerateGuids" AfterTargets="PrepareForBuild" Condition="$(TargetName) != 'launcher'">
         <PropertyGroup>
             <_Uuids>@(_Uuid->'("%(Identity)", "$(MajorVersionNumber).$(MinorVersionNumber)/%(Uri)")',',')</_Uuids>
             <_GenerateCommand>import uuid; print('\n'.join('{}={}'.format(i, uuid.uuid5(uuid.UUID('c8d9733e-a70c-43ff-ab0c-e26456f11083'), '$(ReleaseUri.Replace(`{arch}`, `$(ArchName)`))' + j)) for i,j in [$(_Uuids.Replace(`"`,`'`))]))</_GenerateCommand>
diff --git a/Tools/msi/msi.targets b/Tools/msi/msi.targets
--- a/Tools/msi/msi.targets
+++ b/Tools/msi/msi.targets
@@ -25,7 +25,7 @@
     </Target>
 
     <Target Name="_TransformWxlTemplates" AfterTargets="PrepareForBuild" Inputs="@(WxlTemplate);$(PySourcePath)include\patchlevel.h" Outputs="$(IntermediateOutputPath)%(Filename).wxl">
-        <PropertyGroup>
+        <PropertyGroup Condition="'@(WxlTemplate)' != ''">
             <_Content>$([System.IO.File]::ReadAllText(%(WxlTemplate.FullPath)).Replace(`{{ShortVersion}}`, `$(MajorVersionNumber).$(MinorVersionNumber)$(PyTestExt)`).Replace(`{{LongVersion}}`, `$(PythonVersion)$(PyTestExt)`).Replace(`{{Bitness}}`, `$(Bitness)`))</_Content>
             <_ExistingContent Condition="Exists('$(IntermediateOutputPath)%(WxlTemplate.Filename).wxl')">$([System.IO.File]::ReadAllText($(IntermediateOutputPath)%(WxlTemplate.Filename).wxl))</_ExistingContent>
         </PropertyGroup>
@@ -35,7 +35,7 @@
                           Overwrite="true"
                           Condition="$(_Content) != $(_ExistingContent)" />
         
-        <ItemGroup>
+        <ItemGroup Condition="'@(WxlTemplate)' != ''">
             <EmbeddedResource Include="$(IntermediateOutputPath)%(WxlTemplate.Filename).wxl" />
             <FileWrites Include="$(IntermediateOutputPath)%(WxlTemplate.Filename).wxl" />
         </ItemGroup>

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list