[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

PATCH: preliminary support for MSI based package builds via WiX toolset



attached is a patch for preliminary MSI installer support via WiX.
you will need a copy of visual studio (2005, 2008 of any flavor
including Express) to build the MSI package.

a test of this installer can be performed using one of the development
snapshots compiled at:
http://peertech.org/torbld/info/Tor-mod-svn-Thandy
just copy and invoke the tor.msi file on the detail page for a
successful build and follow the prompts.

A silent installation can be performed with a /quiet option passed:
ec /i tor.msi /qn

A repair operation can be performed with /f and remove via /x

More msiexec command line details at:
http://technet.microsoft.com/en-us/library/cc759262.aspx

best regards,
diff -Naur orig-tor/configure.in mod-tor/configure.in
--- orig-tor/configure.in	2008-11-09 23:32:38.649936000 +0000
+++ mod-tor/configure.in	2008-11-27 03:42:31.335943536 +0000
@@ -818,7 +818,7 @@
 
 CPPFLAGS="$CPPFLAGS $TOR_CPPFLAGS_libevent $TOR_CPPFLAGS_openssl $TOR_CPPFLAGS_zlib"
 
-AC_CONFIG_FILES([Makefile tor.spec Doxyfile contrib/tor.sh contrib/torctl contrib/torify contrib/tor.logrotate contrib/Makefile contrib/osx/Makefile contrib/osx/TorBundleDesc.plist contrib/osx/TorBundleInfo.plist contrib/osx/TorDesc.plist contrib/osx/TorInfo.plist contrib/osx/TorStartupDesc.plist src/config/torrc.sample doc/tor.1 src/Makefile doc/Makefile doc/design-paper/Makefile doc/spec/Makefile src/config/Makefile src/common/Makefile src/or/Makefile src/win32/Makefile src/tools/Makefile contrib/suse/Makefile contrib/suse/tor.sh])
+AC_CONFIG_FILES([Makefile tor.spec Doxyfile contrib/tor.sh contrib/torctl contrib/torify contrib/tor.logrotate contrib/Makefile contrib/osx/Makefile contrib/osx/TorBundleDesc.plist contrib/osx/TorBundleInfo.plist contrib/osx/TorDesc.plist contrib/osx/TorInfo.plist contrib/osx/TorStartupDesc.plist src/config/torrc.sample doc/tor.1 src/Makefile doc/Makefile doc/design-paper/Makefile doc/spec/Makefile src/config/Makefile src/common/Makefile src/or/Makefile src/win32/Makefile src/tools/Makefile contrib/suse/Makefile contrib/suse/tor.sh contrib/tor.wxs])
 AC_OUTPUT
 
 if test -x /usr/bin/perl && test -x ./contrib/updateVersions.pl ; then
diff -Naur orig-tor/contrib/tor.wxs.in mod-tor/contrib/tor.wxs.in
--- orig-tor/contrib/tor.wxs.in	1970-01-01 00:00:00.000000000 +0000
+++ mod-tor/contrib/tor.wxs.in	2008-11-27 04:18:15.385998384 +0000
@@ -0,0 +1,212 @@
+<?xml version='1.0' encoding='Windows-1252' ?>
+<!-- 
+  Compile MSI installer via WiX: 
+    candle.exe contrib/tor.wxs
+    light.exe contrib/tor.wixobj -out tor.msi -ext C:\Path\to\Wix\bin\WixUIExtension.dll
+
+  A silent installation can be performed with a /quiet option passed.
+    misexec /i tor.msi INSTALLDIR=C:\path\to\install\to /qn
+
+  A repair operation can be performed with /f and remove via /x
+
+  More msiexec command line details at: http://technet.microsoft.com/en-us/library/cc759262.aspx
+ -->
+<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
+  <Product
+    Name='Tor'
+    Id='1449ef81-e295-43e5-91ac-81b7da0e2024'
+    UpgradeCode='64323a0c-9712-4a7a-8db8-d3c5c0b963df'
+    <!-- due to MSI spec this must be of the dotted form int.int.int.int without any non-integer parts in any quad value -->
+    Version='0.2.1.7'
+    Manufacturer='The Tor Project, Inc.'
+    Language='1033' Codepage='1252'>
+    
+    <Package
+      Id='*'
+      Keywords='Installer'
+      Description='Tor Installer'
+      Manufacturer='The Tor Project, Inc.'
+      InstallerVersion='100'
+      Compressed='yes'
+      Languages='1033'
+      SummaryCodepage='1252'
+    />
+    <Media
+      Id='1'
+      Cabinet='Tor.cab'
+      CompressionLevel='high'
+      EmbedCab='yes'
+      DiskPrompt='na'
+    />
+    <Property
+      Id='DiskPrompt'
+      Value='Tor Installation'
+    />
+
+    <Directory Id='TARGETDIR' Name='SourceDir'>
+      <Directory Id='ProgramFilesFolder' Name='ProgramFilesDir'>
+        <Directory Id='INSTALLDIR' Name='Tor'>
+
+          <!-- Tor application file -->
+          <Component Id='TorExecutable' Guid='219e0538-7f7f-4445-8406-e4f06ba22417'>
+            <File
+              Id='TorExe'
+              Name='Tor.exe'
+              Source='bin\tor.exe'
+              Vital='yes'
+              DiskId='1'
+            />
+          </Component>
+
+          <!-- Tor configuration files -->
+          <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>
+          </Component>
+
+          <!-- Tor OpenSSL shared libraries -->
+          <Component Id='OpenSSLLibrary' Guid='4d99fd44-dc24-46c6-8825-25b9e5916b85'>
+            <File
+              Id='cryptoeay32dll'
+              Name='cryptoeay32-0.9.8.dll'
+              Source='bin/cryptoeay32-0.9.8.dll'
+              DiskId='1'
+            />
+            <File
+              Id='ssleay32dll'
+              Name='ssleay32-0.9.8.dll'
+              Source='bin/ssleay32-0.9.8.dll'
+              DiskId='1'
+            />
+          </Component>
+
+          <!-- msys shared libraries -->
+          <Component Id='MSYSLibrary' Guid='451ffc02-2666-410e-984f-35fb303b05a2'>
+            <File
+              Id='msyszdll'
+              Name='msys-z.dll'
+              Source='bin/msys-z.dll'
+              DiskId='1'
+            />
+            <File
+              Id='msys10dll'
+              Name='msys-1.0.dll'
+              Source='bin/msys-1.0.dll'
+              DiskId='1'
+            />
+          </Component>
+
+          <!-- Tor docs -->
+          <Component Id='TorDocuments' Guid='3def35f6-70a0-44af-813a-f96bc8462748'>
+            <File
+              Id='TorReadme'
+              Name='README'
+              Source='README'
+              DiskId='1'
+            />
+            <File
+              Id='TorAuthors'
+              Name='Authors'
+              Source='Authors'
+              DiskId='1'
+            />
+            <File
+              Id='TorChangelog'
+              Name='ChangeLog'
+              Source='ChangeLog'
+              DiskId='1'
+            />
+            <File
+              Id='TorLicense'
+              Name='LICENSE'
+              Source='LICENSE'
+              DiskId='1'
+            />
+          </Component>
+        </Directory>
+      </Directory>
+
+      <!-- Create shortcuts if needed -->
+      <Directory Id='ProgramMenuFolder' Name='Programs'>
+        <Directory Id='ShortcutFolder' Name='Tor'>
+          <Component Id='AddTorToStartMenu' Guid='a318c037-e1ed-481c-983d-4a0ad3810ba0'>
+            <RegistryKey Root='HKCU' Key='Software\Tor' Action='createAndRemoveOnUninstall'>
+              <RegistryValue Name='StartMenuShortcut' Value='1' Type='integer' KeyPath='yes' />
+            </RegistryKey>
+            <Shortcut Id='TorStartMenuShortcut'
+                      Name='Tor' Target='[INSTALLDIR]tor.exe'
+                      Directory='ShortcutFolder' WorkingDirectory='INSTALLDIR'
+                      Icon='tor.ico' IconIndex='0' />
+            <RemoveFolder Id='RemoveShortcutFolder' On='uninstall' />
+          </Component>
+        </Directory>
+      </Directory>
+
+      <Directory Id='DesktopFolder' Name='Desktop'>
+        <Component Id='AddTorToDesktop' Guid='9a00d5c1-1d5d-4a62-864e-f53f79b3c77a'>
+          <RegistryKey Root='HKCU' Key='Software\Tor' Action='createAndRemoveOnUninstall'>
+            <RegistryValue Name='DesktopShortcut' Value='1' Type='integer' KeyPath='yes' />
+          </RegistryKey>
+          <Shortcut Id='TorDesktopShortcut'
+                    Name='Tor' Target='[INSTALLDIR]tor.exe'
+                    Directory='DesktopFolder' WorkingDirectory='INSTALLDIR'
+                    Icon='tor.ico' IconIndex='0' />
+        </Component>
+      </Directory>
+
+      <!-- Current version registry info -->
+      <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' />
+        </RegistryKey>
+      </Component>
+
+    </Directory>
+
+    <!-- Application features available -->
+    <Feature Id='Complete' Title='Tor'
+             Level='1' Display='expand' ConfigurableDirectory='INSTALLDIR'
+             Description='Tor is an implementation of Onion Routing. You can read more at https://www.torproject.org/'>
+      <Feature Id='MainApplication' Title='Tor Application'
+               AllowAdvertise='no' Absent='disallow' Level='1'
+               Description='Main Tor application'>
+        <ComponentRef Id='TorExecutable' />
+        <ComponentRef Id='TorConfigFile' />
+        <ComponentRef Id='OpenSSLLibrary' />
+        <ComponentRef Id='MSYSLibrary' />
+        <ComponentRef Id='TorDocuments' />
+        <ComponentRef Id='TorRegistry' /> 
+      </Feature>
+      <Feature Id='Shortcuts' Title='Shortcuts'
+               AllowAdvertise='no' Absent='allow' Level='1'
+               Description='Add shortcuts to Tor.'>
+        <Feature Id='StartMenuShortcuts' Title='Add to Start menu'
+                 AllowAdvertise='no' Absent='allow' Level='1'
+                 Description='Add Tor to your Start menu'>
+          <ComponentRef Id='AddTorToStartMenu' />
+        </Feature>
+        <Feature Id='DesktopShortcuts' Title='Add to Desktop'
+                 AllowAdvertise='no' Absent='allow' Level='1'
+                 Description='Add Tor to your Desktop'>
+          <ComponentRef Id='AddTorToDesktop' />
+        </Feature>
+      </Feature>
+    </Feature>
+
+    <!-- Set the UI options, this should probably be "Minimal" until Mondo is better supported here -->
+    <UIRef Id='WixUI_Mondo' />
+    <Icon Id='tor.ico' SourceFile='contrib/tor.ico' />
+  </Product>
+</Wix>