windows-64-bit-type-safety-20051105
[openafs.git] / src / WINNT / install / wix / openafs.wxs
1 <?xml version="1.0" ?>
2 <Wix xmlns='http://schemas.microsoft.com/wix/2003/01/wi'>
3
4     <!-- See config.wxi for the symbols that it defines/asserts -->
5     <?include config.wxi?>
6
7     <!-- See language_config for localization options. -->
8     <?include language_config.wxi?>
9
10     <!--
11       We autogenerate a new product code for each build.  According to MSDN we have
12       to change the product code whenever we change the name of the MSI file.  Each
13       version of OpenAFS has a different MSI name.  Thus, each version needs a
14       unique product code.
15       -->
16     <Product 
17         Id="????????-????-????-????-????????????"
18         Codepage="$(var.Codepage)"
19         Language="$(var.LanguageCode)"
20         Manufacturer="$(var.Manufacturer)"
21         Name="$(var.ProductName)"
22         UpgradeCode="6823EEDD-84FC-4204-ABB3-A80D25779833"
23         Version="$(var.NumericVersion)"
24         >
25
26                 <!--
27                 Note that we are not specifying an explicit Package Code below.  That way WiX will
28                 generate a new one for each build.  If an explicit one needs to be specified, use :
29                          Id="$(var.PackageCode)"
30                 -->
31         <Package
32                  Id="????????-????-????-????-????????????"
33          AdminImage="no"
34          Comments="$(var.PackageComments)"
35          Compressed="yes"
36          Description="$(var.ProductName)"
37          InstallerVersion="$(var.InstallerVersion)"
38          Keywords="Installer,OpenAFS,$(var.Manufacturer)"
39          Languages="$(var.Languages)"
40          Manufacturer="$(var.Manufacturer)"
41          Platforms="$(var.Platform)"
42          ShortNames="no"
43          SummaryCodepage="1252"
44          />
45         
46         <!-- Launch conditions -->
47         <Condition Message="$(loc.StrLaunchCond)">
48          <![CDATA[VersionNT >= 500]]>
49         </Condition>
50         <Condition Message="$(loc.AdminRequired)">Privileged</Condition>
51     <?if $(var.Platform) = "x64" ?>
52         <Condition Message="$(loc.StrPlatform64)">
53          <![CDATA[VersionNT64]]>
54         </Condition>
55     <?else?>
56         <Condition Message="$(loc.StrPlatformNot64)">
57          <![CDATA[NOT VersionNT64]]>
58         </Condition>
59     <?endif?>
60         
61         <!-- Global Properties -->
62         <?include property.wxi?>
63         
64         <!-- File system and registry settings -->
65         <Directory Id="TARGETDIR" Name="SourceDir">
66             <?include platform.wxi?>
67             <?include registry.wxi?>
68             <?include files.wxi?>
69         </Directory>
70         
71         <!-- Features -->
72         <?include feature.wxi?>
73         
74         <!-- User interface -->
75         <?include lang\$(var.Language)\ui.wxi?>
76         
77         <!-- Custom actions -->
78     <?ifndef UseDllLoopbackInstaller?>
79         <Binary
80          Id="BIN_instloop"
81          src="$(var.MediaBinDir)instloop.exe"/>
82     <?else?>
83         <Binary
84          Id="BIN_afsLoopback"
85          src="$(var.MediaBinDir)afsloopback.dll"/>
86     <?endif?>
87         <Binary
88                  Id="BIN_afsCustom"
89                  src="$(var.MediaDllDir)afscustom.dll"/>
90         <?ifdef UseDllLoopbackInstaller?>
91         <CustomAction
92          Id="InstallLoopback"
93          BinaryKey="BIN_afsLoopback"
94          DllEntry="installLoopbackMSI"
95          Execute="deferred" 
96          Impersonate="no"
97          />
98         <?ifdef RemoveLoopback?>
99         <CustomAction
100          Id="RemoveLoopback"
101          BinaryKey="BIN_afsLoopback"
102          DllEntry="uninstallLoopbackMSI"
103          Execute="deferred" 
104          />
105         <CustomAction
106          Id="RollbackLoopback"
107          BinaryKey="BIN_afsLoopback"
108          DllEntry="uninstallLoopbackMSI"
109          Execute="deferred" 
110          />
111         <?endif?>
112         <?else?>
113                 <CustomAction
114                  Id="InstallLoopback"
115                  BinaryKey="BIN_instloop"
116                  ExeCommand="-i"
117                  Impersonate="no"
118                  Execute="deferred"
119                  />
120                 <?ifdef RemoveLoopback?>
121                         <CustomAction
122                         Id="RollbackLoopback"
123                         BinaryKey="BIN_instloop"
124                         ExeCommand="-u"
125                         Impersonate="no"
126                         Execute="rollback"
127                         />
128                         <CustomAction
129                         Id="RemoveLoopback"
130                         BinaryKey="BIN_instloop"
131                         ExeCommand="-u"
132                         Impersonate="no"
133                         Execute="deferred"
134                         />
135                 <?endif?>
136         <?endif?>
137         <CustomAction
138          Id="InstallNetProvider" 
139          BinaryKey="BIN_afsCustom" 
140          DllEntry="InstallNetProvider"
141          Execute="oncePerProcess" />
142                 <CustomAction 
143                  Id="RemoveNetProvider" 
144                  BinaryKey="BIN_afsCustom"
145                  DllEntry="UninstallNetProvider"
146                  Return="ignore"
147                  Execute="oncePerProcess" />
148                 <CustomAction 
149                  Id="RollbackNetProvider" 
150                  BinaryKey="BIN_afsCustom"
151                  DllEntry="UninstallNetProvider"
152                  Return="ignore"
153                  Execute="rollback" />
154                 <CustomAction
155                  Id="ConfigureClient"
156                  BinaryKey="BIN_afsCustom"
157                  DllEntry="ConfigureClientService"
158                  Impersonate="no"
159                  Execute="deferred" />
160                 <CustomAction
161                  Id="ConfigureServer"
162                  BinaryKey="BIN_afsCustom"
163                  DllEntry="ConfigureServerService"
164                  Impersonate="no"
165                  Execute="deferred" />
166                 <CustomAction 
167                  Id="RemoveNsisInstallation" 
168                  BinaryKey="BIN_afsCustom"
169                  DllEntry="UninstallNsisInstallation"
170                  Execute="immediate" />
171                 <CustomAction
172                  Id="CreateAFSAdminGroup"
173                  BinaryKey="BIN_afsCustom"
174                  DllEntry="CreateAFSClientAdminGroup"
175                  Impersonate="no"
176                  Execute="deferred" />
177                 <CustomAction
178                  Id="RemoveAFSAdminGroup"
179                  BinaryKey="BIN_afsCustom"
180                  DllEntry="RemoveAFSClientAdminGroup"
181                  Impersonate="no"
182                  Execute="deferred" />
183                 <CustomAction
184                  Id="RollbackAFSAdminGroup"
185                  BinaryKey="BIN_afsCustom"
186                  DllEntry="RemoveAFSClientAdminGroup"
187                  Impersonate="no"
188                  Execute="rollback" />
189                 <CustomAction
190                  Id="AbortInstallationA"
191                  BinaryKey="BIN_afsCustom"
192                  DllEntry="AbortMsiImmediate"
193                  Execute="immediate" />
194                 <CustomAction
195                  Id="AbortInstallationB"
196                  BinaryKey="BIN_afsCustom"
197                  DllEntry="AbortMsiImmediate"
198                  Execute="immediate" />
199
200         <!-- Installation Sequences -->
201         <AdvertiseExecuteSequence />
202         <AdminExecuteSequence />
203         <InstallExecuteSequence>
204                         <RemoveExistingProducts After="InstallValidate">IBMAFS_UPGRADE OR OPENAFS_UPGRADE</RemoveExistingProducts>
205                         <Custom Action="RemoveNsisInstallation" Before="AbortInstallationA">NSISUNINSTALL &lt;&gt; "" AND UILevel &gt;= 4</Custom>
206                         <Custom Action="AbortInstallationA" Before="CostInitialize">NSISUNINSTALL &lt;&gt; "" AND UILevel &lt; 4</Custom>
207                         <!-- Assert that if the server is going to be installed locally after this session, control center and client are also local -->
208                         <Custom Action="AbortInstallationB" After="MigrateFeatureStates">
209                                 <![CDATA[((&feaServer=3 OR (!feaServer=3 AND &feaServer<1)) AND (&feaClient=2 OR (&feaClient<>3 AND !feaClient<>3) OR &feaControlCenter=2 OR (&feaControlCenter<>3 AND !feaControlCenter<>3) ))]]>
210                         </Custom>
211                 <?ifdef RemoveLoopback?>
212                         <Custom Action="RemoveLoopback" After="SelfRegModules">&amp;feaLoopback=2 OR &amp;feaLoopback=3</Custom>
213             <Custom Action="RollbackLoopback" After="RemoveLoopback">&amp;feaLoopback=3</Custom>
214             <Custom Action="InstallLoopback" After="RollbackLoopback">&amp;feaLoopback=3</Custom>
215                 <?else?>
216             <Custom Action="InstallLoopback" After="SelfRegModules">&amp;feaLoopback=3</Custom>
217         <?endif?>
218             <Custom Action="RollbackNetProvider" After="WriteRegistryValues">&amp;feaClient=3</Custom>
219                         <Custom Action="InstallNetProvider" After="RollbackNetProvider">&amp;feaClient=3</Custom>
220                         <Custom Action="RemoveNetProvider" After="InstallNetProvider">&amp;feaClient=2</Custom>
221                         <Custom Action="ConfigureClient" After="InstallServices">&amp;feaClient=3</Custom>
222                         <Custom Action="ConfigureServer" After="ConfigureClient">&amp;feaServer=3</Custom>
223                         <!-- <Custom Action="RemoveAFSAdminGroup" Before="">&amp;feaClient=2</Custom> -->
224                         <Custom Action="RollbackAFSAdminGroup" Before="CreateAFSAdminGroup">&amp;feaClient=3</Custom>
225                         <Custom Action="CreateAFSAdminGroup" Before="CreateFolders">&amp;feaClient=3</Custom>
226             <ScheduleReboot After="PublishProduct">&amp;feaClient=3 OR &amp;feaServer=3 OR &amp;feaClient=2 OR &amp;feaServer=2</ScheduleReboot>
227         </InstallExecuteSequence>
228
229         <!-- Related producs -->
230         <!-- MIT's OpenAFS MSI installer -->
231         <Upgrade Id="6823EEDD-84FC-4204-ABB3-A80D25779833">
232             <UpgradeVersion IgnoreRemoveFailure="no" IncludeMaximum="no" Maximum="$(var.NumericVersion)" MigrateFeatures="yes" Property="OPENAFS_UPGRADE" />
233         </Upgrade>
234         
235         <!-- MIT's Transarc AFS MSI Installer -->
236         <Upgrade Id="5332B94F-DE38-4927-9EAB-51F4A64193A7">
237             <UpgradeVersion IgnoreRemoveFailure="no" IncludeMaximum="yes" Maximum="3.6.2" MigrateFeatures="no" Property="IBMAFS_UPGRADE" />
238         </Upgrade>
239         
240         <!-- openafs.org NSIS installer is detected using other means -->
241         <!-- Please let us know if you want other Installers to be detected and upgraded/removed -->
242
243                 <!-- Media -->
244                 <Media Id="1" Cabinet="disk1.cab" CompressionLevel="high" EmbedCab="yes" />
245     </Product>
246 </Wix>