1<?xml version="1.0" encoding="UTF-8"?>
2<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
3    <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
4        <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
5        <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
6
7        <Property Id="Suppress_TARGETDIR_Check" Value="1" />
8        <Icon Id="ARPIcon" SourceFile="!(bindpath.src)PC\icons\launcher.ico" />
9        <Property Id="ARPPRODUCTICON" Value="ARPIcon" />
10        <Property Id="ARPNOMODIFY" Value="1" />
11        <Property Id="DISABLEADVTSHORTCUTS" Value="1" />
12
13        <Property Id="ARM64_SHELLEXT">
14            <ComponentSearch Id="RegistrySearch_ARM64_SHELLEXT_Detected"
15                             Guid="{C591963D-7FC6-4FCE-8642-5E01E6B8848F}" />
16        </Property>
17
18        <Feature Id="DefaultFeature" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)">
19            <ComponentGroupRef Id="launcher_exe" Primary="yes" />
20        </Feature>
21        <Feature Id="AssociateFiles" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)">
22            <ComponentGroupRef Id="launcher_exe" />
23            <ComponentGroupRef Id="launcher_reg" />
24        </Feature>
25
26        <Directory Id="TARGETDIR" Name="SourceDir">
27            <Directory Id="LauncherInstallDirectory" />
28        </Directory>
29
30        <CustomAction Id="SetLauncherInstallDirectoryLM" Property="LauncherInstallDirectory" Value="[WindowsFolder]" />
31        <CustomAction Id="SetLauncherInstallDirectoryCU" Property="LauncherInstallDirectory" Value="[LocalAppDataFolder]Programs\Python\Launcher" />
32
33        <InstallExecuteSequence>
34            <Custom Before="SetLauncherInstallDirectoryLM" Action="SetLauncherInstallDirectoryCU">NOT Installed AND NOT ALLUSERS=1</Custom>
35            <Custom Before="CostFinalize" Action="SetLauncherInstallDirectoryLM">NOT Installed AND ALLUSERS=1</Custom>
36
37            <?if $(var.UpgradeMinimumVersion)="3.11.0.0" ?>
38            <RemoveExistingProducts After="InstallValidate">UPGRADE or REMOVE_350_LAUNCHER or REMOVE_360A1_LAUNCHER or UPGRADE_3_11_0 or UPGRADE_3_11_1</RemoveExistingProducts>
39            <?else ?>
40            <RemoveExistingProducts After="InstallValidate">UPGRADE or REMOVE_350_LAUNCHER or REMOVE_360A1_LAUNCHER</RemoveExistingProducts>
41            <?endif ?>
42        </InstallExecuteSequence>
43
44        <?if $(var.UpgradeMinimumVersion)="3.11.0.0" ?>
45        <Condition Message="!(loc.NoDowngrade)">Installed OR NOT DOWNGRADE OR UPGRADE_3_11_0 OR UPGRADE_3_11_1</Condition>
46        <?else ?>
47        <Condition Message="!(loc.NoDowngrade)">Installed OR NOT DOWNGRADE</Condition>
48        <?endif ?>
49
50        <!-- Upgrade all versions of the launcher -->
51        <Upgrade Id="$(var.UpgradeCode)">
52            <UpgradeVersion Property="DOWNGRADE" Minimum="$(var.Version)" IncludeMinimum="no" OnlyDetect="yes" />
53            <UpgradeVersion Property="UPGRADE" Minimum="0.0.0.0" IncludeMinimum="yes" Maximum="$(var.Version)" IncludeMaximum="no" />
54            <!--
55            Prior to 3.11.2150, version numbers incorrectly used date-based
56            revision numbers in the third field. Because these are higher than
57            the real version, it prevents upgrades.
58            Releases of 3.10 have a similar issue, however, no significant
59            changes have shipped in the launcher, so we don't worry about it.
60            -->
61            <?if $(var.UpgradeMinimumVersion)="3.11.0.0" ?>
62            <UpgradeVersion Property="UPGRADE_3_11_0" Minimum="3.11.7966.0" IncludeMinimum="yes" Maximum="3.11.7966.0" IncludeMaximum="yes" />
63            <UpgradeVersion Property="UPGRADE_3_11_1" Minimum="3.11.8009.0" IncludeMinimum="yes" Maximum="3.11.8009.0" IncludeMaximum="yes" />
64            <?endif ?>
65        </Upgrade>
66        <!-- Python 3.5.0 shipped with a different UpgradeCode -->
67        <Upgrade Id="A71530B9-E89D-53DB-9C2D-C6D7551876D8">
68            <UpgradeVersion Minimum="0.0.0.0" Property="REMOVE_350_LAUNCHER" />
69        </Upgrade>
70        <!-- Python 3.6.0a1 shipped with a different UpgradeCode -->
71        <Upgrade Id="394750C0-7880-5A8F-999F-933965FBCFB4">
72            <UpgradeVersion Minimum="0.0.0.0" Property="REMOVE_360A1_LAUNCHER" />
73        </Upgrade>
74    </Product>
75</Wix>
76