Update WiX installer definitions to support silent upgrades of existing installations.

svn:r17499
This commit is contained in:
Martin Peck 2008-12-07 01:19:10 +00:00
parent cf75162a0c
commit 92562d6e7a

View File

@ -22,12 +22,24 @@
http://technet.microsoft.com/en-us/library/cc759262.aspx http://technet.microsoft.com/en-us/library/cc759262.aspx
--> -->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<!-- Definitions for critical elements of this MSI package.
Note that the product version is compressed into a X.X.X format. If the four
element version is used, the last octet is ignored when comparing versions
for upgrade, thus forcing the use of the three element version format.
UpgradeCode must remain the same for all packages of this type regardless of
Product or Package ID's. This is how existing versions are located.
-->
<?define ThisProductVersion="2.1.7" ?>
<?define ThisProductVersionDisp="@VERSION@" ?>
<?define UpgradeCode="64323a0c-9712-4a7a-8db8-d3c5c0b963df" ?>
<?define TPI="The Tor Project, Inc." ?>
<Product <Product
Name="Tor" Name="Tor"
Id="1449ef81-e295-43e5-91ac-81b7da0e2024" Id="1449ef81-e295-43e5-91ac-81b7da0e2024"
UpgradeCode="64323a0c-9712-4a7a-8db8-d3c5c0b963df" UpgradeCode="64323a0c-9712-4a7a-8db8-d3c5c0b963df"
Version="0.2.1.7" Version="$(var.ThisProductVersion)"
Manufacturer="The Tor Project, Inc." Manufacturer="$(var.TPI)"
Language="1033" Codepage="1252"> Language="1033" Codepage="1252">
<!-- Common package definitions. Most of these elements are self <!-- Common package definitions. Most of these elements are self
@ -37,25 +49,60 @@
--> -->
<Package <Package
Id="*" Id="*"
Keywords="Installer" Keywords="Tor,Installer"
Description="Tor Installer" Description="Tor $(var.ThisProductVersionDisp) Installer"
Manufacturer="The Tor Project, Inc." Manufacturer="$(var.TPI)"
Compressed="yes" Compressed="yes"
InstallerVersion="100" InstallerVersion="100"
Languages="1033" Languages="1033"
SummaryCodepage="1252" SummaryCodepage="1252"
/> />
<Media <Media Id="1"
Id="1"
Cabinet="Tor.cab" Cabinet="Tor.cab"
CompressionLevel="high" CompressionLevel="high"
EmbedCab="yes" EmbedCab="yes"
DiskPrompt="na" DiskPrompt="na"
/> />
<Property
Id="DiskPrompt" <!-- Properties used to control installation or repair features
Value="Tor Installation" and other invocation options.
/> When ALLUSERS==1 the install is per machine, when 2 it is per user.
-->
<Property Id="ALLUSERS">1</Property>
<Property Id="ReinstallModeText">omus</Property>
<Property Id="DiskPrompt">Tor Installation</Property>
<!-- Support for service type Tor installations (soon). -->
<Property Id="SVCINSTALL">0</Property>
<Property Id="SERVICENAME">Tor</Property>
<Property Id="SERVICEINTERNALNAME">Tor</Property>
<Property Id="EXISTING_TOR_SERVICE_PATH">
<RegistrySearch
Id="ExistingTorService"
Root="HKLM"
Key="System\CurrentControlSet\Services\[SERVICEINTERNALNAME]"
Name="TorSvcPath"
Type="raw"
/>
</Property>
<!-- Associate this package with the upgrade code for this series
to ensure that upgrade installations by Thandy or other means work
as expected.
The OnlyDetect option must be false to ensure that existing files
from an older version are removed and replaced with current files.
-->
<Upgrade Id="64323a0c-9712-4a7a-8db8-d3c5c0b963df">
<UpgradeVersion
Property="UPGRADEFOUND"
OnlyDetect="no"
Minimum="0.0.1"
IncludeMinimum="yes"
Maximum="$(var.ThisProductVersion)"
IncludeMaximum="no"
/>
</Upgrade>
<!-- Most of the installation directives are for populating the <!-- Most of the installation directives are for populating the
"Program Files" directory with the Tor binaries, dynamic link "Program Files" directory with the Tor binaries, dynamic link
@ -76,30 +123,18 @@
/> />
</Component> </Component>
<!-- Tor configuration files <!-- If run as service provide registry pointer to Tor path. -->
The sample config is always kept up to date and the torrc <Component Id="TorSvcLinks" Guid="b0e44ccf-4e85-4613-a026-9e3d0feef577">
is left as is if it exists and copied from the sample <Condition>SVCINSTALL</Condition>
config otherwise. <RegistryKey Root="HKLM" Key="System\CurrentControlSet\Services\[SERVICEINTERNALNAME]"
--> Action="createAndRemoveOnUninstall">
<Component Id="TorConfigFile" Guid="1dae9705-0bef-4588-be36-d8a5df5e47cc"> <RegistryValue Name="TorSvcPath" Value="#1" Type="string" KeyPath="yes" />
<File </RegistryKey>
Id="TorSampleConfig"
Name="torrc.sample"
Source="src\config\torrc.sample"
Vital="yes"
ReadOnly="yes"
DiskId="1"
>
<CopyFile
Id="TorConfig"
DestinationName="torrc"
/>
</File>
</Component> </Component>
<!-- Tor OpenSSL shared libraries <!-- Tor OpenSSL shared libraries
This optional component is required for shared builds This optional component is required for shared builds
of Tor. For static builds it is ignored. of Tor. For static builds it is ignored.
--> -->
<Component Id="OpenSSLLibrary" Guid="4d99fd44-dc24-46c6-8825-25b9e5916b85"> <Component Id="OpenSSLLibrary" Guid="4d99fd44-dc24-46c6-8825-25b9e5916b85">
<File <File
@ -146,9 +181,54 @@
</Directory> </Directory>
</Directory> </Directory>
<Directory Id="LocalAppDataFolder" Name="AppData">
<Directory Id="AppRootDirectory" Name="Tor">
<!-- Tor configuration files
The sample config is always kept up to date and the torrc
is left as is if it exists and copied from the sample
config otherwise.
-->
<Component Id="TorConfigFile" Guid="1dae9705-0bef-4588-be36-d8a5df5e47cc">
<CreateFolder/>
<RemoveFolder Id="RemoveAppRootDirectory" On="uninstall" />
<RegistryKey Root="HKCU" Key="Software\Tor" Action="createAndRemoveOnUninstall">
<RegistryValue Name="UserConfigFile" Value="1" Type="integer" KeyPath="yes" />
</RegistryKey>
<File
Id="TorSampleConfig"
Name="torrc.sample"
Source="src\config\torrc.sample"
Vital="yes"
ReadOnly="yes"
DiskId="1"
>
<CopyFile
Id="TorConfig"
DestinationName="torrc"
/>
</File>
</Component>
<!-- GeoIP data file. This is an optional component. -->
<Component Id="TorGeoIPFile" Guid="54dcb7e9-ea49-4be5-8c1a-32bf45306f9b">
<RegistryKey Root="HKCU" Key="Software\Tor" Action="createAndRemoveOnUninstall">
<RegistryValue Name="UserGeoIPFile" Value="1" Type="integer" KeyPath="yes" />
</RegistryKey>
<File
Id="GeoIPFile"
Name="geoip"
Source="share/tor/geoip"
Vital="no"
ReadOnly="yes"
DiskId="1"
/>
</Component>
</Directory>
</Directory>
<!-- Create shortcuts if requested <!-- Create shortcuts if requested
Remember that shortcuts must always be tied to a "key" Remember that shortcuts must always be tied to a "key"
registry value for proper repair and removal. registry value for proper repair and removal.
--> -->
<Directory Id="ProgramMenuFolder" Name="Programs"> <Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ShortcutFolder" Name="Tor"> <Directory Id="ShortcutFolder" Name="Tor">
@ -178,23 +258,22 @@
</Directory> </Directory>
<!-- Current version registry info <!-- Current version registry info
This value can be used by third party applications to query This value can be used by third party applications to query
for the current version installed on the system. for the current version installed on the system.
--> -->
<Component Id="TorRegistry" Guid="575de318-a649-49fe-95e5-ee091f6cb8c6"> <Component Id="TorRegistry" Guid="575de318-a649-49fe-95e5-ee091f6cb8c6">
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Tor" <RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Tor"
Action="createAndRemoveOnUninstall"> Action="createAndRemoveOnUninstall">
<RegistryValue Name="Version" Value="@VERSION@" Type="string" KeyPath="yes" /> <RegistryValue Name="Version" Value="$(var.ThisProductVersionDisp)" Type="string" KeyPath="yes" />
</RegistryKey> </RegistryKey>
</Component> </Component>
</Directory> </Directory>
<!-- Define list of application features available for install <!-- Define list of application features available for install
There are two main sections to this list. The "MainApplication" There are two main sections to this list. The "MainApplication"
section which defines a core set of mandatory files and setup section which defines a core set of mandatory files and setup
and the other optional components like shortcuts which are not and the other optional components like shortcuts which are not
required for functional installation. required for functional installation.
--> -->
<Feature Id="Complete" Title="Tor" <Feature Id="Complete" Title="Tor"
Level="1" Display="expand" ConfigurableDirectory="INSTALLDIR" Level="1" Display="expand" ConfigurableDirectory="INSTALLDIR"
@ -206,9 +285,11 @@
Description="Main Tor application"> Description="Main Tor application">
<ComponentRef Id="TorExecutable" /> <ComponentRef Id="TorExecutable" />
<ComponentRef Id="TorConfigFile" /> <ComponentRef Id="TorConfigFile" />
<ComponentRef Id="TorGeoIPFile" />
<ComponentRef Id="OpenSSLLibrary" /> <ComponentRef Id="OpenSSLLibrary" />
<ComponentRef Id="TorDocuments" /> <ComponentRef Id="TorDocuments" />
<ComponentRef Id="TorRegistry" /> <ComponentRef Id="TorRegistry" />
<ComponentRef Id="TorSvcLinks" />
</Feature> </Feature>
<!-- Shortcuts on the Start Menu and Desktop are optional but <!-- Shortcuts on the Start Menu and Desktop are optional but
@ -229,9 +310,14 @@
</Feature> </Feature>
</Feature> </Feature>
<!-- Upgrade installation sequence. -->
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallFinalize" />
</InstallExecuteSequence>
<!-- Set the UI options <!-- Set the UI options
Use a custom UI sequence to avoid EULA and other extraneous Use a custom UI sequence to avoid EULA and other extraneous
parts of Mondo and other GUIs parts of Mondo and other GUIs
--> -->
<UIRef Id="WixUI_Tor" /> <UIRef Id="WixUI_Tor" />
<Icon Id="tor.ico" SourceFile="contrib/tor.ico" /> <Icon Id="tor.ico" SourceFile="contrib/tor.ico" />