summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Peck <coder@peertech.org>2008-12-07 01:19:10 +0000
committerMartin Peck <coder@peertech.org>2008-12-07 01:19:10 +0000
commit92562d6e7a57df315698fbdfb9476bcac24bc10e (patch)
treed349e5f5605bda0af9f6cc0453cd3e4cf8c9e30e
parentcf75162a0ca93c3334451910c106129524883461 (diff)
downloadtor-92562d6e7a57df315698fbdfb9476bcac24bc10e.tar.gz
tor-92562d6e7a57df315698fbdfb9476bcac24bc10e.zip
Update WiX installer definitions to support silent upgrades of existing installations.
svn:r17499
-rw-r--r--contrib/tor.wxs.in174
1 files changed, 130 insertions, 44 deletions
diff --git a/contrib/tor.wxs.in b/contrib/tor.wxs.in
index 8cbb7e8e3a..1be67d4e04 100644
--- a/contrib/tor.wxs.in
+++ b/contrib/tor.wxs.in
@@ -22,12 +22,24 @@
http://technet.microsoft.com/en-us/library/cc759262.aspx
-->
<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
Name="Tor"
Id="1449ef81-e295-43e5-91ac-81b7da0e2024"
UpgradeCode="64323a0c-9712-4a7a-8db8-d3c5c0b963df"
- Version="0.2.1.7"
- Manufacturer="The Tor Project, Inc."
+ Version="$(var.ThisProductVersion)"
+ Manufacturer="$(var.TPI)"
Language="1033" Codepage="1252">
<!-- Common package definitions. Most of these elements are self
@@ -37,25 +49,60 @@
-->
<Package
Id="*"
- Keywords="Installer"
- Description="Tor Installer"
- Manufacturer="The Tor Project, Inc."
+ Keywords="Tor,Installer"
+ Description="Tor $(var.ThisProductVersionDisp) Installer"
+ Manufacturer="$(var.TPI)"
Compressed="yes"
InstallerVersion="100"
Languages="1033"
SummaryCodepage="1252"
/>
- <Media
- Id="1"
+ <Media Id="1"
Cabinet="Tor.cab"
CompressionLevel="high"
EmbedCab="yes"
DiskPrompt="na"
/>
- <Property
- Id="DiskPrompt"
- Value="Tor Installation"
- />
+
+ <!-- Properties used to control installation or repair features
+ 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
"Program Files" directory with the Tor binaries, dynamic link
@@ -76,30 +123,18 @@
/>
</Component>
- <!-- 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">
- <File
- Id="TorSampleConfig"
- Name="torrc.sample"
- Source="src\config\torrc.sample"
- Vital="yes"
- ReadOnly="yes"
- DiskId="1"
- >
- <CopyFile
- Id="TorConfig"
- DestinationName="torrc"
- />
- </File>
+ <!-- If run as service provide registry pointer to Tor path. -->
+ <Component Id="TorSvcLinks" Guid="b0e44ccf-4e85-4613-a026-9e3d0feef577">
+ <Condition>SVCINSTALL</Condition>
+ <RegistryKey Root="HKLM" Key="System\CurrentControlSet\Services\[SERVICEINTERNALNAME]"
+ Action="createAndRemoveOnUninstall">
+ <RegistryValue Name="TorSvcPath" Value="#1" Type="string" KeyPath="yes" />
+ </RegistryKey>
</Component>
<!-- Tor OpenSSL shared libraries
- This optional component is required for shared builds
- of Tor. For static builds it is ignored.
+ This optional component is required for shared builds
+ of Tor. For static builds it is ignored.
-->
<Component Id="OpenSSLLibrary" Guid="4d99fd44-dc24-46c6-8825-25b9e5916b85">
<File
@@ -146,9 +181,54 @@
</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
- Remember that shortcuts must always be tied to a "key"
- registry value for proper repair and removal.
+ Remember that shortcuts must always be tied to a "key"
+ registry value for proper repair and removal.
-->
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ShortcutFolder" Name="Tor">
@@ -178,23 +258,22 @@
</Directory>
<!-- Current version registry info
- This value can be used by third party applications to query
- for the current version installed on the system.
+ This value can be used by third party applications to query
+ for the current version installed on the system.
-->
<Component Id="TorRegistry" Guid="575de318-a649-49fe-95e5-ee091f6cb8c6">
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Tor"
Action="createAndRemoveOnUninstall">
- <RegistryValue Name="Version" Value="@VERSION@" Type="string" KeyPath="yes" />
+ <RegistryValue Name="Version" Value="$(var.ThisProductVersionDisp)" Type="string" KeyPath="yes" />
</RegistryKey>
</Component>
-
</Directory>
<!-- Define list of application features available for install
- There are two main sections to this list. The "MainApplication"
- section which defines a core set of mandatory files and setup
- and the other optional components like shortcuts which are not
- required for functional installation.
+ There are two main sections to this list. The "MainApplication"
+ section which defines a core set of mandatory files and setup
+ and the other optional components like shortcuts which are not
+ required for functional installation.
-->
<Feature Id="Complete" Title="Tor"
Level="1" Display="expand" ConfigurableDirectory="INSTALLDIR"
@@ -206,9 +285,11 @@
Description="Main Tor application">
<ComponentRef Id="TorExecutable" />
<ComponentRef Id="TorConfigFile" />
+ <ComponentRef Id="TorGeoIPFile" />
<ComponentRef Id="OpenSSLLibrary" />
<ComponentRef Id="TorDocuments" />
<ComponentRef Id="TorRegistry" />
+ <ComponentRef Id="TorSvcLinks" />
</Feature>
<!-- Shortcuts on the Start Menu and Desktop are optional but
@@ -229,9 +310,14 @@
</Feature>
</Feature>
+ <!-- Upgrade installation sequence. -->
+ <InstallExecuteSequence>
+ <RemoveExistingProducts After="InstallFinalize" />
+ </InstallExecuteSequence>
+
<!-- Set the UI options
- Use a custom UI sequence to avoid EULA and other extraneous
- parts of Mondo and other GUIs
+ Use a custom UI sequence to avoid EULA and other extraneous
+ parts of Mondo and other GUIs
-->
<UIRef Id="WixUI_Tor" />
<Icon Id="tor.ico" SourceFile="contrib/tor.ico" />