summaryrefslogtreecommitdiffstats
path: root/Tools/msi/common.wxs
blob: d8f3cde99ab52a4263beeeddf11ee0b609c09734 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <Property Id="ROOTREGISTRYKEY" Value="Software\Python\PythonCore" />
    </Fragment>
    
    <Fragment>
        <Property Id="REGISTRYKEY" Value="Software\Python\PythonCore\$(var.ShortVersion)$(var.PyArchExt)$(var.PyTestExt)" />
    </Fragment>
    
    <Fragment>
        <Component Id="OptionalFeature" Guid="*" Directory="InstallDirectory">
            <Condition>OPTIONALFEATURESREGISTRYKEY</Condition>
            <RegistryKey Root="HKMU" Key="[OPTIONALFEATURESREGISTRYKEY]">
                <RegistryValue Type="string" Name="$(var.OptionalFeatureName)" Value="$(var.Version)" KeyPath="yes" />
            </RegistryKey>
        </Component>
    </Fragment>
    
    <Fragment>
        <Property Id="UpgradeTable" Value="1" />
        
        <?ifndef SuppressUpgradeTable ?>
        <Upgrade Id="$(var.UpgradeCode)">
            <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) ?>
        <Upgrade Id="$(var.CoreUpgradeCode)">
            <UpgradeVersion Property="MISSING_CORE" Minimum="$(var.Version)" IncludeMinimum="yes" Maximum="$(var.Version)" IncludeMaximum="yes" OnlyDetect="yes" />
        </Upgrade>
        <Condition Message="!(loc.IncorrectCore)">Installed OR NOT MISSING_CORE</Condition>
        <?endif ?>
        <?endif ?>
        
        <Condition Message="!(loc.NoDowngrade)">Installed OR NOT DOWNGRADE</Condition>
        <Condition Message="!(loc.NoTargetDir)">Installed OR TARGETDIR OR Suppress_TARGETDIR_Check</Condition>

        <InstallExecuteSequence>
            <RemoveExistingProducts After="InstallInitialize" Overridable="yes">UPGRADE</RemoveExistingProducts>
        </InstallExecuteSequence>
    </Fragment>
    
    <Fragment>
        <!-- Include an icon for the Programs and Features dialog -->
        <Icon Id="ARPIcon" SourceFile="!(bindpath.src)PC\icons\python.ico" />
        <Property Id="ARPPRODUCTICON" Value="ARPIcon" />
        <Property Id="ARPNOMODIFY" Value="1" />
        <Property Id="DISABLEADVTSHORTCUTS" Value="1" />
    </Fragment>
    
    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
        <?ifdef InstallDirectoryGuidSeed ?>
            <Directory Id="InstallDirectory" ComponentGuidGenerationSeed="$(var.InstallDirectoryGuidSeed)" />
        <?endif ?>
        </Directory>
    </Fragment>

    <Fragment>
        <!-- Locate TARGETDIR automatically assuming we have executables installed -->
        <Property Id="TARGETDIR">
            <ComponentSearch Id="PythonExe_Directory" Guid="$(var.PythonExeComponentGuid)">
                <DirectorySearch Id="PythonExe_Directory" AssignToProperty="yes" Path=".">
                    <FileSearch Id="PythonExe_DirectoryFile" Name="python.exe" />
                </DirectorySearch>
            </ComponentSearch>
        </Property>
        <Property Id="DetectTargetDir" Value="1" />
    </Fragment>
    
    <!-- Top-level directories -->
    <Fragment>
        <DirectoryRef Id="InstallDirectory">
            <Directory Id="DLLs" Name="DLLs">
                <Directory Id="Catalogs" />
            </Directory>
        </DirectoryRef>
    </Fragment>

    <Fragment>
        <DirectoryRef Id="InstallDirectory">
            <Directory Id="Doc" Name="Doc" />
        </DirectoryRef>
    </Fragment>

    <Fragment>
        <DirectoryRef Id="InstallDirectory">
            <Directory Id="include" Name="include" />
        </DirectoryRef>
    </Fragment>

    <Fragment>
        <DirectoryRef Id="InstallDirectory">
            <Directory Id="Lib" Name="Lib" />
        </DirectoryRef>
    </Fragment>

    <Fragment>
        <DirectoryRef Id="InstallDirectory">
            <Directory Id="libs" Name="libs" />
        </DirectoryRef>
    </Fragment>

    <Fragment>
        <DirectoryRef Id="InstallDirectory">
            <Directory Id="Scripts" Name="Scripts" />
        </DirectoryRef>
    </Fragment>

    <Fragment>
        <DirectoryRef Id="InstallDirectory">
            <Directory Id="tcl" Name="tcl" />
        </DirectoryRef>
    </Fragment>

    <Fragment>
        <DirectoryRef Id="InstallDirectory">
            <Directory Id="Tools" Name="Tools" />
        </DirectoryRef>
    </Fragment>
    
    <!-- Start Menu folder -->
    <Fragment>
        <DirectoryRef Id="TARGETDIR">
            <Directory Id="ProgramMenuFolder">
                <Directory Id="MenuDir" Name="!(loc.ProductName)" />
            </Directory>
        </DirectoryRef>
    </Fragment>
</Wix>