diff options
-rw-r--r-- | installer/English.wxl | 18 | ||||
-rw-r--r-- | installer/Files.wxs | 328 | ||||
-rw-r--r-- | installer/MumbleInstall.sln | 20 | ||||
-rw-r--r-- | installer/MumbleInstall.wixproj | 48 | ||||
-rw-r--r-- | installer/Plugins.wxs | 141 | ||||
-rw-r--r-- | installer/Product.wxs | 196 | ||||
-rw-r--r-- | installer/Settings.wxi | 31 | ||||
-rw-r--r-- | installer/gpl.rtf | 344 |
8 files changed, 1126 insertions, 0 deletions
diff --git a/installer/English.wxl b/installer/English.wxl new file mode 100644 index 000000000..cb090f407 --- /dev/null +++ b/installer/English.wxl @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization"> + <!-- For the start menu --> + <String Id="MUMBLE_README_LNK">Mumble Readme</String> + <String Id="MUMBLE_LICENSE_LNK">Mumble License</String> + <String Id="MUMBLE_QT_LNK">Qt License</String> + <String Id="MUMBLE_SPEEX_LNK">Speex License</String> + <String Id="MUMBLE_UNINSTALL_LNK">Uninstall Mumble</String> + <String Id="MUMBLE_COMPAT_LNK">Mumble (Backwards Compatible)</String> + + <!-- Install sections --> + <String Id="MUMBLE_SEC_MUMBLE">Mumble (client)</String> + <String Id="MUMBLE_SEC_MUMBLE11X">Mumble (backwards compatible client)</String> + <String Id="MUMBLE_SEC_MURMUR">Murmur (server)</String> + <String Id="DESC_SectionMumble">The Mumble client, which you will need to connect to a server.</String> + <String Id="DESC_SectionMumble11X">The Mumble client for connecting to older servers.</String> + <String Id="DESC_SectionMurmur">The server for Mumble. Includes everything needed to run your own server.</String> +</WixLocalization>
\ No newline at end of file diff --git a/installer/Files.wxs b/installer/Files.wxs new file mode 100644 index 000000000..2582ee662 --- /dev/null +++ b/installer/Files.wxs @@ -0,0 +1,328 @@ +<?xml version="1.0" encoding="utf-8"?> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <?include "Settings.wxi" ?> + + <!-- Mumble --> + <Fragment> + <DirectoryRef Id="INSTALLDIR"> + <Component Id="mumble.exe" Guid="A08F7909-1116-4AC8-9422-051FA1A1BE19"> + <File Id="mumble.exe" Source="$(var.SourceDir)\release\mumble.exe" KeyPath="yes"> + <Shortcut Id="MumbleShortcut" Directory="ApplicationProgramsFolder" Name="Mumble" WorkingDirectory="INSTALLDIR" Icon="mumble.ico" IconIndex="0" Advertise="yes"> + <ShortcutProperty Id="startMenu.ApplicationId" Key="System.AppUserModel.ID" Value="net.sourceforge.mumble.Mumble" /> + </Shortcut> + <Shortcut Id="MumbleDesktopShortcut" Directory="DesktopFolder" Name="Mumble" WorkingDirectory="INSTALLDIR" Icon="mumble.ico" IconIndex="0" Advertise="yes"> + <ShortcutProperty Id="desktop.ApplicationId" Key="System.AppUserModel.ID" Value="net.sourceforge.mumble.Mumble" /> + </Shortcut> + </File> + + <RegistryValue Root="HKCR" Key="mumble" Value="URL:Mumble" Type="string" /> + <RegistryValue Root="HKCR" Key="mumble" Name="URL Protocol" Value="" Type="string" /> + <RegistryValue Root="HKCR" Key="mumble\DefaultIcon" Value="[#mumble.exe]" Type="string" /> + <RegistryValue Root="HKCR" Key="mumble\shell\open\command" Value="[#mumble.exe] "%1"" Type="string" /> + </Component> + <?if $(var.CompatClient) = true ?> + <Component Id="mumble11x.exe"> + <File Id="mumble11x.exe" Source="$(var.SourceDir)\release\mumble11x.exe" KeyPath="yes"> + <Shortcut Id="Mumble11xShortcut" Directory="ApplicationProgramsFolder" Name="!(loc.MUMBLE_COMPAT_LNK)" WorkingDirectory="INSTALLDIR" Icon="mumble.ico" IconIndex="0" Advertise="yes" /> + </File> + </Component> + <?endif ?> + <Component Id="mumble_ol.dll"> + <File Source="$(var.SourceDir)\release\mumble_ol.dll" KeyPath="yes" /> + </Component> + <Component Id="celt0.0.7.0.dll"> + <File Source="$(var.SourceDir)\release\celt0.0.7.0.dll" KeyPath="yes" /> + </Component> + <Component Id="celt0.0.8.0.dll"> + <File Source="$(var.SourceDir)\release\celt0.0.8.0.dll" KeyPath="yes" /> + </Component> + <Component Id="speex.dll"> + <File Source="$(var.SourceDir)\release\speex.dll" KeyPath="yes" /> + </Component> + + <Component Id="murmur.exe"> + <File Id="murmur.exe" Source="$(var.SourceDir)\release\murmur.exe" KeyPath="yes"> + <Shortcut Id="MurmurShortcut" Directory="ApplicationProgramsFolder" Name="Murmur" WorkingDirectory="INSTALLDIR" Icon="murmur.ico" IconIndex="0" Advertise="yes" /> + </File> + </Component> + <Component Id="murmur.ini" NeverOverwrite="yes"> + <File Source="$(var.SourceDir)\scripts\murmur.ini.win32" Name="murmur.ini" KeyPath="yes" /> + </Component> + <Component Id="Murmur.ice"> + <File Source="$(var.SourceDir)\src\murmur\Murmur.ice" KeyPath="yes" /> + </Component> + + <Component Id="qt.conf"> + <File Source="$(var.SourceDir)\scripts\qt.conf" KeyPath="yes" /> + </Component> + + <Component Id="licence.txt"> + <File Source="$(var.SourceDir)\installer\gpl.txt" Name="licence.txt" KeyPath="yes"> + <Shortcut Id="LicenceShortcut" Directory="ApplicationProgramsFolder" Name="!(loc.MUMBLE_LICENSE_LNK)" Icon="Readme.txt" Advertise="yes" /> + </File> + </Component> + <Component Id="Readme.txt"> + <File Source="$(var.SourceDir)\README" Name="Readme.txt" KeyPath="yes"> + <Shortcut Id="ReadmeShortcut" Directory="ApplicationProgramsFolder" Name="!(loc.MUMBLE_README_LNK)" Icon="Readme.txt" Advertise="yes" /> + </File> + </Component> + <Component Id="Changes.txt"> + <File Source="$(var.SourceDir)\CHANGES" Name="Changes.txt" KeyPath="yes" /> + </Component> + <Component Id="speex.txt"> + <File Source="$(var.SourceDir)\installer\speex.txt" KeyPath="yes"> + <Shortcut Id="SpeexLicenceShortcut" Directory="ApplicationProgramsFolder" Name="!(loc.MUMBLE_SPEEX_LNK)" Icon="Readme.txt" Advertise="yes" /> + </File> + </Component> + <Component Id="qt.txt"> + <File Source="$(var.SourceDir)\installer\qt.txt" KeyPath="yes"> + <Shortcut Id="QtLicenceShortcut" Directory="ApplicationProgramsFolder" Name="!(loc.MUMBLE_QT_LNK)" Icon="Readme.txt" Advertise="yes" /> + </File> + </Component> + + <Component Id="dbghelp.dll"> + <File Source="$(var.DebugToolsDir)\dbghelp.dll" KeyPath="yes" /> + </Component> + + <?ifdef IntelCppDir ?> + <Component Id="libmmd.dll"> + <File Source="$(var.IntelCppDir)\libmmd.dll" KeyPath="yes" /> + </Component> + <Component Id="celt0.0.7.0.sse.dll"> + <File Source="$(var.SourceDir)\release\celt0.0.7.0.sse.dll" KeyPath="yes" /> + </Component> + <Component Id="celt0.0.8.0.sse.dll"> + <File Source="$(var.SourceDir)\release\celt0.0.8.0.sse.dll" KeyPath="yes" /> + </Component> + <Component Id="celt0.0.7.0.sse2.dll"> + <File Source="$(var.SourceDir)\release\celt0.0.7.0.sse2.dll" KeyPath="yes" /> + </Component> + <Component Id="celt0.0.8.0.sse2.dll"> + <File Source="$(var.SourceDir)\release\celt0.0.8.0.sse2.dll" KeyPath="yes" /> + </Component> + <?endif ?> + + <?ifdef ProtoBufDir ?> + <Component Id="libprotobuf.dll"> + <File Source="$(var.ProtoBufDir)\vsprojects\Release\libprotobuf.dll" KeyPath="yes" /> + </Component> + <?endif?> + + <?ifdef RedistDirVC10 ?> + <Component Id="msvcp100.dll"> + <File Source="$(var.RedistDirVC10)\msvcp100.dll" KeyPath="yes" /> + </Component> + <Component Id="msvcr100.dll"> + <File Source="$(var.RedistDirVC10)\msvcr100.dll" KeyPath="yes" /> + </Component> + <?endif ?> + </DirectoryRef> + </Fragment> + + <!-- DBus --> + <?ifdef DBusDir ?> + <Fragment> + <DirectoryRef Id="INSTALLDIR"> + <Component Id="dbus1.dll"> + <File Source="$(var.DBusDir)\bin\dbus-1.dll" KeyPath="yes" /> + </Component> + <Component Id="libxml2.dll"> + <File Source="$(var.DBusDir)\bin\libxml2.dll" KeyPath="yes" /> + </Component> + <Component Id="iconv.dll"> + <File Source="$(var.DBusDir)\bin\iconv.dll" KeyPath="yes" /> + </Component> + <Component Id="dbusdaemon.exe"> + <File Source="$(var.DBusDir)\bin\dbus-daemon.exe" KeyPath="yes" /> + </Component> + <Component Id="session.conf"> + <File Source="$(var.DBusDir)\etc\session.conf" KeyPath="yes" /> + </Component> + </DirectoryRef> + <ComponentGroup Id="DBus"> + <ComponentRef Id="dbus1.dll" /> + <ComponentRef Id="libxml2.dll" /> + <ComponentRef Id="iconv.dll" /> + <ComponentRef Id="dbusdaemon.exe" /> + <ComponentRef Id="session.conf" /> + </ComponentGroup> + </Fragment> + <?endif ?> + + <!-- libsndfile --> + <?ifdef SndFileDir ?> + <Fragment> + <DirectoryRef Id="INSTALLDIR"> + <Component Id="libsndfile1.dll"> + <File Source="$(var.SndFileDir)\libsndfile-1.dll" KeyPath="yes" /> + </Component> + </DirectoryRef> + </Fragment> + <?endif ?> + + <!-- MySQL --> + <?ifdef MySQLDir ?> + <Fragment> + <DirectoryRef Id="INSTALLDIR"> + <Component Id="libmysql.dll"> + <File Source="$(var.MySQLDir)\lib\opt\libmysql.dll" KeyPath="yes" /> + </Component> + </DirectoryRef> + </Fragment> + <?endif ?> + + <!-- Ice --> + <?ifdef IceDir ?> + <Fragment> + <DirectoryRef Id="INSTALLDIR"> + <Component Id="bzip2.dll"> + <File Source="$(var.IceDir)\bzip2.dll" KeyPath="yes" /> + </Component> + <Component Id="ice34.dll"> + <File Source="$(var.IceDir)\ice34.dll" KeyPath="yes" /> + </Component> + <Component Id="iceutil34.dll"> + <File Source="$(var.IceDir)\iceutil34.dll" KeyPath="yes" /> + </Component> + </DirectoryRef> + </Fragment> + <?endif ?> + + <!-- OpenSSL --> + <Fragment> + <DirectoryRef Id="INSTALLDIR"> + <Component Id="libeay32.dll"> + <File Source="$(var.OpenSslDir)\bin\libeay32.dll" KeyPath="yes" /> + </Component> + <Component Id="ssleay32.dll"> + <File Source="$(var.OpenSslDir)\bin\ssleay32.dll" KeyPath="yes" /> + </Component> + <?ifdef ZlibDir ?> + <Component Id="zlib1.dll"> + <File Source="$(var.ZlibDir)\zlib1.dll" KeyPath="yes" /> + </Component> + <?endif ?> + </DirectoryRef> + </Fragment> + + <!-- Qt --> + <Fragment> + <DirectoryRef Id="INSTALLDIR"> + <Component Id="QtCore4.dll"> + <File Source="$(var.QtDir)\bin\QtCore4.dll" KeyPath="yes" /> + </Component> + <Component Id="QtGui4.dll"> + <File Source="$(var.QtDir)\bin\QtGui4.dll" KeyPath="yes" /> + </Component> + <Component Id="QtNetwork4.dll"> + <File Source="$(var.QtDir)\bin\QtNetwork4.dll" KeyPath="yes" /> + </Component> + <Component Id="QtOpenGL4.dll"> + <File Source="$(var.QtDir)\bin\QtOpenGL4.dll" KeyPath="yes" /> + </Component> + <Component Id="QtSql4.dll"> + <File Source="$(var.QtDir)\bin\QtSql4.dll" KeyPath="yes" /> + </Component> + <Component Id="QtSvg4.dll"> + <File Source="$(var.QtDir)\bin\QtSvg4.dll" KeyPath="yes" /> + </Component> + <Component Id="QtXml4.dll"> + <File Source="$(var.QtDir)\bin\QtXml4.dll" KeyPath="yes" /> + </Component> + </DirectoryRef> + </Fragment> + + <Fragment> + <DirectoryRef Id="QtPluginAccessibleFolder"> + <Component Id="qtaccessiblewidgets4.dll"> + <File Source="$(var.QtDir)\plugins\accessible\qtaccessiblewidgets4.dll" KeyPath="yes" /> + </Component> + </DirectoryRef> + </Fragment> + + <Fragment> + <DirectoryRef Id="QtPluginIconEnginesFolder"> + <Component Id="qsvgicon4.dll"> + <File Source="$(var.QtDir)\plugins\iconengines\qsvgicon4.dll" KeyPath="yes" /> + </Component> + </DirectoryRef> + </Fragment> + + <Fragment> + <DirectoryRef Id="QtPluginImageFormatsFolder"> + <Component Id="qgif4.dll"> + <File Source="$(var.QtDir)\plugins\imageformats\qgif4.dll" KeyPath="yes" /> + </Component> + <Component Id="qico4.dll"> + <File Source="$(var.QtDir)\plugins\imageformats\qico4.dll" KeyPath="yes" /> + </Component> + <Component Id="qjpeg4.dll"> + <File Source="$(var.QtDir)\plugins\imageformats\qjpeg4.dll" KeyPath="yes" /> + </Component> + <Component Id="qmng4.dll"> + <File Source="$(var.QtDir)\plugins\imageformats\qmng4.dll" KeyPath="yes" /> + </Component> + <Component Id="qsvg4.dll"> + <File Source="$(var.QtDir)\plugins\imageformats\qsvg4.dll" KeyPath="yes" /> + </Component> + <Component Id="qtiff4.dll"> + <File Source="$(var.QtDir)\plugins\imageformats\qtiff4.dll" KeyPath="yes" /> + </Component> + </DirectoryRef> + </Fragment> + + <Fragment> + <DirectoryRef Id="QtPluginCodecsFolder"> + <Component Id="qcncodecs4.dll"> + <File Source="$(var.QtDir)\plugins\codecs\qcncodecs4.dll" KeyPath="yes" /> + </Component> + <Component Id="qjpcodecs4.dll"> + <File Source="$(var.QtDir)\plugins\codecs\qjpcodecs4.dll" KeyPath="yes" /> + </Component> + <Component Id="qkrcodecs4.dll"> + <File Source="$(var.QtDir)\plugins\codecs\qkrcodecs4.dll" KeyPath="yes" /> + </Component> + <Component Id="qtwcodecs4.dll"> + <File Source="$(var.QtDir)\plugins\codecs\qtwcodecs4.dll" KeyPath="yes" /> + </Component> + </DirectoryRef> + </Fragment> + + <Fragment> + <ComponentGroup Id="Qt"> + <ComponentRef Id="QtCore4.dll" /> + <ComponentRef Id="QtGui4.dll" /> + <ComponentRef Id="QtNetwork4.dll" /> + <ComponentRef Id="QtOpenGL4.dll" /> + <ComponentRef Id="QtSql4.dll" /> + <ComponentRef Id="QtSvg4.dll" /> + <ComponentRef Id="QtXml4.dll" /> + + <ComponentRef Id="qtaccessiblewidgets4.dll" /> + <ComponentRef Id="qsvgicon4.dll" /> + <ComponentRef Id="qgif4.dll" /> + <ComponentRef Id="qico4.dll" /> + <ComponentRef Id="qjpeg4.dll" /> + <ComponentRef Id="qmng4.dll" /> + <ComponentRef Id="qsvg4.dll" /> + <ComponentRef Id="qtiff4.dll" /> + <ComponentRef Id="qcncodecs4.dll" /> + <ComponentRef Id="qjpcodecs4.dll" /> + <ComponentRef Id="qkrcodecs4.dll" /> + <ComponentRef Id="qtwcodecs4.dll" /> + </ComponentGroup> + </Fragment> + + <!-- Directory tree --> + <Fragment> + <DirectoryRef Id="INSTALLDIR"> + <Directory Id="PluginFolder" Name="plugins" /> + <Directory Id="QtPluginFolder" Name="QtPlugins"> + <Directory Id="QtPluginIconEnginesFolder" Name="iconengines" /> + <Directory Id="QtPluginImageFormatsFolder" Name="imageformats" /> + <Directory Id="QtPluginAccessibleFolder" Name="accessible" /> + <Directory Id="QtPluginCodecsFolder" Name="codecs" /> + </Directory> + </DirectoryRef> + </Fragment> +</Wix>
\ No newline at end of file diff --git a/installer/MumbleInstall.sln b/installer/MumbleInstall.sln new file mode 100644 index 000000000..ce1f62b14 --- /dev/null +++ b/installer/MumbleInstall.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "MumbleInstall", "MumbleInstall.wixproj", "{84AFEA8B-15E5-4CC7-B77D-27DD17030944}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {84AFEA8B-15E5-4CC7-B77D-27DD17030944}.Debug|x86.ActiveCfg = Debug|x86 + {84AFEA8B-15E5-4CC7-B77D-27DD17030944}.Debug|x86.Build.0 = Debug|x86 + {84AFEA8B-15E5-4CC7-B77D-27DD17030944}.Release|x86.ActiveCfg = Release|x86 + {84AFEA8B-15E5-4CC7-B77D-27DD17030944}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/installer/MumbleInstall.wixproj b/installer/MumbleInstall.wixproj new file mode 100644 index 000000000..46c11a5c6 --- /dev/null +++ b/installer/MumbleInstall.wixproj @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">x86</Platform> + <ProductVersion>3.5</ProductVersion> + <ProjectGuid>{84afea8b-15e5-4cc7-b77d-27dd17030944}</ProjectGuid> + <SchemaVersion>2.0</SchemaVersion> + <OutputName>Mumble</OutputName> + <OutputType>Package</OutputType> + <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix2010.targets</WixTargetsPath> + <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix2010.targets</WixTargetsPath> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> + <OutputPath>bin\$(Configuration)\</OutputPath> + <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> + <DefineConstants>Debug</DefineConstants> + <LinkerAdditionalOptions>-ext WixUIExtension</LinkerAdditionalOptions> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <OutputPath>bin\$(Configuration)\</OutputPath> + <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> + <DefineConstants> + </DefineConstants> + <LinkerAdditionalOptions>-ext WixUIExtension</LinkerAdditionalOptions> + <VerboseOutput>False</VerboseOutput> + </PropertyGroup> + <ItemGroup> + <Compile Include="Files.wxs" /> + <Compile Include="Plugins.wxs" /> + <Compile Include="Product.wxs" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="English.wxl" /> + </ItemGroup> + <ItemGroup> + <Content Include="Settings.wxi" /> + </ItemGroup> + <Import Project="$(WixTargetsPath)" /> + <!-- + To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Wix.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project>
\ No newline at end of file diff --git a/installer/Plugins.wxs b/installer/Plugins.wxs new file mode 100644 index 000000000..babe2bb63 --- /dev/null +++ b/installer/Plugins.wxs @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <?include "Settings.wxi" ?> + + <!-- Plugins --> + <Fragment> + <DirectoryRef Id="PluginFolder"> + <Component Id="aoc.dll"> + <File Source="$(var.SourceDir)\release\plugins\aoc.dll" KeyPath="yes" /> + </Component> + <Component Id="arma2.dll"> + <File Source="$(var.SourceDir)\release\plugins\arma2.dll" KeyPath="yes" /> + </Component> + <Component Id="bf1942.dll"> + <File Source="$(var.SourceDir)\release\plugins\bf1942.dll" KeyPath="yes" /> + </Component> + <Component Id="bf2.dll"> + <File Source="$(var.SourceDir)\release\plugins\bf2.dll" KeyPath="yes" /> + </Component> + <Component Id="bf2142.dll"> + <File Source="$(var.SourceDir)\release\plugins\bf2142.dll" KeyPath="yes" /> + </Component> + <Component Id="bfbc2.dll"> + <File Source="$(var.SourceDir)\release\plugins\bfbc2.dll" KeyPath="yes" /> + </Component> + <Component Id="bfheroes.dll"> + <File Source="$(var.SourceDir)\release\plugins\bfheroes.dll" KeyPath="yes" /> + </Component> + <Component Id="borderlands.dll"> + <File Source="$(var.SourceDir)\release\plugins\borderlands.dll" KeyPath="yes" /> + </Component> + <Component Id="cod2.dll"> + <File Source="$(var.SourceDir)\release\plugins\cod2.dll" KeyPath="yes" /> + </Component> + <Component Id="cod4.dll"> + <File Source="$(var.SourceDir)\release\plugins\cod4.dll" KeyPath="yes" /> + </Component> + <Component Id="cod5.dll"> + <File Source="$(var.SourceDir)\release\plugins\cod5.dll" KeyPath="yes" /> + </Component> + <Component Id="codmw2.dll"> + <File Source="$(var.SourceDir)\release\plugins\codmw2.dll" KeyPath="yes" /> + </Component> + <Component Id="codmw2so.dll"> + <File Source="$(var.SourceDir)\release\plugins\codmw2so.dll" KeyPath="yes" /> + </Component> + <Component Id="cs.dll"> + <File Source="$(var.SourceDir)\release\plugins\cs.dll" KeyPath="yes" /> + </Component> + <Component Id="css.dll"> + <File Source="$(var.SourceDir)\release\plugins\css.dll" KeyPath="yes" /> + </Component> + <Component Id="dods.dll"> + <File Source="$(var.SourceDir)\release\plugins\dods.dll" /> + </Component> + <Component Id="dys.dll"> + <File Source="$(var.SourceDir)\release\plugins\dys.dll" KeyPath="yes" /> + </Component> + <Component Id="etqw.dll"> + <File Source="$(var.SourceDir)\release\plugins\etqw.dll" KeyPath="yes" /> + </Component> + <Component Id="gmod.dll"> + <File Source="$(var.SourceDir)\release\plugins\gmod.dll" KeyPath="yes" /> + </Component> + <Component Id="hl2dm.dll"> + <File Source="$(var.SourceDir)\release\plugins\hl2dm.dll" KeyPath="yes" /> + </Component> + <Component Id="insurgency.dll"> + <File Source="$(var.SourceDir)\release\plugins\insurgency.dll" KeyPath="yes" /> + </Component> + <Component Id="l4d.dll"> + <File Source="$(var.SourceDir)\release\plugins\l4d.dll" KeyPath="yes" /> + </Component> + <Component Id="l4d2.dll"> + <File Source="$(var.SourceDir)\release\plugins\l4d2.dll" KeyPath="yes" /> + </Component> + <Component Id="link.dll"> + <File Source="$(var.SourceDir)\release\plugins\link.dll" KeyPath="yes" /> + </Component> + <Component Id="lotro.dll"> + <File Source="$(var.SourceDir)\release\plugins\lotro.dll" KeyPath="yes" /> + </Component> + <Component Id="manual.dll"> + <File Source="$(var.SourceDir)\release\plugins\manual.dll" KeyPath="yes" /> + </Component> + <Component Id="sto.dll"> + <File Source="$(var.SourceDir)\release\plugins\sto.dll" KeyPath="yes" /> + </Component> + <Component Id="tf2.dll"> + <File Source="$(var.SourceDir)\release\plugins\tf2.dll" KeyPath="yes" /> + </Component> + <Component Id="ut2004.dll"> + <File Source="$(var.SourceDir)\release\plugins\ut2004.dll" KeyPath="yes" /> + </Component> + <Component Id="ut3.dll"> + <File Source="$(var.SourceDir)\release\plugins\ut3.dll" KeyPath="yes" /> + </Component> + <Component Id="wolfet.dll"> + <File Source="$(var.SourceDir)\release\plugins\wolfet.dll" KeyPath="yes" /> + </Component> + <Component Id="wow.dll"> + <File Source="$(var.SourceDir)\release\plugins\wow.dll" KeyPath="yes" /> + </Component> + </DirectoryRef> + + <ComponentGroup Id="Plugins"> + <ComponentRef Id="aoc.dll" /> + <ComponentRef Id="arma2.dll" /> + <ComponentRef Id="bf1942.dll" /> + <ComponentRef Id="bf2.dll" /> + <ComponentRef Id="bf2142.dll" /> + <ComponentRef Id="bfbc2.dll" /> + <ComponentRef Id="bfheroes.dll" /> + <ComponentRef Id="borderlands.dll" /> + <ComponentRef Id="cod2.dll" /> + <ComponentRef Id="cod4.dll" /> + <ComponentRef Id="cod5.dll" /> + <ComponentRef Id="codmw2.dll" /> + <ComponentRef Id="codmw2so.dll" /> + <ComponentRef Id="cs.dll" /> + <ComponentRef Id="css.dll" /> + <ComponentRef Id="dods.dll" /> + <ComponentRef Id="dys.dll" /> + <ComponentRef Id="etqw.dll" /> + <ComponentRef Id="gmod.dll" /> + <ComponentRef Id="hl2dm.dll" /> + <ComponentRef Id="insurgency.dll" /> + <ComponentRef Id="l4d.dll" /> + <ComponentRef Id="l4d2.dll" /> + <ComponentRef Id="link.dll" /> + <ComponentRef Id="lotro.dll" /> + <ComponentRef Id="manual.dll" /> + <ComponentRef Id="sto.dll" /> + <ComponentRef Id="tf2.dll" /> + <ComponentRef Id="ut2004.dll" /> + <ComponentRef Id="ut3.dll" /> + <ComponentRef Id="wolfet.dll" /> + <ComponentRef Id="wow.dll" /> + </ComponentGroup> + </Fragment> +</Wix>
\ No newline at end of file diff --git a/installer/Product.wxs b/installer/Product.wxs new file mode 100644 index 000000000..d259f26ef --- /dev/null +++ b/installer/Product.wxs @@ -0,0 +1,196 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <?include "Settings.wxi" ?> + + <Product Id="*" Name="$(var.ProductName) $(var.ProductVersion)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.ProductManufacturer)" UpgradeCode="B0EEFCC7-8A9c-4471-AB10-CBD35BE3161D"> + <Package Id="*" InstallerVersion="200" Compressed="yes" /> + + <Property Id='NSISINSTALL'> + <RegistrySearch Id='NSISSearch' Win64='no' Root='HKLM' Key='SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mumble' Type='directory' Name='InstallLocation' /> + </Property> + + <CustomAction Id="SetNSISPath" Property="NSISPath" Value="[NSISINSTALL]Uninstall.exe" /> + <CustomAction Id="NSISUninstall" Property="NSISPath" ExeCommand="/S _?=[NSISINSTALL]" Execute="deferred" Impersonate="no" Return="check" /> + <UI> + <ProgressText Action="NSISUninstall">Uninstalling old version</ProgressText> + </UI> + + <Property Id='INSTALLDIR'> + <ComponentSearch Id='SearchMumbleComponent' Guid='A08F7909-1116-4AC8-9422-051FA1A1BE19' /> + </Property> + + <!-- + <Condition Message="Uninstall [NSISINSTALL] before installing this package."> + Installed OR NOT NSISINSTALL + </Condition> +--> + <Condition Message='$(var.ProductName) requires Windows XP or higher'> + VersionNT >= 501 + </Condition> + + <MajorUpgrade AllowDowngrades='no' AllowSameVersionUpgrades='yes' MigrateFeatures='yes' Schedule='afterInstallInitialize' DowngradeErrorMessage='A later version of [ProductName] is already installed.' /> + + <Media Id="1" Cabinet="$(var.ProductName).cab" EmbedCab="yes" CompressionLevel="high" /> + + <UIRef Id="WixUI_FeatureTree" /> + <UIRef Id="WixUI_ErrorProgressText" /> + + <Property Id="ALLUSERS" Value="2" /> + <Property Id="ARPURLINFOABOUT" Value="http://mumble.sourceforge.net/" /> + <Property Id="ARPURLUPDATEINFO" Value="http://mumble.sourceforge.net/" /> + <Property Id='ARPPRODUCTICON'>mumble.ico</Property> + + <WixVariable Id="WixUILicenseRtf" Value="$(var.SourceDir)\installer\gpl.rtf" /> + + <Directory Id="TARGETDIR" Name="SourceDir"> + <Directory Id="ProgramFilesFolder"> + <Directory Id="INSTALLDIR" Name="$(var.ProductName)"> + </Directory> + + <?ifdef RedistDirVC9 ?> + <Merge Id="VCRedist" SourceFile="$(var.RedistDirVC9)\Microsoft_VC90_CRT_x86.msm" DiskId="1" Language="0" /> + <Merge Id='VCRedistPolicy' SourceFile='$(var.RedistDirVC9)\policy.x.xx.microsoft.vcxx.crt.x86_msm.msm' DiskId='1' Language='0' /> + <?endif ?> + </Directory> + + <Directory Id="DesktopFolder" /> + + <Directory Id="ProgramMenuFolder"> + <Directory Id="ApplicationProgramsFolder" Name="$(var.ProductName)" /> + </Directory> + + <Directory Id="AppDataFolder"> + <Directory Id="AppDataProgramFolder" Name="$(var.ProductName)"> + <Directory Id="AppDataPluginFolder" Name="Plugins" /> + </Directory> + </Directory> + </Directory> + + <Icon Id="mumble.ico" SourceFile="$(var.SourceDir)\icons\mumble.ico"/> + <Icon Id="murmur.ico" SourceFile="$(var.SourceDir)\icons\murmur.ico"/> + <Icon Id="Readme.txt" SourceFile="$(var.SourceDir)\installer\speex.txt"/> + + <DirectoryRef Id="ApplicationProgramsFolder"> + <Component Id="UninstallShortcut" Guid="AFCE8451-06BF-4BD0-A25A-3F9832B39A0F"> + <Shortcut Id="UninstallMumble" Name="!(loc.MUMBLE_UNINSTALL_LNK)" Target="[System64Folder]msiexec.exe" Arguments="/x [ProductCode]" Directory="ApplicationProgramsFolder" /> + <RegistryValue Key="Software\Mumble\Uninstall" Root="HKCU" Value="1" Type="integer" KeyPath="yes" /> + <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall" /> + </Component> + </DirectoryRef> + + <DirectoryRef Id="AppDataPluginFolder"> + <Component Id="NSISUninstall" Guid="3116B7EF-CBA3-4E0B-A2C5-0F0608038905"> + <Condition>NOT Installed AND NSISINSTALL</Condition> + <RegistryValue Key="Software\Mumble\Uninstall" Root="HKCU" Value="1" Type="integer" KeyPath="yes" /> + <RemoveFile Id="NSISUninstaller" Property="NSISINSTALL" Name="Uninstall.exe" On="install"/> + <RemoveFile Id="DownloadedPlugins" Directory="AppDataPluginFolder" Name="*.dll" On="install" /> + <RemoveFolder Id="AppDataPluginFolder" On="uninstall" /> + <RemoveFolder Id="AppDataProgramFolder" Directory="AppDataProgramFolder" On="uninstall" /> + </Component> + </DirectoryRef> + + <ComponentGroup Id="LibrariesCommon"> + <ComponentGroupRef Id="Qt"/> + + <ComponentRef Id="libeay32.dll" /> + <ComponentRef Id="ssleay32.dll" /> + <?ifdef ZlibDir ?> + <ComponentRef Id="zlib1.dll" /> + <?endif ?> + + <ComponentRef Id="qt.conf"/> + + <ComponentRef Id="licence.txt" /> + <ComponentRef Id="Readme.txt" /> + <ComponentRef Id="Changes.txt" /> + <ComponentRef Id="qt.txt" /> + + <ComponentRef Id="dbghelp.dll" /> + + <?ifdef ProtoBufDir ?> + <ComponentRef Id="libprotobuf.dll" /> + <?endif ?> + + <?ifdef IntelCppDir ?> + <ComponentRef Id="libmmd.dll"/> + <?endif ?> + + <?ifdef RedistDirVC10 ?> + <ComponentRef Id="msvcp100.dll" /> + <ComponentRef Id="msvcr100.dll" /> + <?endif ?> + </ComponentGroup> + + <ComponentGroup Id="ClientCommon"> + <?ifdef SndFileDir ?> + <ComponentRef Id="libsndfile1.dll" /> + <?endif ?> + <ComponentRef Id="speex.dll" /> + <ComponentRef Id="speex.txt" /> + </ComponentGroup> + + <Feature Id="Mumble" Title="$(var.ProductName)" Description="!(loc.DESC_SectionMumble)" Display="expand" Level="1" ConfigurableDirectory="INSTALLDIR"> + <Feature Id="MumbleClient" Title="!(loc.MUMBLE_SEC_MUMBLE)" Description="!(loc.DESC_SectionMumble)" Level="1"> + <ComponentGroupRef Id="ClientCommon" /> + + <ComponentGroupRef Id="Plugins"/> + <ComponentRef Id="celt0.0.7.0.dll" /> + <ComponentRef Id="celt0.0.8.0.dll" /> + <?ifdef IntelCppDir ?> + <ComponentRef Id="celt0.0.7.0.sse.dll" /> + <ComponentRef Id="celt0.0.8.0.sse.dll" /> + <ComponentRef Id="celt0.0.7.0.sse2.dll" /> + <ComponentRef Id="celt0.0.8.0.sse2.dll" /> + <?endif ?> + <ComponentRef Id="mumble.exe" /> + <ComponentRef Id="mumble_ol.dll" /> + + </Feature> + + <?if $(var.CompatClient) = true ?> + <Feature Id="Mumble11x" Title="!(loc.MUMBLE_SEC_MUMBLE11X)" Description="!(loc.DESC_SectionMumble11X)" Level="1000"> + <ComponentGroupRef Id="ClientCommon" /> + + <ComponentRef Id="mumble11x.exe" /> + </Feature> + <?endif ?> + </Feature> + + <Feature Id="Murmur" Title="!(loc.MUMBLE_SEC_MURMUR)" Description="!(loc.DESC_SectionMurmur)" Level="1000"> + <?ifdef IceDir ?> + <ComponentRef Id="bzip2.dll" /> + <ComponentRef Id="ice34.dll" /> + <ComponentRef Id="iceutil34.dll" /> + <?endif ?> + <?ifdef MySQLDir ?> + <ComponentRef Id="libmysql.dll" /> + <?endif ?> + <?ifdef DBusDir ?> + <ComponentGroupRef Id="DBus" /> + <?endif ?> + + <ComponentRef Id="murmur.exe" /> + <ComponentRef Id="murmur.ini" /> + <ComponentRef Id="Murmur.ice" /> + </Feature> + + <Feature Id="Libraries" Title="Required Libraries" Display="hidden" AllowAdvertise="no" Absent="disallow" Level="1"> + <ComponentGroupRef Id="LibrariesCommon" /> + <ComponentRef Id="UninstallShortcut" /> + <ComponentRef Id="NSISUninstall" /> + </Feature> + + <?ifdef RedistDirVC9 ?> + <Feature Id="VCRedist" Title="Visual C++ 9.0 Runtime" AllowAdvertise="no" Display="hidden" Level="1"> + <MergeRef Id="VCRedist"/> + <MergeRef Id='VCRedistPolicy' /> + </Feature> + <?endif ?> + + <InstallExecuteSequence> + <AppSearch Sequence='1' /> + <Custom Action="SetNSISPath" After="AppSearch">NSISINSTALL</Custom> + <Custom Action='NSISUninstall' After='RemoveExistingProducts'>NSISINSTALL AND NOT Installed</Custom> + </InstallExecuteSequence> + </Product> +</Wix> diff --git a/installer/Settings.wxi b/installer/Settings.wxi new file mode 100644 index 000000000..87056e8ae --- /dev/null +++ b/installer/Settings.wxi @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<Include> + <?define ProductName = "Mumble" ?> + <?define ProductManufacturer = "Mumble" ?> + <?define ProductVersion = "1.2.3" ?> + + <?define CompatClient = false ?> + + <?define SourceDir = "\dev\mumble" ?> + <?define QtDir = "\dev\qt" ?> + <?define OpenSslDir = "\dev\openssl" ?> + <?define DebugToolsDir = "\Program Files (x86)\Debugging Tools for Windows (x86)" ?> + <?define DebugToolsDir = "C:\Windows\System32" ?> + <?define RedistDirVC10 = "$(var.DevEnvDir)\..\..\VC\redist\x86\Microsoft.VC100.CRT" ?> + <?define ZlibDir = "\dev\zlib" ?> + + <!-- + <?define RedistDirVC9 = "$(var.DevEnvDir)\..\..\VC\redist\x86" ?> + <?define IntelCppDir = "\Program Files (x86)\Intel\Compiler\11.1\054\Bin\ia32" ?> + <?define SndFileDir = "\dev\libsndfile" ?> + <?define DBusDir = "\dev\dbus" ?> + <?define MySQLDir = "\dev\MySQL" ?> + <?define ProtoBufDir = "\dev\protobuf-2.3.0" ?> + --> + + <?ifdef RedistDirVC10 ?> + <?define IceDir = "\dev\Ice\bin\vc100" ?> + <?else ?> + <?define IceDir = "\dev\Ice\bin" ?> + <?endif ?> +</Include> diff --git a/installer/gpl.rtf b/installer/gpl.rtf new file mode 100644 index 000000000..831876ba8 --- /dev/null +++ b/installer/gpl.rtf @@ -0,0 +1,344 @@ +{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
+{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\lang1031\f0\fs16\tab\tab GNU GENERAL PUBLIC LICENSE\par
+\tab\tab Version 2, June 1991\par
+\par
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.\par
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\par
+ Everyone is permitted to copy and distribute verbatim copies\par
+ of this license document, but changing it is not allowed.\par
+\par
+\tab\tab\tab Preamble\par
+\par
+ The licenses for most software are designed to take away your\par
+freedom to share and change it. By contrast, the GNU General Public\par
+License is intended to guarantee your freedom to share and change free\par
+software--to make sure the software is free for all its users. This\par
+General Public License applies to most of the Free Software\par
+Foundation's software and to any other program whose authors commit to\par
+using it. (Some other Free Software Foundation software is covered by\par
+the GNU Library General Public License instead.) You can apply it to\par
+your programs, too.\par
+\par
+ When we speak of free software, we are referring to freedom, not\par
+price. Our General Public Licenses are designed to make sure that you\par
+have the freedom to distribute copies of free software (and charge for\par
+this service if you wish), that you receive source code or can get it\par
+if you want it, that you can change the software or use pieces of it\par
+in new free programs; and that you know you can do these things.\par
+\par
+ To protect your rights, we need to make restrictions that forbid\par
+anyone to deny you these rights or to ask you to surrender the rights.\par
+These restrictions translate to certain responsibilities for you if you\par
+distribute copies of the software, or if you modify it.\par
+\par
+ For example, if you distribute copies of such a program, whether\par
+gratis or for a fee, you must give the recipients all the rights that\par
+you have. You must make sure that they, too, receive or can get the\par
+source code. And you must show them these terms so they know their\par
+rights.\par
+\par
+ We protect your rights with two steps: (1) copyright the software, and\par
+(2) offer you this license which gives you legal permission to copy,\par
+distribute and/or modify the software.\par
+\par
+ Also, for each author's protection and ours, we want to make certain\par
+that everyone understands that there is no warranty for this free\par
+software. If the software is modified by someone else and passed on, we\par
+want its recipients to know that what they have is not the original, so\par
+that any problems introduced by others will not reflect on the original\par
+authors' reputations.\par
+\par
+ Finally, any free program is threatened constantly by software\par
+patents. We wish to avoid the danger that redistributors of a free\par
+program will individually obtain patent licenses, in effect making the\par
+program proprietary. To prevent this, we have made it clear that any\par
+patent must be licensed for everyone's free use or not licensed at all.\par
+\par
+ The precise terms and conditions for copying, distribution and\par
+modification follow.\par
+\page\par
+\tab\tab GNU GENERAL PUBLIC LICENSE\par
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\par
+\par
+ 0. This License applies to any program or other work which contains\par
+a notice placed by the copyright holder saying it may be distributed\par
+under the terms of this General Public License. The "Program", below,\par
+refers to any such program or work, and a "work based on the Program"\par
+means either the Program or any derivative work under copyright law:\par
+that is to say, a work containing the Program or a portion of it,\par
+either verbatim or with modifications and/or translated into another\par
+language. (Hereinafter, translation is included without limitation in\par
+the term "modification".) Each licensee is addressed as "you".\par
+\par
+Activities other than copying, distribution and modification are not\par
+covered by this License; they are outside its scope. The act of\par
+running the Program is not restricted, and the output from the Program\par
+is covered only if its contents constitute a work based on the\par
+Program (independent of having been made by running the Program).\par
+Whether that is true depends on what the Program does.\par
+\par
+ 1. You may copy and distribute verbatim copies of the Program's\par
+source code as you receive it, in any medium, provided that you\par
+conspicuously and appropriately publish on each copy an appropriate\par
+copyright notice and disclaimer of warranty; keep intact all the\par
+notices that refer to this License and to the absence of any warranty;\par
+and give any other recipients of the Program a copy of this License\par
+along with the Program.\par
+\par
+You may charge a fee for the physical act of transferring a copy, and\par
+you may at your option offer warranty protection in exchange for a fee.\par
+\par
+ 2. You may modify your copy or copies of the Program or any portion\par
+of it, thus forming a work based on the Program, and copy and\par
+distribute such modifications or work under the terms of Section 1\par
+above, provided that you also meet all of these conditions:\par
+\par
+ a) You must cause the modified files to carry prominent notices\par
+ stating that you changed the files and the date of any change.\par
+\par
+ b) You must cause any work that you distribute or publish, that in\par
+ whole or in part contains or is derived from the Program or any\par
+ part thereof, to be licensed as a whole at no charge to all third\par
+ parties under the terms of this License.\par
+\par
+ c) If the modified program normally reads commands interactively\par
+ when run, you must cause it, when started running for such\par
+ interactive use in the most ordinary way, to print or display an\par
+ announcement including an appropriate copyright notice and a\par
+ notice that there is no warranty (or else, saying that you provide\par
+ a warranty) and that users may redistribute the program under\par
+ these conditions, and telling the user how to view a copy of this\par
+ License. (Exception: if the Program itself is interactive but\par
+ does not normally print such an announcement, your work based on\par
+ the Program is not required to print an announcement.)\par
+\page\par
+These requirements apply to the modified work as a whole. If\par
+identifiable sections of that work are not derived from the Program,\par
+and can be reasonably considered independent and separate works in\par
+themselves, then this License, and its terms, do not apply to those\par
+sections when you distribute them as separate works. But when you\par
+distribute the same sections as part of a whole which is a work based\par
+on the Program, the distribution of the whole must be on the terms of\par
+this License, whose permissions for other licensees extend to the\par
+entire whole, and thus to each and every part regardless of who wrote it.\par
+\par
+Thus, it is not the intent of this section to claim rights or contest\par
+your rights to work written entirely by you; rather, the intent is to\par
+exercise the right to control the distribution of derivative or\par
+collective works based on the Program.\par
+\par
+In addition, mere aggregation of another work not based on the Program\par
+with the Program (or with a work based on the Program) on a volume of\par
+a storage or distribution medium does not bring the other work under\par
+the scope of this License.\par
+\par
+ 3. You may copy and distribute the Program (or a work based on it,\par
+under Section 2) in object code or executable form under the terms of\par
+Sections 1 and 2 above provided that you also do one of the following:\par
+\par
+ a) Accompany it with the complete corresponding machine-readable\par
+ source code, which must be distributed under the terms of Sections\par
+ 1 and 2 above on a medium customarily used for software interchange; or,\par
+\par
+ b) Accompany it with a written offer, valid for at least three\par
+ years, to give any third party, for a charge no more than your\par
+ cost of physically performing source distribution, a complete\par
+ machine-readable copy of the corresponding source code, to be\par
+ distributed under the terms of Sections 1 and 2 above on a medium\par
+ customarily used for software interchange; or,\par
+\par
+ c) Accompany it with the information you received as to the offer\par
+ to distribute corresponding source code. (This alternative is\par
+ allowed only for noncommercial distribution and only if you\par
+ received the program in object code or executable form with such\par
+ an offer, in accord with Subsection b above.)\par
+\par
+The source code for a work means the preferred form of the work for\par
+making modifications to it. For an executable work, complete source\par
+code means all the source code for all modules it contains, plus any\par
+associated interface definition files, plus the scripts used to\par
+control compilation and installation of the executable. However, as a\par
+special exception, the source code distributed need not include\par
+anything that is normally distributed (in either source or binary\par
+form) with the major components (compiler, kernel, and so on) of the\par
+operating system on which the executable runs, unless that component\par
+itself accompanies the executable.\par
+\par
+If distribution of executable or object code is made by offering\par
+access to copy from a designated place, then offering equivalent\par
+access to copy the source code from the same place counts as\par
+distribution of the source code, even though third parties are not\par
+compelled to copy the source along with the object code.\par
+\page\par
+ 4. You may not copy, modify, sublicense, or distribute the Program\par
+except as expressly provided under this License. Any attempt\par
+otherwise to copy, modify, sublicense or distribute the Program is\par
+void, and will automatically terminate your rights under this License.\par
+However, parties who have received copies, or rights, from you under\par
+this License will not have their licenses terminated so long as such\par
+parties remain in full compliance.\par
+\par
+ 5. You are not required to accept this License, since you have not\par
+signed it. However, nothing else grants you permission to modify or\par
+distribute the Program or its derivative works. These actions are\par
+prohibited by law if you do not accept this License. Therefore, by\par
+modifying or distributing the Program (or any work based on the\par
+Program), you indicate your acceptance of this License to do so, and\par
+all its terms and conditions for copying, distributing or modifying\par
+the Program or works based on it.\par
+\par
+ 6. Each time you redistribute the Program (or any work based on the\par
+Program), the recipient automatically receives a license from the\par
+original licensor to copy, distribute or modify the Program subject to\par
+these terms and conditions. You may not impose any further\par
+restrictions on the recipients' exercise of the rights granted herein.\par
+You are not responsible for enforcing compliance by third parties to\par
+this License.\par
+\par
+ 7. If, as a consequence of a court judgment or allegation of patent\par
+infringement or for any other reason (not limited to patent issues),\par
+conditions are imposed on you (whether by court order, agreement or\par
+otherwise) that contradict the conditions of this License, they do not\par
+excuse you from the conditions of this License. If you cannot\par
+distribute so as to satisfy simultaneously your obligations under this\par
+License and any other pertinent obligations, then as a consequence you\par
+may not distribute the Program at all. For example, if a patent\par
+license would not permit royalty-free redistribution of the Program by\par
+all those who receive copies directly or indirectly through you, then\par
+the only way you could satisfy both it and this License would be to\par
+refrain entirely from distribution of the Program.\par
+\par
+If any portion of this section is held invalid or unenforceable under\par
+any particular circumstance, the balance of the section is intended to\par
+apply and the section as a whole is intended to apply in other\par
+circumstances.\par
+\par
+It is not the purpose of this section to induce you to infringe any\par
+patents or other property right claims or to contest validity of any\par
+such claims; this section has the sole purpose of protecting the\par
+integrity of the free software distribution system, which is\par
+implemented by public license practices. Many people have made\par
+generous contributions to the wide range of software distributed\par
+through that system in reliance on consistent application of that\par
+system; it is up to the author/donor to decide if he or she is willing\par
+to distribute software through any other system and a licensee cannot\par
+impose that choice.\par
+\par
+This section is intended to make thoroughly clear what is believed to\par
+be a consequence of the rest of this License.\par
+\page\par
+ 8. If the distribution and/or use of the Program is restricted in\par
+certain countries either by patents or by copyrighted interfaces, the\par
+original copyright holder who places the Program under this License\par
+may add an explicit geographical distribution limitation excluding\par
+those countries, so that distribution is permitted only in or among\par
+countries not thus excluded. In such case, this License incorporates\par
+the limitation as if written in the body of this License.\par
+\par
+ 9. The Free Software Foundation may publish revised and/or new versions\par
+of the General Public License from time to time. Such new versions will\par
+be similar in spirit to the present version, but may differ in detail to\par
+address new problems or concerns.\par
+\par
+Each version is given a distinguishing version number. If the Program\par
+specifies a version number of this License which applies to it and "any\par
+later version", you have the option of following the terms and conditions\par
+either of that version or of any later version published by the Free\par
+Software Foundation. If the Program does not specify a version number of\par
+this License, you may choose any version ever published by the Free Software\par
+Foundation.\par
+\par
+ 10. If you wish to incorporate parts of the Program into other free\par
+programs whose distribution conditions are different, write to the author\par
+to ask for permission. For software which is copyrighted by the Free\par
+Software Foundation, write to the Free Software Foundation; we sometimes\par
+make exceptions for this. Our decision will be guided by the two goals\par
+of preserving the free status of all derivatives of our free software and\par
+of promoting the sharing and reuse of software generally.\par
+\par
+\tab\tab\tab NO WARRANTY\par
+\par
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\par
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN\par
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\par
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\par
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\par
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS\par
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE\par
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\par
+REPAIR OR CORRECTION.\par
+\par
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\par
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\par
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\par
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\par
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\par
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\par
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\par
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\par
+POSSIBILITY OF SUCH DAMAGES.\par
+\par
+\tab\tab END OF TERMS AND CONDITIONS\par
+\page\par
+\tab How to Apply These Terms to Your New Programs\par
+\par
+ If you develop a new program, and you want it to be of the greatest\par
+possible use to the public, the best way to achieve this is to make it\par
+free software which everyone can redistribute and change under these terms.\par
+\par
+ To do so, attach the following notices to the program. It is safest\par
+to attach them to the start of each source file to most effectively\par
+convey the exclusion of warranty; and each file should have at least\par
+the "copyright" line and a pointer to where the full notice is found.\par
+\par
+ <one line to give the program's name and a brief idea of what it does.>\par
+ Copyright (C) <year> <name of author>\par
+\par
+ This program is free software; you can redistribute it and/or modify\par
+ it under the terms of the GNU General Public License as published by\par
+ the Free Software Foundation; either version 2 of the License, or\par
+ (at your option) any later version.\par
+\par
+ This program is distributed in the hope that it will be useful,\par
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\par
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\par
+ GNU General Public License for more details.\par
+\par
+ You should have received a copy of the GNU General Public License\par
+ along with this program; if not, write to the Free Software\par
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\par
+\par
+\par
+Also add information on how to contact you by electronic and paper mail.\par
+\par
+If the program is interactive, make it output a short notice like this\par
+when it starts in an interactive mode:\par
+\par
+ Gnomovision version 69, Copyright (C) year name of author\par
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\par
+ This is free software, and you are welcome to redistribute it\par
+ under certain conditions; type `show c' for details.\par
+\par
+The hypothetical commands `show w' and `show c' should show the appropriate\par
+parts of the General Public License. Of course, the commands you use may\par
+be called something other than `show w' and `show c'; they could even be\par
+mouse-clicks or menu items--whatever suits your program.\par
+\par
+You should also get your employer (if you work as a programmer) or your\par
+school, if any, to sign a "copyright disclaimer" for the program, if\par
+necessary. Here is a sample; alter the names:\par
+\par
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program\par
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.\par
+\par
+ <signature of Ty Coon>, 1 April 1989\par
+ Ty Coon, President of Vice\par
+\par
+This General Public License does not permit incorporating your program into\par
+proprietary programs. If your program is a subroutine library, you may\par
+consider it more useful to permit linking proprietary applications with the\par
+library. If this is what you want to do, use the GNU Library General\par
+Public License instead of this License.\par
+\par
+}
+ |