first commit for openGauss connect odbc code
This commit is contained in:
5
installer/.gitignore
vendored
Normal file
5
installer/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
psqlodbc.msi
|
||||
psqlodbc.msm
|
||||
psqlodbc.wixobj
|
||||
psqlodbc.wixpdb
|
||||
psqlodbcm.wixobj
|
39
installer/README.txt
Normal file
39
installer/README.txt
Normal file
@ -0,0 +1,39 @@
|
||||
This directory contains the psqlODBC installer for Windows. To build the
|
||||
installer, you will need a copy of WiX installed somewhere in your system
|
||||
path. The installer has been tested with WiX version 3.0.2420 and WiX 3.8 at
|
||||
the time writing.
|
||||
|
||||
WiX may be downloaded from:
|
||||
|
||||
http://wix.codeplex.com/
|
||||
|
||||
|
||||
Two parallel systems to build the installers are currently provided:
|
||||
|
||||
POWERSHELL BASED
|
||||
----------
|
||||
|
||||
Ensure that suitable binaries are in the parent directory Release build outputs
|
||||
(see ..\winbuild for that).
|
||||
|
||||
.\buildInstallers.ps1
|
||||
|
||||
For help:
|
||||
|
||||
Get-Help .\buildInstallers.ps1
|
||||
|
||||
If you get execution policy errors:
|
||||
|
||||
Set-ExecutionPolicy RemoteSigned
|
||||
|
||||
and try again.
|
||||
|
||||
Note that these installer generators use the configuration file prepared by the
|
||||
PowerShell scripts in ..\winbuild, defaulting to ..\winbuild\configuration.xml,
|
||||
so you can't just mix them with SDK- or NMake based compilation.
|
||||
|
||||
NMAKE BASED
|
||||
-----------
|
||||
|
||||
Use the top-level file (win64.mak), per the documentation in
|
||||
docs/win32-compilation.html, to build installers using NMake.
|
BIN
installer/background.bmp
Normal file
BIN
installer/background.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 152 KiB |
BIN
installer/banner.bmp
Normal file
BIN
installer/banner.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
368
installer/buildInstallers.ps1
Normal file
368
installer/buildInstallers.ps1
Normal file
@ -0,0 +1,368 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Build all installers of psqlodbc project.
|
||||
.DESCRIPTION
|
||||
Build psqlodbc_x86.msi(msm), psqlodbc_x64.msi(msm).
|
||||
.PARAMETER cpu
|
||||
Specify build cpu type, "both"(default), "x86" or "x64" is
|
||||
available.
|
||||
.PARAMETER AlongWithDrivers
|
||||
Specify when you'd like to build drivers before building installers.
|
||||
.PARAMETER ExcludeRuntime
|
||||
Specify when you'd like to exclude a msvc runtime dll from the installer.
|
||||
.PARAMETER RedistUCRT
|
||||
Specify when you'd like to redistribute Visual C++ 2015(or later) Redistributable.
|
||||
.PARAMETER NoPDB
|
||||
Specify when you'd rather not include PDB files.
|
||||
.PARAMETER BuildConfigPath
|
||||
Specify the configuration xml file name if you want to use
|
||||
the configuration file other than standard one.
|
||||
The relative path is relative to the current directory.
|
||||
.EXAMPLE
|
||||
> .\buildInstallers
|
||||
Build 32bit and 64bit installers.
|
||||
.EXAMPLE
|
||||
> .\buildInstallers x86
|
||||
Build 32bit installers.
|
||||
.NOTES
|
||||
Author: Hiroshi Inoue
|
||||
Date: July 4, 2014
|
||||
#>
|
||||
# build 32bit and/or 64bit installers
|
||||
#
|
||||
Param(
|
||||
[ValidateSet("x86", "x64", "both")]
|
||||
[string]$cpu="both",
|
||||
[switch]$AlongWithDrivers,
|
||||
[switch]$ExcludeRuntime,
|
||||
[switch]$RedistUCRT,
|
||||
[switch]$NoPDB,
|
||||
[string]$BuildConfigPath
|
||||
)
|
||||
|
||||
[int]$ucrt_version=14
|
||||
[String]$str_msvcr="msvcr"
|
||||
[String]$str_vcrun="vcruntime"
|
||||
[String]$str_msvcp="msvcp"
|
||||
[String]$msrun_ptn="msvcr|vcruntime"
|
||||
|
||||
function msvcrun([int]$runtime_version)
|
||||
{
|
||||
[String]$str = if ($runtime_version -lt $ucrt_version) {$str_msvcr} else {$str_vcrun}
|
||||
return $str
|
||||
}
|
||||
|
||||
function env_vcversion_no()
|
||||
{
|
||||
$viver = $env:VisualStudioVersion
|
||||
if ("$viver" -ne "") {
|
||||
if ("$viver" -match "(\d+)\.0") {
|
||||
return [int]$matches[1]
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
function toolset_no_to_runtimeversion([int]$toolset_no)
|
||||
{
|
||||
return [int] ($toolset_no / 10)
|
||||
}
|
||||
|
||||
function runtimeversion_to_toolset_no([int]$runtime_version)
|
||||
{
|
||||
[int]$toolset_no = $runtime_version * 10
|
||||
if ($runtime_version -eq 14) { # possibly be v141
|
||||
[int]$vc_ver = 15;
|
||||
if ((env_vcversion_no) -eq $vc_ver) { # v141
|
||||
$toolseto++
|
||||
} elseif (Find-VSDir $vc_ver -ne "") { # v141
|
||||
$toolset_no++
|
||||
}
|
||||
}
|
||||
return $toolset_no
|
||||
}
|
||||
|
||||
function toolset_no_to_vcversion([int]$toolset_no)
|
||||
{
|
||||
return [int] ($toolset_no / 10 + $toolset_no % 10)
|
||||
}
|
||||
|
||||
function findRuntime([int]$toolset_no, [String]$pgmvc)
|
||||
{
|
||||
$runtime_version = toolset_no_to_runtimeversion($toolset_no)
|
||||
$vcversion_no = toolset_no_to_vcversion($toolset_no)
|
||||
# where's the dll?
|
||||
[String]$rt_dllname = (msvcrun $runtime_version) + "${runtime_version}0.dll"
|
||||
if ("$pgmvc" -ne "") {
|
||||
$dllspecified = "${pgmvc}\${rt_dllname}"
|
||||
if (Test-Path -Path $dllspecified) {
|
||||
return $dllspecified, ""
|
||||
}
|
||||
}
|
||||
$dllinredist = "${LIBPQBINDIR}\${rt_dllname}"
|
||||
if (Test-Path -Path $dllinredist) {
|
||||
return $dllinredist, ""
|
||||
}
|
||||
if ($env:PROCESSOR_ARCHITECTURE -eq "x86") {
|
||||
$pgmvc = "$env:ProgramFiles"
|
||||
} else {
|
||||
$pgmvc = "${env:ProgramFiles(x86)}"
|
||||
}
|
||||
$dllinredist = ""
|
||||
$vsdir = Find-VSDir $vcversion_no
|
||||
if ("$vsdir" -ne "") {
|
||||
if ($vcversion_no -gt 14) { # VC15 ~ VC??
|
||||
$lslist = @(Get-ChildItem "${vsdir}VC\Redist\MSVC\*\${CPUTYPE}\Microsoft.VC${toolset_no}.CRT\${rt_dllname}" -ErrorAction SilentlyContinue)
|
||||
if ($lslist.Count -gt 0) {
|
||||
$dllinredist = $lslist[0].FullName
|
||||
}
|
||||
} else { # VC10 ~ VC14
|
||||
$dllinredist = "${vsdir}VC\redist\${CPUTYPE}\Microsoft.VC${toolset_no}.CRT\${rt_dllname}"
|
||||
}
|
||||
}
|
||||
if (("$dllinredist" -ne "") -and (Test-Path -Path $dllinredist)) {
|
||||
return $dllinredist, ""
|
||||
} else {
|
||||
$messageSpec = "Please specify Configuration.$CPUTYPE.runtime_folder element of the configuration file where msvc runtime dll $rt_dllname can be found"
|
||||
if ($CPUTYPE -eq "x86") {
|
||||
if ($env:PROCESSOR_ARCHITECTURE -eq "x86") {
|
||||
$pgmvc = "${env:SystemRoot}\system32"
|
||||
} else {
|
||||
$pgmvc = "${env:SystemRoot}\syswow64"
|
||||
}
|
||||
} else {
|
||||
if ($env:PROCESSOR_ARCHITECTURE -eq "AMD64") {
|
||||
$pgmvc = "${env:SystemRoot}\system32"
|
||||
} elseif ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64") {
|
||||
$pgmvc = "${env:SystemRoot}\sysnative"
|
||||
} else {
|
||||
throw "${messageSpec}`n$dllinredist doesn't exist unfortunately"
|
||||
}
|
||||
}
|
||||
$dllinsystem = "${pgmvc}\${rt_dllname}"
|
||||
if (-not(Test-Path -Path $dllinsystem)) {
|
||||
throw "${messageSpec}`nneither $dllinredist nor $dllinsystem exists unfortunately"
|
||||
}
|
||||
}
|
||||
return "", $rt_dllname
|
||||
}
|
||||
|
||||
function buildInstaller([string]$CPUTYPE)
|
||||
{
|
||||
$LIBPQBINDIR=getPGDir $configInfo $CPUTYPE "bin"
|
||||
# msvc runtime psqlodbc links
|
||||
$PODBCMSVCDLL = ""
|
||||
$PODBCMSVPDLL = ""
|
||||
$PODBCMSVCSYS = ""
|
||||
$PODBCMSVPSYS = ""
|
||||
# msvc runtime libpq links
|
||||
$LIBPQMSVCDLL = ""
|
||||
$LIBPQMSVCSYS = ""
|
||||
$pgmvc = $configInfo.Configuration.$CPUTYPE.runtime_folder
|
||||
if (-not $ExcludeRuntime) {
|
||||
$toolset = $configInfo.Configuration.BuildResult.PlatformToolset
|
||||
if ($toolset -match "^v(\d+)") {
|
||||
$toolset_no0 = [int]$matches[1]
|
||||
} else {
|
||||
$toolset_no0 = 100
|
||||
}
|
||||
$runtime_version0 = toolset_no_to_runtimeversion($toolset_no0)
|
||||
# where's the msvc runtime dll psqlodbc links?
|
||||
if ($runtime_version0 -ge $ucrt_version -and $RedistUCRT) {
|
||||
$script:wRedist=$true
|
||||
} else {
|
||||
$dlls=findRuntime $toolset_no0 $pgmvc
|
||||
$PODBCMSVCDLL=$dlls[0]
|
||||
if ("$PODBCMSVCDLL" -ne "") {
|
||||
Write-Host "psqlodbc picks $PODBCMSVCDLL"
|
||||
}
|
||||
$PODBCMSVCSYS=$dlls[1]
|
||||
if ("$PODBCMSVCSYS" -ne "") {
|
||||
Write-Host "psqlodbc picks system $PODBCMSVCSYS"
|
||||
}
|
||||
$PODBCMSVPDLL=$PODBCMSVCDLL.Replace((msvcrun $runtime_version0), $str_msvcp)
|
||||
$PODBCMSVPSYS=$PODBCMSVCSYS.Replace((msvcrun $runtime_version0), $str_msvcp)
|
||||
}
|
||||
# where's the runtime dll libpq links?
|
||||
$msvclist=& ${dumpbinexe} /imports $LIBPQBINDIR\libpq.dll | select-string -pattern "^\s*($msrun_ptn)(\d+)0\.dll" | % {$_.Matches.Groups[2].Value}
|
||||
if ($msvclist -ne $Null -and $msvclist.length -gt 0) {
|
||||
if ($msvclist.GetType().Name -eq "String") {
|
||||
$runtime_version1=[int]$msvclist
|
||||
} else {
|
||||
$runtime_version1=[int]$msvclist[0]
|
||||
}
|
||||
if ($runtime_version1 -eq $runtime_version0) {
|
||||
$toolset_no1 = $toolset_no0
|
||||
} else {
|
||||
$toolset_no1 = runtimeversion_to_toolset_no($runtime_version1)
|
||||
}
|
||||
if ($runtime_version1 -ge $ucrt_version -and $RedistUCRT) {
|
||||
$script:wRedist=$true
|
||||
} elseif ($runtime_version1 -ne $runtime_version0) {
|
||||
$dlls=findRuntime $toolset_no1 $pgmvc
|
||||
$LIBPQMSVCDLL=$dlls[0]
|
||||
if ("$LIBPQMSVCDLL" -ne "") {
|
||||
Write-Host "LIBPQ picks $LIBPQMSVCDLL"
|
||||
}
|
||||
$LIBPQMSVCSYS=$dlls[1]
|
||||
if ("$LIBPQMSVCSYS" -ne "") {
|
||||
Write-Host "LIBPQ picks system $LIBPQMSVCSYS"
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$script:wRedist=$true
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "CPUTYPE : $CPUTYPE"
|
||||
Write-Host "VERSION : $VERSION"
|
||||
Write-Host "LIBPQBINDIR: $LIBPQBINDIR"
|
||||
|
||||
if ($env:WIX -ne "")
|
||||
{
|
||||
$wix = "$env:WIX"
|
||||
$env:Path += ";$WIX/bin"
|
||||
}
|
||||
# The subdirectory to install into
|
||||
$SUBLOC=$VERSION.substring(0, 2) + $VERSION.substring(3, 2)
|
||||
|
||||
#
|
||||
$maxmem=10
|
||||
$libpqmem=Get-RelatedDlls "libpq.dll" $LIBPQBINDIR
|
||||
for ($i=0; $i -lt $libpqmem.length; ) {
|
||||
if ($libpqmem[$i] -match "^($msrun_ptn)\d+0.dll") {
|
||||
$libpqmem[$i]=$Null
|
||||
} else {
|
||||
$i++
|
||||
}
|
||||
}
|
||||
if ($libpqmem.length -gt $maxmem) {
|
||||
throw("number of libpq related dlls exceeds $maxmem")
|
||||
}
|
||||
for ($i=$libpqmem.length; $i -lt $maxmem; $i++) {
|
||||
$libpqmem += ""
|
||||
}
|
||||
|
||||
[string []]$libpqRelArgs=@()
|
||||
for ($i=0; $i -lt $maxmem; $i++) {
|
||||
$libpqRelArgs += ("-dLIBPQMEM$i=" + $libpqmem[$i])
|
||||
}
|
||||
|
||||
if (-not(Test-Path -Path $CPUTYPE)) {
|
||||
New-Item -ItemType directory -Path $CPUTYPE | Out-Null
|
||||
}
|
||||
|
||||
$PRODUCTCODE = [GUID]::NewGuid()
|
||||
Write-Host "PRODUCTCODE: $PRODUCTCODE"
|
||||
|
||||
try {
|
||||
pushd "$scriptPath"
|
||||
|
||||
Write-Host ".`nBuilding psqlODBC/$SUBLOC merge module..."
|
||||
candle -nologo $libpqRelArgs "-dPlatform=$CPUTYPE" "-dVERSION=$VERSION" "-dSUBLOC=$SUBLOC" "-dLIBPQBINDIR=$LIBPQBINDIR" "-dLIBPQMSVCDLL=$LIBPQMSVCDLL" "-dLIBPQMSVCSYS=$LIBPQMSVCSYS" "-dPODBCMSVCDLL=$PODBCMSVCDLL" "-dPODBCMSVPDLL=$PODBCMSVPDLL" "-dPODBCMSVCSYS=$PODBCMSVCSYS" "-dPODBCMSVPSYS=$PODBCMSVPSYS" "-dNoPDB=$NoPDB" -o $CPUTYPE\psqlodbcm.wixobj psqlodbcm_cpu.wxs
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to build merge module"
|
||||
}
|
||||
|
||||
Write-Host ".`nLinking psqlODBC merge module..."
|
||||
light -nologo -o $CPUTYPE\psqlodbc_$CPUTYPE.msm $CPUTYPE\psqlodbcm.wixobj
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to link merge module"
|
||||
}
|
||||
|
||||
Write-Host ".`nBuilding psqlODBC installer database..."
|
||||
|
||||
candle -nologo "-dPlatform=$CPUTYPE" "-dVERSION=$VERSION" "-dSUBLOC=$SUBLOC" "-dPRODUCTCODE=$PRODUCTCODE" -o $CPUTYPE\psqlodbc.wixobj psqlodbc_cpu.wxs
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to build installer database"
|
||||
}
|
||||
|
||||
Write-Host ".`nLinking psqlODBC installer database..."
|
||||
light -nologo -ext WixUIExtension -cultures:en-us -o $CPUTYPE\psqlodbc_$CPUTYPE.msi $CPUTYPE\psqlodbc.wixobj
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to link installer database"
|
||||
}
|
||||
|
||||
Write-Host ".`nModifying psqlODBC installer database..."
|
||||
cscript modify_msi.vbs $CPUTYPE\psqlodbc_$CPUTYPE.msi
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to modify installer database"
|
||||
}
|
||||
|
||||
Write-Host ".`nDone!`n"
|
||||
}
|
||||
catch [Exception] {
|
||||
Write-Host ".`Aborting build!"
|
||||
throw $error[0]
|
||||
}
|
||||
finally {
|
||||
popd
|
||||
}
|
||||
}
|
||||
|
||||
$scriptPath = (Split-Path $MyInvocation.MyCommand.Path)
|
||||
$modulePath="${scriptPath}\..\winbuild"
|
||||
Import-Module ${modulePath}\Psqlodbc-config.psm1
|
||||
$defaultConfigDir=$modulePath
|
||||
$configInfo = LoadConfiguration $BuildConfigPath $defaultConfigDir
|
||||
|
||||
if ($AlongWithDrivers) {
|
||||
try {
|
||||
pushd "$scriptpath"
|
||||
$platform = $cpu
|
||||
if ($cpu -eq "x86") {
|
||||
$platform = "win32"
|
||||
}
|
||||
..\winbuild\BuildAll.ps1 -Platform $platform -BuildConfigPath "$BuildConfigPath"
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to build binaries"
|
||||
}
|
||||
} catch [Exception] {
|
||||
if ("$_.Exception.Message" -ne "") {
|
||||
Write-Host ("Error: " + $_.Exception.Message) -ForegroundColor Red
|
||||
} else {
|
||||
echo $_.Exception | Format-List -Force
|
||||
}
|
||||
Remove-Module Psqlodbc-config
|
||||
return
|
||||
} finally {
|
||||
popd
|
||||
}
|
||||
}
|
||||
|
||||
Import-Module ${scriptPath}\..\winbuild\MSProgram-Get.psm1
|
||||
try {
|
||||
$dumpbinexe = Find-Dumpbin
|
||||
|
||||
$wRedist=$false
|
||||
$VERSION = GetPackageVersion $configInfo "$scriptPath/.."
|
||||
if ($cpu -eq "both") {
|
||||
buildInstaller "x86"
|
||||
buildInstaller "x64"
|
||||
Write-Host "wRedist=$wRedist"
|
||||
try {
|
||||
pushd "$scriptPath"
|
||||
psqlodbc-setup\buildBootstrapper.ps1 -version $VERSION -withRedist:$wRedist
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to build bootstrapper"
|
||||
}
|
||||
} catch [Exception] {
|
||||
throw $error[0]
|
||||
} finally {
|
||||
popd
|
||||
}
|
||||
}
|
||||
else {
|
||||
buildInstaller $cpu
|
||||
}
|
||||
} catch [Exception] {
|
||||
if ("$_.Exception.Message" -ne "") {
|
||||
Write-Host ("Error: " + $_.Exception.Message) -ForegroundColor Red
|
||||
} else {
|
||||
echo $_.Exception | Format-List -Force
|
||||
}
|
||||
return
|
||||
} finally {
|
||||
Remove-Module MSProgram-Get
|
||||
Remove-Module Psqlodbc-config
|
||||
}
|
42
installer/installer.mak
Normal file
42
installer/installer.mak
Normal file
@ -0,0 +1,42 @@
|
||||
|
||||
|
||||
# All the driver files that will be included in the installer
|
||||
DRIVER_FILES = ../$(TARGET_CPU)_Unicode_$(CFG)/psqlodbc35w.dll \
|
||||
../$(TARGET_CPU)_Unicode_$(CFG)/pgxalib.dll \
|
||||
../$(TARGET_CPU)_Unicode_$(CFG)/pgenlist.dll \
|
||||
../$(TARGET_CPU)_ANSI_$(CFG)/psqlodbc30a.dll \
|
||||
../$(TARGET_CPU)_ANSI_$(CFG)/pgxalib.dll \
|
||||
../$(TARGET_CPU)_ANSI_$(CFG)/pgenlista.dll
|
||||
|
||||
ALL: $(TARGET_CPU)\psqlodbc_$(TARGET_CPU).msm $(TARGET_CPU)\psqlodbc_$(TARGET_CPU).msi
|
||||
|
||||
CANDLE="$(WIX)bin\candle.exe"
|
||||
LIGHT="$(WIX)bin\light"
|
||||
|
||||
!INCLUDE ..\windows-defaults.mak
|
||||
!IF EXISTS(..\windows-local.mak)
|
||||
!INCLUDE ..\windows-local.mak
|
||||
!ENDIF
|
||||
|
||||
!MESSAGE determining product code
|
||||
|
||||
!INCLUDE productcodes.mak
|
||||
|
||||
!MESSAGE Got product code $(PRODUCTCODE)
|
||||
|
||||
MSM_OPTS = -dLIBPQBINDIR="$(LIBPQ_BIN)"
|
||||
|
||||
# Merge module
|
||||
$(TARGET_CPU)\psqlodbc_$(TARGET_CPU).msm: psqlodbcm_cpu.wxs $(DRIVER_FILES)
|
||||
echo Building Installer Merge Module
|
||||
$(CANDLE) -nologo -dPlatform="$(TARGET_CPU)" -dVERSION=$(POSTGRESDRIVERVERSION) -dSUBLOC=$(SUBLOC) $(MSM_OPTS) -o $(TARGET_CPU)\psqlodbcm.wixobj psqlodbcm_cpu.wxs
|
||||
$(LIGHT) -nologo -o $(TARGET_CPU)\psqlodbc_$(TARGET_CPU).msm $(TARGET_CPU)\psqlodbcm.wixobj
|
||||
|
||||
$(TARGET_CPU)\psqlodbc_$(TARGET_CPU).msi: psqlodbc_cpu.wxs $(DRIVER_FILES)
|
||||
echo Building Installer
|
||||
$(CANDLE) -nologo -dPlatform="$(TARGET_CPU)" -dVERSION=$(POSTGRESDRIVERVERSION) -dSUBLOC=$(SUBLOC) -dPRODUCTCODE=$(PRODUCTCODE) -o $(TARGET_CPU)\psqlodbc.wixobj psqlodbc_cpu.wxs
|
||||
$(LIGHT) -nologo -ext WixUIExtension -cultures:en-us -o $(TARGET_CPU)\psqlodbc_$(TARGET_CPU).msi $(TARGET_CPU)\psqlodbc.wixobj
|
||||
cscript modify_msi.vbs $(TARGET_CPU)\psqlodbc_$(TARGET_CPU).msi
|
||||
|
||||
clean:
|
||||
-rd /Q /S x64 x86
|
526
installer/lgpl.rtf
Normal file
526
installer/lgpl.rtf
Normal file
@ -0,0 +1,526 @@
|
||||
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
|
||||
{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f23\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt MS ??};}{\f28\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}
|
||||
{\f35\froman\fcharset238\fprq2 Times New Roman CE;}{\f36\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f38\froman\fcharset161\fprq2 Times New Roman Greek;}{\f39\froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\f40\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f41\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f42\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f43\fswiss\fcharset238\fprq2 Arial CE;}{\f44\fswiss\fcharset204\fprq2 Arial Cyr;}
|
||||
{\f46\fswiss\fcharset161\fprq2 Arial Greek;}{\f47\fswiss\fcharset162\fprq2 Arial Tur;}{\f48\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f49\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f50\fswiss\fcharset186\fprq2 Arial Baltic;}
|
||||
{\f51\fmodern\fcharset238\fprq1 Courier New CE;}{\f52\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f54\fmodern\fcharset161\fprq1 Courier New Greek;}{\f55\fmodern\fcharset162\fprq1 Courier New Tur;}{\f56\fmodern\fcharset177\fprq1 Courier New (Hebrew);}
|
||||
{\f57\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f58\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f221\fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt MS ??};}{\f219\fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt MS ??};}
|
||||
{\f220\fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt MS ??};}{\f222\fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt MS ??};}{\f223\fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt MS ??};}
|
||||
{\f226\fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt MS ??};}{\f261\fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f259\fmodern\fcharset238\fprq1 @MS Mincho CE;}{\f260\fmodern\fcharset204\fprq1 @MS Mincho Cyr;}
|
||||
{\f262\fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f263\fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f266\fmodern\fcharset186\fprq1 @MS Mincho Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
|
||||
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
|
||||
\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{
|
||||
\s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f2\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext15 Plain Text;}}{\info{\author Administrator}{\operator Administrator}
|
||||
{\creatim\yr2001\mo4\dy3\hr19\min37}{\revtim\yr2001\mo4\dy3\hr19\min44}{\version5}{\edmins1}{\nofpages10}{\nofwords3823}{\nofchars21794}{\*\company The Vale Housing Association}{\nofcharsws0}{\vern8269}}\paperw11906\paperh16838\margl1152\margr1152
|
||||
\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow1\dgvshow1
|
||||
\jexpand\viewkind4\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule \fet0\sectd \linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl
|
||||
{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
|
||||
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
|
||||
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f2\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {
|
||||
\fs16\loch\af1\hich\af1\dbch\af23 \tab \tab \hich\af1\dbch\af23\loch\f1 GNU LESSER GENERAL PUBLIC LICENSE
|
||||
\par \tab \tab \hich\af1\dbch\af23\loch\f1 Version 2.1, February 1999
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
\par \hich\af1\dbch\af23\loch\f1 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
\par \hich\af1\dbch\af23\loch\f1 Everyone is permitted to copy and distribute verbatim copies
|
||||
\par \hich\af1\dbch\af23\loch\f1 of this license document, but changing it is not allowed.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 [This is the first released version of the Lesser GPL. It also counts
|
||||
\par \hich\af1\dbch\af23\loch\f1 a\hich\af1\dbch\af23\loch\f1 s the successor of the GNU Library Public License, version 2, hence
|
||||
\par \hich\af1\dbch\af23\loch\f1 the version number 2.1.]
|
||||
\par
|
||||
\par \tab \tab \tab \hich\af1\dbch\af23\loch\f1 Preamble
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 The licenses for most software are designed to take away your
|
||||
\par \hich\af1\dbch\af23\loch\f1 freedom to share and change it. By contrast, the GNU General Public
|
||||
\par \hich\af1\dbch\af23\loch\f1 Licenses ar\hich\af1\dbch\af23\loch\f1 e intended to guarantee your freedom to share and change
|
||||
\par \hich\af1\dbch\af23\loch\f1 free software--to make sure the software is free for all its users.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 This license, the Lesser General Public License, applies to some
|
||||
\par \hich\af1\dbch\af23\loch\f1 specially designated software packages--typically libraries--of\hich\af1\dbch\af23\loch\f1 the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Free Software Foundation and other authors who decide to use it. You
|
||||
\par \hich\af1\dbch\af23\loch\f1 can use it too, but we suggest you first think carefully about whether
|
||||
\par \hich\af1\dbch\af23\loch\f1 this license or the ordinary General Public License is the better
|
||||
\par \hich\af1\dbch\af23\loch\f1 strategy to use in any particular case, base\hich\af1\dbch\af23\loch\f1 d on the explanations below.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 When we speak of free software, we are referring to freedom of use,
|
||||
\par \hich\af1\dbch\af23\loch\f1 not price. Our General Public Licenses are designed to make sure that
|
||||
\par \hich\af1\dbch\af23\loch\f1 you have the freedom to distribute copies of free software (and charge
|
||||
\par \hich\af1\dbch\af23\loch\f1 for this servi\hich\af1\dbch\af23\loch\f1 ce if you wish); that you receive source code or can get
|
||||
\par \hich\af1\dbch\af23\loch\f1 it if you want it; that you can change the software and use pieces of
|
||||
\par \hich\af1\dbch\af23\loch\f1 it in new free programs; and that you are informed that you can do
|
||||
\par \hich\af1\dbch\af23\loch\f1 these things.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 To protect your rights, we need to make restrictions that forbid
|
||||
\par \hich\af1\dbch\af23\loch\f1 distributors to deny you these rights or to ask you to surrender these
|
||||
\par \hich\af1\dbch\af23\loch\f1 rights. These restrictions translate to certain responsibilities for
|
||||
\par \hich\af1\dbch\af23\loch\f1 you if you distribute copies of the library or i\hich\af1\dbch\af23\loch\f1 f you modify it.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 For example, if you distribute copies of the library, whether gratis
|
||||
\par \hich\af1\dbch\af23\loch\f1 or for a fee, you must give the recipients all the rights that we gave
|
||||
\par \hich\af1\dbch\af23\loch\f1 you. You must make sure that they, too, receive or can get the source
|
||||
\par \hich\af1\dbch\af23\loch\f1 code. If you link other \hich\af1\dbch\af23\loch\f1 code with the library, you must provide
|
||||
\par \hich\af1\dbch\af23\loch\f1 complete object files to the recipients, so that they can relink them
|
||||
\par \hich\af1\dbch\af23\loch\f1 with the library after making changes to the library and recompiling
|
||||
\par \hich\af1\dbch\af23\loch\f1 it. And you must show them these terms so they know their rights.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 We prot\hich\af1\dbch\af23\loch\f1 ect your rights with a two-step method: (1) we copyright the
|
||||
\par \hich\af1\dbch\af23\loch\f1 library, and (2) we offer you this license, which gives you legal
|
||||
\par \hich\af1\dbch\af23\loch\f1 permission to copy, distribute and/or modify the library.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 To protect each distributor, we want to make it very clear that
|
||||
\par \hich\af1\dbch\af23\loch\f1 ther\hich\af1\dbch\af23\loch\f1 e is no warranty for the free library. Also, if the library is
|
||||
\par \hich\af1\dbch\af23\loch\f1 modified by someone else and passed on, the recipients should know
|
||||
\par \hich\af1\dbch\af23\loch\f1 that what they have is not the original version, so that the original
|
||||
\par \hich\af1\dbch\af23\loch\f1 author's reputation will not be affected by problems th\hich\af1\dbch\af23\loch\f1 at might be
|
||||
\par \hich\af1\dbch\af23\loch\f1 introduced by others.
|
||||
\par \page
|
||||
\par \hich\af1\dbch\af23\loch\f1 Finally, software patents pose a constant threat to the existence of
|
||||
\par \hich\af1\dbch\af23\loch\f1 any free program. We wish to make sure that a company cannot
|
||||
\par \hich\af1\dbch\af23\loch\f1 effectively restrict the users of a free program by obtaining a
|
||||
\par \hich\af1\dbch\af23\loch\f1 restrictive licens\hich\af1\dbch\af23\loch\f1 e from a patent holder. Therefore, we insist that
|
||||
\par \hich\af1\dbch\af23\loch\f1 any patent license obtained for a version of the library must be
|
||||
\par \hich\af1\dbch\af23\loch\f1 consistent with the full freedom of use specified in this license.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 Most GNU software, including some libraries, is covered by the
|
||||
\par \hich\af1\dbch\af23\loch\f1 ordinar\hich\af1\dbch\af23\loch\f1 y GNU General Public License. This license, the GNU Lesser
|
||||
\par \hich\af1\dbch\af23\loch\f1 General Public License, applies to certain designated libraries, and
|
||||
\par \hich\af1\dbch\af23\loch\f1 is quite different from the ordinary General Public License. We use
|
||||
\par \hich\af1\dbch\af23\loch\f1 this license for certain libraries in order to permit link\hich\af1\dbch\af23\loch\f1 ing those
|
||||
\par \hich\af1\dbch\af23\loch\f1 libraries into non-free programs.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 When a program is linked with a library, whether statically or using
|
||||
\par \hich\af1\dbch\af23\loch\f1 a shared library, the combination of the two is legally speaking a
|
||||
\par \hich\af1\dbch\af23\loch\f1 combined work, a derivative of the original library. The ordinary
|
||||
\par \hich\af1\dbch\af23\loch\f1 Genera\hich\af1\dbch\af23\loch\f1 l Public License therefore permits such linking only if the
|
||||
\par \hich\af1\dbch\af23\loch\f1 entire combination fits its criteria of freedom. The Lesser General
|
||||
\par \hich\af1\dbch\af23\loch\f1 Public License permits more lax criteria for linking other code with
|
||||
\par \hich\af1\dbch\af23\loch\f1 the library.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 We call this license the "Lesser" General \hich\af1\dbch\af23\loch\f1 Public License because it
|
||||
\par \hich\af1\dbch\af23\loch\f1 does Less to protect the user's freedom than the ordinary General
|
||||
\par \hich\af1\dbch\af23\loch\f1 Public License. It also provides other free software developers Less
|
||||
\par \hich\af1\dbch\af23\loch\f1 of an advantage over competing non-free programs. These disadvantages
|
||||
\par \hich\af1\dbch\af23\loch\f1 are the reason we use t\hich\af1\dbch\af23\loch\f1 he ordinary General Public License for many
|
||||
\par \hich\af1\dbch\af23\loch\f1 libraries. However, the Lesser license provides advantages in certain
|
||||
\par \hich\af1\dbch\af23\loch\f1 special circumstances.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 For example, on rare occasions, there may be a special need to
|
||||
\par \hich\af1\dbch\af23\loch\f1 encourage the widest possible use o\hich\af1\dbch\af23\loch\f1 f a certain library, so that it becomes
|
||||
\par \hich\af1\dbch\af23\loch\f1 a de-facto standard. To achieve this, non-free programs must be
|
||||
\par \hich\af1\dbch\af23\loch\f1 allowed to use the library. A more frequent case is that a free
|
||||
\par \hich\af1\dbch\af23\loch\f1 library does the same job as widely used non-free libraries. In this
|
||||
\par \hich\af1\dbch\af23\loch\f1 case, there is l\hich\af1\dbch\af23\loch\f1 ittle to gain by limiting the free library to free
|
||||
\par \hich\af1\dbch\af23\loch\f1 software only, so we use the Lesser General Public License.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 In other cases, permission to use a particular library in non-free
|
||||
\par \hich\af1\dbch\af23\loch\f1 programs enables a greater number of people to use a large body of
|
||||
\par \hich\af1\dbch\af23\loch\f1 free sof\hich\af1\dbch\af23\loch\f1 tware. For example, permission to use the GNU C Library in
|
||||
\par \hich\af1\dbch\af23\loch\f1 non-free programs enables many more people to use the whole GNU
|
||||
\par \hich\af1\dbch\af23\loch\f1 operating system, as well as its variant, the GNU/Linux operating
|
||||
\par \hich\af1\dbch\af23\loch\f1 system.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 Although the Lesser General Public License is Less prot\hich\af1\dbch\af23\loch\f1 ective of the
|
||||
\par \hich\af1\dbch\af23\loch\f1 users' freedom, it does ensure that the user of a program that is
|
||||
\par \hich\af1\dbch\af23\loch\f1 linked with the Library has the freedom and the wherewithal to run
|
||||
\par \hich\af1\dbch\af23\loch\f1 that program using a modified version of the Library.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 The precise terms and conditions for copying, distri\hich\af1\dbch\af23\loch\f1 bution and
|
||||
\par \hich\af1\dbch\af23\loch\f1 modification follow. Pay close attention to the difference between a
|
||||
\par \hich\af1\dbch\af23\loch\f1 "work based on the library" and a "work that uses the library". The
|
||||
\par \hich\af1\dbch\af23\loch\f1 former contains code derived from the library, whereas the latter must
|
||||
\par \hich\af1\dbch\af23\loch\f1 be combined with the library in ord\hich\af1\dbch\af23\loch\f1 er to run.
|
||||
\par \page
|
||||
\par \tab \tab \hich\af1\dbch\af23\loch\f1 GNU LESSER GENERAL PUBLIC LICENSE
|
||||
\par \hich\af1\dbch\af23\loch\f1 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 0. This License Agreement applies to any software library or other
|
||||
\par \hich\af1\dbch\af23\loch\f1 program which contains a notice placed by the copyright holder or
|
||||
\par \hich\af1\dbch\af23\loch\f1 other authorized party saying it may be distributed under the terms of
|
||||
\par \hich\af1\dbch\af23\loch\f1 this Lesser General Public License (also called "this License").
|
||||
\par \hich\af1\dbch\af23\loch\f1 Each licensee is addressed as "you".
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 A "library" means a collection of software functions and/or data
|
||||
\par \hich\af1\dbch\af23\loch\f1 prepared so as \hich\af1\dbch\af23\loch\f1 to be conveniently linked with application programs
|
||||
\par \hich\af1\dbch\af23\loch\f1 (which use some of those functions and data) to form executables.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 The "Library", below, refers to any such software library or work
|
||||
\par \hich\af1\dbch\af23\loch\f1 which has been distributed under these terms. A "work based on the
|
||||
\par \hich\af1\dbch\af23\loch\f1 L\hich\af1\dbch\af23\loch\f1 ibrary" means either the Library or any derivative work under
|
||||
\par \hich\af1\dbch\af23\loch\f1 copyright law: that is to say, a work containing the Library or a
|
||||
\par \hich\af1\dbch\af23\loch\f1 portion of it, either verbatim or with modifications and/or translated
|
||||
\par \hich\af1\dbch\af23\loch\f1 straightforwardly into another language. (Hereinafter, t\hich\af1\dbch\af23\loch\f1 ranslation is
|
||||
\par \hich\af1\dbch\af23\loch\f1 included without limitation in the term "modification".)
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 "Source code" for a work means the preferred form of the work for
|
||||
\par \hich\af1\dbch\af23\loch\f1 making modifications to it. For a library, complete source code means
|
||||
\par \hich\af1\dbch\af23\loch\f1 all the source code for all modules it contai\hich\af1\dbch\af23\loch\f1 ns, plus any associated
|
||||
\par \hich\af1\dbch\af23\loch\f1 interface definition files, plus the scripts used to control compilation
|
||||
\par \hich\af1\dbch\af23\loch\f1 and installation of the library.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 Activities other than copying, distribution and modification are not
|
||||
\par \hich\af1\dbch\af23\loch\f1 covered by this License; they are outside its scope. \hich\af1\dbch\af23\loch\f1 The act of
|
||||
\par \hich\af1\dbch\af23\loch\f1 running a program using the Library is not restricted, and output from
|
||||
\par \hich\af1\dbch\af23\loch\f1 such a program is covered only if its contents constitute a work based
|
||||
\par \hich\af1\dbch\af23\loch\f1 on the Library (independent of the use of the Library in a tool for
|
||||
\par \hich\af1\dbch\af23\loch\f1 writing it). Whether that is true depends on what the Library does
|
||||
\par \hich\af1\dbch\af23\loch\f1 and what the program that uses the Library does.
|
||||
\par \hich\af1\dbch\af23\loch\f1
|
||||
\par \hich\af1\dbch\af23\loch\f1 1. You may copy and distribute verbatim copies of the Library's
|
||||
\par \hich\af1\dbch\af23\loch\f1 complete source code as you receive it, in any medium, provided that
|
||||
\par \hich\af1\dbch\af23\loch\f1 y\hich\af1\dbch\af23\loch\f1 ou conspicuously and appropriately publish on each copy an
|
||||
\par \hich\af1\dbch\af23\loch\f1 appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
\par \hich\af1\dbch\af23\loch\f1 all the notices that refer to this License and to the absence of any
|
||||
\par \hich\af1\dbch\af23\loch\f1 warranty; and distribute a copy of this License along with \hich\af1\dbch\af23\loch\f1 the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Library.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 You may charge a fee for the physical act of transferring a copy,
|
||||
\par \hich\af1\dbch\af23\loch\f1 and you may at your option offer warranty protection in exchange for a
|
||||
\par \hich\af1\dbch\af23\loch\f1 fee.
|
||||
\par \page
|
||||
\par \hich\af1\dbch\af23\loch\f1 2. You may modify your copy or copies of the Library or any portion
|
||||
\par \hich\af1\dbch\af23\loch\f1 of it, thus forming a work\hich\af1\dbch\af23\loch\f1 based on the Library, and copy and
|
||||
\par \hich\af1\dbch\af23\loch\f1 distribute such modifications or work under the terms of Section 1
|
||||
\par \hich\af1\dbch\af23\loch\f1 above, provided that you also meet all of these conditions:
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 a) The modified work must itself be a software library.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 b) You must cause the files\hich\af1\dbch\af23\loch\f1 modified to carry prominent notices
|
||||
\par \hich\af1\dbch\af23\loch\f1 stating that you changed the files and the date of any change.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 c) You must cause the whole of the work to be licensed at no
|
||||
\par \hich\af1\dbch\af23\loch\f1 charge to all third parties under the terms of this License.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 d) If a facility\hich\af1\dbch\af23\loch\f1 in the modified Library refers to a function or a
|
||||
\par \hich\af1\dbch\af23\loch\f1 table of data to be supplied by an application program that uses
|
||||
\par \hich\af1\dbch\af23\loch\f1 the facility, other than as an argument passed when the facility
|
||||
\par \hich\af1\dbch\af23\loch\f1 is invoked, then you must make a good faith effort to ensure that,
|
||||
\par \hich\af1\dbch\af23\loch\f1 in the event an application does not supply such function or
|
||||
\par \hich\af1\dbch\af23\loch\f1 table, the facility still operates, and performs whatever part of
|
||||
\par \hich\af1\dbch\af23\loch\f1 its purpose remains meaningful.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 (For exam\hich\af1\dbch\af23\loch\f1 ple, a function in a library to compute square roots has
|
||||
\par \hich\af1\dbch\af23\loch\f1 a purpose that is entirely well-defined independent of the
|
||||
\par \hich\af1\dbch\af23\loch\f1 application. Therefore, Subsection 2d requires that any
|
||||
\par \hich\af1\dbch\af23\loch\f1 application-supplied function or table used by this function must
|
||||
\par \hich\af1\dbch\af23\loch\f1 b\hich\af1\dbch\af23\loch\f1 e optional: if the application does not supply it, the square
|
||||
\par \hich\af1\dbch\af23\loch\f1 root function must still compute square roots.)
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 These requirements apply to the modified work as a whole. If
|
||||
\par \hich\af1\dbch\af23\loch\f1 identifiable sections of that work are not derived from the Library,
|
||||
\par \hich\af1\dbch\af23\loch\f1 and can be\hich\af1\dbch\af23\loch\f1 reasonably considered independent and separate works in
|
||||
\par \hich\af1\dbch\af23\loch\f1 themselves, then this License, and its terms, do not apply to those
|
||||
\par \hich\af1\dbch\af23\loch\f1 sections when you distribute them as separate works. But when you
|
||||
\par \hich\af1\dbch\af23\loch\f1 distribute the same sections as part of a whole which is a work \hich\af1\dbch\af23\loch\f1 based
|
||||
\par \hich\af1\dbch\af23\loch\f1 on the Library, the distribution of the whole must be on the terms of
|
||||
\par \hich\af1\dbch\af23\loch\f1 this License, whose permissions for other licensees extend to the
|
||||
\par \hich\af1\dbch\af23\loch\f1 entire whole, and thus to each and every part regardless of who wrote
|
||||
\par \hich\af1\dbch\af23\loch\f1 it.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 Thus, it is not the intent of this sect\hich\af1\dbch\af23\loch\f1 ion to claim rights or contest
|
||||
\par \hich\af1\dbch\af23\loch\f1 your rights to work written entirely by you; rather, the intent is to
|
||||
\par \hich\af1\dbch\af23\loch\f1 exercise the right to control the distribution of derivative or
|
||||
\par \hich\af1\dbch\af23\loch\f1 collective works based on the Library.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 In addition, mere aggregation of another work not based on the Library
|
||||
\par \hich\af1\dbch\af23\loch\f1 with the Library (or with a work based on the Library) on a volume of
|
||||
\par \hich\af1\dbch\af23\loch\f1 a storage or distribution medium does not bring the other work under
|
||||
\par \hich\af1\dbch\af23\loch\f1 the scope of this License.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 3. You may opt t\hich\af1\dbch\af23\loch\f1 o apply the terms of the ordinary GNU General Public
|
||||
\par \hich\af1\dbch\af23\loch\f1 License instead of this License to a given copy of the Library. To do
|
||||
\par \hich\af1\dbch\af23\loch\f1 this, you must alter all the notices that refer to this License, so
|
||||
\par \hich\af1\dbch\af23\loch\f1 that they refer to the ordinary GNU General Public License, vers\hich\af1\dbch\af23\loch\f1 ion 2,
|
||||
\par \hich\af1\dbch\af23\loch\f1 instead of to this License. (If a newer version than version 2 of the
|
||||
\par \hich\af1\dbch\af23\loch\f1 ordinary GNU General Public License has appeared, then you can specify
|
||||
\par \hich\af1\dbch\af23\loch\f1 that version instead if you wish.) Do not make any other change in
|
||||
\par \hich\af1\dbch\af23\loch\f1 these notices.
|
||||
\par \page
|
||||
\par \hich\af1\dbch\af23\loch\f1 Once this change is \hich\af1\dbch\af23\loch\f1 made in a given copy, it is irreversible for
|
||||
\par \hich\af1\dbch\af23\loch\f1 that copy, so the ordinary GNU General Public License applies to all
|
||||
\par \hich\af1\dbch\af23\loch\f1 subsequent copies and derivative works made from that copy.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 This option is useful when you wish to copy part of the code of
|
||||
\par \hich\af1\dbch\af23\loch\f1 the Library int\hich\af1\dbch\af23\loch\f1 o a program that is not a library.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 4. You may copy and distribute the Library (or a portion or
|
||||
\par \hich\af1\dbch\af23\loch\f1 derivative of it, under Section 2) in object code or executable form
|
||||
\par \hich\af1\dbch\af23\loch\f1 under the terms of Sections 1 and 2 above provided that you accompany
|
||||
\par \hich\af1\dbch\af23\loch\f1 it with the complet\hich\af1\dbch\af23\loch\f1 e corresponding machine-readable source code, which
|
||||
\par \hich\af1\dbch\af23\loch\f1 must be distributed under the terms of Sections 1 and 2 above on a
|
||||
\par \hich\af1\dbch\af23\loch\f1 medium customarily used for software interchange.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 If distribution of object code is made by offering access to copy
|
||||
\par \hich\af1\dbch\af23\loch\f1 from a designated place, then offering equivalent access to copy the
|
||||
\par \hich\af1\dbch\af23\loch\f1 source code from the same place satisfies the requirement to
|
||||
\par \hich\af1\dbch\af23\loch\f1 distribute the source code, even though third parties are not
|
||||
\par \hich\af1\dbch\af23\loch\f1 compelled to copy the source along with the object code.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 5. A\hich\af1\dbch\af23\loch\f1 program that contains no derivative of any portion of the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Library, but is designed to work with the Library by being compiled or
|
||||
\par \hich\af1\dbch\af23\loch\f1 linked with it, is called a "work that uses the Library". Such a
|
||||
\par \hich\af1\dbch\af23\loch\f1 work, in isolation, is not a derivative work of the Library,\hich\af1\dbch\af23\loch\f1 and
|
||||
\par \hich\af1\dbch\af23\loch\f1 therefore falls outside the scope of this License.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 However, linking a "work that uses the Library" with the Library
|
||||
\par \hich\af1\dbch\af23\loch\f1 creates an executable that is a derivative of the Library (because it
|
||||
\par \hich\af1\dbch\af23\loch\f1 contains portions of the Library), rather than a "work that us\hich\af1\dbch\af23\loch\f1 es the
|
||||
\par \hich\af1\dbch\af23\loch\f1 library". The executable is therefore covered by this License.
|
||||
\par \hich\af1\dbch\af23\loch\f1 Section 6 states terms for distribution of such executables.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 When a "work that uses the Library" uses material from a header file
|
||||
\par \hich\af1\dbch\af23\loch\f1 that is part of the Library, the object code for the\hich\af1\dbch\af23\loch\f1 work may be a
|
||||
\par \hich\af1\dbch\af23\loch\f1 derivative work of the Library even though the source code is not.
|
||||
\par \hich\af1\dbch\af23\loch\f1 Whether this is true is especially significant if the work can be
|
||||
\par \hich\af1\dbch\af23\loch\f1 linked without the Library, or if the work is itself a library. The
|
||||
\par \hich\af1\dbch\af23\loch\f1 threshold for this to be true is not pr\hich\af1\dbch\af23\loch\f1 ecisely defined by law.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 If such an object file uses only numerical parameters, data
|
||||
\par \hich\af1\dbch\af23\loch\f1 structure layouts and accessors, and small macros and small inline
|
||||
\par \hich\af1\dbch\af23\loch\f1 functions (ten lines or less in length), then the use of the object
|
||||
\par \hich\af1\dbch\af23\loch\f1 file is unrestricted, regardless o\hich\af1\dbch\af23\loch\f1 f whether it is legally a derivative
|
||||
\par \hich\af1\dbch\af23\loch\f1 work. (Executables containing this object code plus portions of the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Library will still fall under Section 6.)
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 Otherwise, if the work is a derivative of the Library, you may
|
||||
\par \hich\af1\dbch\af23\loch\f1 distribute \hich\af1\dbch\af23\loch\f1 the object code for the work under the terms of Section 6.
|
||||
\par \hich\af1\dbch\af23\loch\f1 Any executables containing that work also fall under Section 6,
|
||||
\par \hich\af1\dbch\af23\loch\f1 whether or not they are linked directly with the Library itself.
|
||||
\par \page
|
||||
\par \hich\af1\dbch\af23\loch\f1 6. As an exception to the Sections above, you may also combine o\hich\af1\dbch\af23\loch\f1 r
|
||||
\par \hich\af1\dbch\af23\loch\f1 link a "work that uses the Library" with the Library to produce a
|
||||
\par \hich\af1\dbch\af23\loch\f1 work containing portions of the Library, and distribute that work
|
||||
\par \hich\af1\dbch\af23\loch\f1 under terms of your choice, provided that the terms permit
|
||||
\par \hich\af1\dbch\af23\loch\f1 modification of the work for the customer's own use and reverse
|
||||
\par \hich\af1\dbch\af23\loch\f1 engineering for debugging such modifications.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 You must give prominent notice with each copy of the work that the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Library is used in it and that the Library and its use are covered by
|
||||
\par \hich\af1\dbch\af23\loch\f1 this License. You must supply a copy of this License. If the work
|
||||
\par \hich\af1\dbch\af23\loch\f1 d\hich\af1\dbch\af23\loch\f1 uring execution displays copyright notices, you must include the
|
||||
\par \hich\af1\dbch\af23\loch\f1 copyright notice for the Library among them, as well as a reference
|
||||
\par \hich\af1\dbch\af23\loch\f1 directing the user to the copy of this License. Also, you must do one
|
||||
\par \hich\af1\dbch\af23\loch\f1 of these things:
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 a) Accompany the work with the\hich\af1\dbch\af23\loch\f1 complete corresponding
|
||||
\par \hich\af1\dbch\af23\loch\f1 machine-readable source code for the Library including whatever
|
||||
\par \hich\af1\dbch\af23\loch\f1 changes were used in the work (which must be distributed under
|
||||
\par \hich\af1\dbch\af23\loch\f1 Sections 1 and 2 above); and, if the work is an executable linked
|
||||
\par \hich\af1\dbch\af23\loch\f1 with the Library, with \hich\af1\dbch\af23\loch\f1 the complete machine-readable "work that
|
||||
\par \hich\af1\dbch\af23\loch\f1 uses the Library", as object code and/or source code, so that the
|
||||
\par \hich\af1\dbch\af23\loch\f1 user can modify the Library and then relink to produce a modified
|
||||
\par \hich\af1\dbch\af23\loch\f1 executable containing the modified Library. (It is understood
|
||||
\par \hich\af1\dbch\af23\loch\f1 that the user who changes the contents of definitions files in the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Library will not necessarily be able to recompile the application
|
||||
\par \hich\af1\dbch\af23\loch\f1 to use the modified definitions.)
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 b) Use a suitable shared library mechanism for linking with the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Libr\hich\af1\dbch\af23\loch\f1 ary. A suitable mechanism is one that (1) uses at run time a
|
||||
\par \hich\af1\dbch\af23\loch\f1 copy of the library already present on the user's computer system,
|
||||
\par \hich\af1\dbch\af23\loch\f1 rather than copying library functions into the executable, and (2)
|
||||
\par \hich\af1\dbch\af23\loch\f1 will operate properly with a modified version of\hich\af1\dbch\af23\loch\f1 the library, if
|
||||
\par \hich\af1\dbch\af23\loch\f1 the user installs one, as long as the modified version is
|
||||
\par \hich\af1\dbch\af23\loch\f1 interface-compatible with the version that the work was made with.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 c) Accompany the work with a written offer, valid for at
|
||||
\par \hich\af1\dbch\af23\loch\f1 least three years, to give the same user\hich\af1\dbch\af23\loch\f1 the materials
|
||||
\par \hich\af1\dbch\af23\loch\f1 specified in Subsection 6a, above, for a charge no more
|
||||
\par \hich\af1\dbch\af23\loch\f1 than the cost of performing this distribution.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 d) If distribution of the work is made by offering access to copy
|
||||
\par \hich\af1\dbch\af23\loch\f1 from a designated place, offer equivalent access to cop\hich\af1\dbch\af23\loch\f1 y the above
|
||||
\par \hich\af1\dbch\af23\loch\f1 specified materials from the same place.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 e) Verify that the user has already received a copy of these
|
||||
\par \hich\af1\dbch\af23\loch\f1 materials or that you have already sent this user a copy.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 For an executable, the required form of the "work that uses the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Libr\hich\af1\dbch\af23\loch\f1 ary" must include any data and utility programs needed for
|
||||
\par \hich\af1\dbch\af23\loch\f1 reproducing the executable from it. However, as a special exception,
|
||||
\par \hich\af1\dbch\af23\loch\f1 the materials to be distributed need not include anything that is
|
||||
\par \hich\af1\dbch\af23\loch\f1 normally distributed (in either source or binary form) with the major
|
||||
\par \hich\af1\dbch\af23\loch\f1 components (compiler, kernel, and so on) of the operating system on
|
||||
\par \hich\af1\dbch\af23\loch\f1 which the executable runs, unless that component itself accompanies
|
||||
\par \hich\af1\dbch\af23\loch\f1 the executable.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 It may happen that this require\hich\af1\dbch\af23\loch\f1 ment contradicts the license
|
||||
\par \hich\af1\dbch\af23\loch\f1 restrictions of other proprietary libraries that do not normally
|
||||
\par \hich\af1\dbch\af23\loch\f1 accompany the operating system. Such a contradiction means you cannot
|
||||
\par \hich\af1\dbch\af23\loch\f1 use both them and the Library together in an executable that you
|
||||
\par \hich\af1\dbch\af23\loch\f1 distribute.
|
||||
\par \page
|
||||
\par \hich\af1\dbch\af23\loch\f1 7. You may\hich\af1\dbch\af23\loch\f1 place library facilities that are a work based on the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Library side-by-side in a single library together with other library
|
||||
\par \hich\af1\dbch\af23\loch\f1 facilities not covered by this License, and distribute such a combined
|
||||
\par \hich\af1\dbch\af23\loch\f1 library, provided that the separate distribution of the work \hich\af1\dbch\af23\loch\f1 based on
|
||||
\par \hich\af1\dbch\af23\loch\f1 the Library and of the other library facilities is otherwise
|
||||
\par \hich\af1\dbch\af23\loch\f1 permitted, and provided that you do these two things:
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 a) Accompany the combined library with a copy of the same work
|
||||
\par \hich\af1\dbch\af23\loch\f1 based on the Library, uncombined with any other library
|
||||
\par \hich\af1\dbch\af23\loch\f1 \hich\af1\dbch\af23\loch\f1 facilities. This must be distributed under the terms of the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Sections above.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 b) Give prominent notice with the combined library of the fact
|
||||
\par \hich\af1\dbch\af23\loch\f1 that part of it is a work based on the Library, and explaining
|
||||
\par \hich\af1\dbch\af23\loch\f1 where to find the accompanying uncom\hich\af1\dbch\af23\loch\f1 bined form of the same work.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 8. You may not copy, modify, sublicense, link with, or distribute
|
||||
\par \hich\af1\dbch\af23\loch\f1 the Library except as expressly provided under this License. Any
|
||||
\par \hich\af1\dbch\af23\loch\f1 attempt otherwise to copy, modify, sublicense, link with, or
|
||||
\par \hich\af1\dbch\af23\loch\f1 distribute the Library is void, and will automatically terminate your
|
||||
\par \hich\af1\dbch\af23\loch\f1 rights under this License. However, parties who have received copies,
|
||||
\par \hich\af1\dbch\af23\loch\f1 or rights, from you under this License will not have their licenses
|
||||
\par \hich\af1\dbch\af23\loch\f1 terminated so long as such parties remain in fu\hich\af1\dbch\af23\loch\f1 ll compliance.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 9. You are not required to accept this License, since you have not
|
||||
\par \hich\af1\dbch\af23\loch\f1 signed it. However, nothing else grants you permission to modify or
|
||||
\par \hich\af1\dbch\af23\loch\f1 distribute the Library or its derivative works. These actions are
|
||||
\par \hich\af1\dbch\af23\loch\f1 prohibited by law if you do not acc\hich\af1\dbch\af23\loch\f1 ept this License. Therefore, by
|
||||
\par \hich\af1\dbch\af23\loch\f1 modifying or distributing the Library (or any work based on the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Library), you indicate your acceptance of this License to do so, and
|
||||
\par \hich\af1\dbch\af23\loch\f1 all its terms and conditions for copying, distributing or modifying
|
||||
\par \hich\af1\dbch\af23\loch\f1 the Library or works b\hich\af1\dbch\af23\loch\f1 ased on it.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 10. Each time you redistribute the Library (or any work based on the
|
||||
\par \hich\af1\dbch\af23\loch\f1 Library), the recipient automatically receives a license from the
|
||||
\par \hich\af1\dbch\af23\loch\f1 original licensor to copy, distribute, link with or modify the Library
|
||||
\par \hich\af1\dbch\af23\loch\f1 subject to these terms and conditio\hich\af1\dbch\af23\loch\f1 ns. You may not impose any further
|
||||
\par \hich\af1\dbch\af23\loch\f1 restrictions on the recipients' exercise of the rights granted herein.
|
||||
\par \hich\af1\dbch\af23\loch\f1 You are not responsible for enforcing compliance by third parties with
|
||||
\par \hich\af1\dbch\af23\loch\f1 this License.
|
||||
\par \page
|
||||
\par \hich\af1\dbch\af23\loch\f1 11. If, as a consequence of a court judgment or allegation o\hich\af1\dbch\af23\loch\f1 f patent
|
||||
\par \hich\af1\dbch\af23\loch\f1 infringement or for any other reason (not limited to patent issues),
|
||||
\par \hich\af1\dbch\af23\loch\f1 conditions are imposed on you (whether by court order, agreement or
|
||||
\par \hich\af1\dbch\af23\loch\f1 otherwise) that contradict the conditions of this License, they do not
|
||||
\par \hich\af1\dbch\af23\loch\f1 excuse you from the conditions of this \hich\af1\dbch\af23\loch\f1 License. If you cannot
|
||||
\par \hich\af1\dbch\af23\loch\f1 distribute so as to satisfy simultaneously your obligations under this
|
||||
\par \hich\af1\dbch\af23\loch\f1 License and any other pertinent obligations, then as a consequence you
|
||||
\par \hich\af1\dbch\af23\loch\f1 may not distribute the Library at all. For example, if a patent
|
||||
\par \hich\af1\dbch\af23\loch\f1 license would not permit royalty-free redistribution of the Library by
|
||||
\par \hich\af1\dbch\af23\loch\f1 all those who receive copies directly or indirectly through you, then
|
||||
\par \hich\af1\dbch\af23\loch\f1 the only way you could satisfy both it and this License would be to
|
||||
\par \hich\af1\dbch\af23\loch\f1 refrain entirely from distribution of the Libra\hich\af1\dbch\af23\loch\f1 ry.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 If any portion of this section is held invalid or unenforceable under any
|
||||
\par \hich\af1\dbch\af23\loch\f1 particular circumstance, the balance of the section is intended to apply,
|
||||
\par \hich\af1\dbch\af23\loch\f1 and the section as a whole is intended to apply in other circumstances.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 It is not the purpose of this \hich\af1\dbch\af23\loch\f1 section to induce you to infringe any
|
||||
\par \hich\af1\dbch\af23\loch\f1 patents or other property right claims or to contest validity of any
|
||||
\par \hich\af1\dbch\af23\loch\f1 such claims; this section has the sole purpose of protecting the
|
||||
\par \hich\af1\dbch\af23\loch\f1 integrity of the free software distribution system which is
|
||||
\par \hich\af1\dbch\af23\loch\f1 implemented by public li\hich\af1\dbch\af23\loch\f1 cense practices. Many people have made
|
||||
\par \hich\af1\dbch\af23\loch\f1 generous contributions to the wide range of software distributed
|
||||
\par \hich\af1\dbch\af23\loch\f1 through that system in reliance on consistent application of that
|
||||
\par \hich\af1\dbch\af23\loch\f1 system; it is up to the author/donor to decide if he or she is willing
|
||||
\par \hich\af1\dbch\af23\loch\f1 to distribute \hich\af1\dbch\af23\loch\f1 software through any other system and a licensee cannot
|
||||
\par \hich\af1\dbch\af23\loch\f1 impose that choice.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 This section is intended to make thoroughly clear what is believed to
|
||||
\par \hich\af1\dbch\af23\loch\f1 be a consequence of the rest of this License.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 12. If the distribution and/or use of the Library is restric\hich\af1\dbch\af23\loch\f1 ted in
|
||||
\par \hich\af1\dbch\af23\loch\f1 certain countries either by patents or by copyrighted interfaces, the
|
||||
\par \hich\af1\dbch\af23\loch\f1 original copyright holder who places the Library under this License may add
|
||||
\par \hich\af1\dbch\af23\loch\f1 an explicit geographical distribution limitation excluding those countries,
|
||||
\par \hich\af1\dbch\af23\loch\f1 so that distribution is permitted only in or among countries not thus
|
||||
\par \hich\af1\dbch\af23\loch\f1 excluded. In such case, this License incorporates the limitation as if
|
||||
\par \hich\af1\dbch\af23\loch\f1 written in the body of this License.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 13. The Free Software Foundation may publish revised and/or new
|
||||
\par \hich\af1\dbch\af23\loch\f1 versions o\hich\af1\dbch\af23\loch\f1 f the Lesser General Public License from time to time.
|
||||
\par \hich\af1\dbch\af23\loch\f1 Such new versions will be similar in spirit to the present version,
|
||||
\par \hich\af1\dbch\af23\loch\f1 but may differ in detail to address new problems or concerns.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 Each version is given a distinguishing version number. If the Library
|
||||
\par \hich\af1\dbch\af23\loch\f1 specifies a version number of this License which applies to it and
|
||||
\par \hich\af1\dbch\af23\loch\f1 "any later version", you have the option of following the terms and
|
||||
\par \hich\af1\dbch\af23\loch\f1 conditions either of that version or of any later version published by
|
||||
\par \hich\af1\dbch\af23\loch\f1 the Free Software Foundation. If the Library doe\hich\af1\dbch\af23\loch\f1 s not specify a
|
||||
\par \hich\af1\dbch\af23\loch\f1 license version number, you may choose any version ever published by
|
||||
\par \hich\af1\dbch\af23\loch\f1 the Free Software Foundation.
|
||||
\par \page
|
||||
\par \hich\af1\dbch\af23\loch\f1 14. If you wish to incorporate parts of the Library into other free
|
||||
\par \hich\af1\dbch\af23\loch\f1 programs whose distribution conditions are incompatible with these,
|
||||
\par \hich\af1\dbch\af23\loch\f1 w\hich\af1\dbch\af23\loch\f1 rite to the author to ask for permission. For software which is
|
||||
\par \hich\af1\dbch\af23\loch\f1 copyrighted by the Free Software Foundation, write to the Free
|
||||
\par \hich\af1\dbch\af23\loch\f1 Software Foundation; we sometimes make exceptions for this. Our
|
||||
\par \hich\af1\dbch\af23\loch\f1 decision will be guided by the two goals of preserving the free\hich\af1\dbch\af23\loch\f1 status
|
||||
\par \hich\af1\dbch\af23\loch\f1 of all derivatives of our free software and of promoting the sharing
|
||||
\par \hich\af1\dbch\af23\loch\f1 and reuse of software generally.
|
||||
\par
|
||||
\par \tab \tab \tab \hich\af1\dbch\af23\loch\f1 NO WARRANTY
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
\par \hich\af1\dbch\af23\loch\f1 WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
\par \hich\af1\dbch\af23\loch\f1 EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
\par \hich\af1\dbch\af23\loch\f1 OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
\par \hich\af1\dbch\af23\loch\f1 KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NO\hich\af1\dbch\af23\loch\f1 T LIMITED TO, THE
|
||||
\par \hich\af1\dbch\af23\loch\f1 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
\par \hich\af1\dbch\af23\loch\f1 PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
\par \hich\af1\dbch\af23\loch\f1 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
\par \hich\af1\dbch\af23\loch\f1 THE COST OF ALL NECESSARY SERVICING\hich\af1\dbch\af23\loch\f1 , REPAIR OR CORRECTION.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
\par \hich\af1\dbch\af23\loch\f1 WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
\par \hich\af1\dbch\af23\loch\f1 AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
\par \hich\af1\dbch\af23\loch\f1 FOR DAMAGES, INCLUDING AN\hich\af1\dbch\af23\loch\f1 Y GENERAL, SPECIAL, INCIDENTAL OR
|
||||
\par \hich\af1\dbch\af23\loch\f1 CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
\par \hich\af1\dbch\af23\loch\f1 LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
\par \hich\af1\dbch\af23\loch\f1 RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
\par \hich\af1\dbch\af23\loch\f1 FAILURE OF THE LIBR\hich\af1\dbch\af23\loch\f1 ARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
\par \hich\af1\dbch\af23\loch\f1 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
\par \hich\af1\dbch\af23\loch\f1 DAMAGES.
|
||||
\par
|
||||
\par \tab \tab \hich\af1\dbch\af23\loch\f1 END OF TERMS AND CONDITIONS
|
||||
\par \page
|
||||
\par \hich\af1\dbch\af23\loch\f1 How to Apply These Terms to Your New Libraries
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 If you develop a new library\hich\af1\dbch\af23\loch\f1 , and you want it to be of the greatest
|
||||
\par \hich\af1\dbch\af23\loch\f1 possible use to the public, we recommend making it free software that
|
||||
\par \hich\af1\dbch\af23\loch\f1 everyone can redistribute and change. You can do so by permitting
|
||||
\par \hich\af1\dbch\af23\loch\f1 redistribution under these terms (or, alternatively, under the terms of the
|
||||
\par \hich\af1\dbch\af23\loch\f1 ordinary General Public License).
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 To apply these terms, attach the following notices to the library. It is
|
||||
\par \hich\af1\dbch\af23\loch\f1 safest to attach them to the start of each source file to most effectively
|
||||
\par \hich\af1\dbch\af23\loch\f1 convey the exclusion of warranty; and each file should have at least t\hich\af1\dbch\af23\loch\f1 he
|
||||
\par \hich\af1\dbch\af23\loch\f1 "copyright" line and a pointer to where the full notice is found.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 <one line to give the library's name and a brief idea of what it does.>
|
||||
\par \hich\af1\dbch\af23\loch\f1 Copyright (C) <year> <name of author>
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 This library is free software; you can redistribute it and/or
|
||||
\par \hich\af1\dbch\af23\loch\f1 modify it under the terms of the GNU Lesser General Public
|
||||
\par \hich\af1\dbch\af23\loch\f1 License as published by the Free Software Foundation; either
|
||||
\par \hich\af1\dbch\af23\loch\f1 version 2.1 of the License, or (at your option) any later version.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 This library is distributed in the hope that it will\hich\af1\dbch\af23\loch\f1 be useful,
|
||||
\par \hich\af1\dbch\af23\loch\f1 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
\par \hich\af1\dbch\af23\loch\f1 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
\par \hich\af1\dbch\af23\loch\f1 Lesser General Public License for more details.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 You should have received a copy of the GNU Lesser \hich\af1\dbch\af23\loch\f1 General Public
|
||||
\par \hich\af1\dbch\af23\loch\f1 License along with this library; if not, write to the Free Software
|
||||
\par \hich\af1\dbch\af23\loch\f1 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 Also add information on how to contact you by electronic and paper mail.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 You should also \hich\af1\dbch\af23\loch\f1 get your employer (if you work as a programmer) or your
|
||||
\par \hich\af1\dbch\af23\loch\f1 school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
\par \hich\af1\dbch\af23\loch\f1 necessary. Here is a sample; alter the names:
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
\par \hich\af1\dbch\af23\loch\f1 library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 <signature of Ty Coon>, 1 April 1990
|
||||
\par \hich\af1\dbch\af23\loch\f1 Ty Coon, President of Vice
|
||||
\par
|
||||
\par \hich\af1\dbch\af23\loch\f1 That's all there is to it!
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par }}
|
50
installer/make.bat
Normal file
50
installer/make.bat
Normal file
@ -0,0 +1,50 @@
|
||||
@echo off
|
||||
|
||||
set wix_dir="%WIX%bin"
|
||||
echo wix_dir=%wix_dir%
|
||||
|
||||
REM Values to change include VERSION and SUBLOC, both below.
|
||||
|
||||
REM The subdirectory to install into
|
||||
SET SUBLOC="0901"
|
||||
|
||||
if NOT "%1"=="" SET VERSION="%1"
|
||||
if NOT "%1"=="" GOTO GOT_VERSION
|
||||
|
||||
REM The full version number of the build in XXXX.XX.XX format
|
||||
SET VERSION="09.01.0200"
|
||||
|
||||
echo.
|
||||
echo Version not specified - defaulting to %VERSION%
|
||||
echo.
|
||||
|
||||
:GOT_VERSION
|
||||
|
||||
echo.
|
||||
echo Building psqlODBC merge module...
|
||||
|
||||
%wix_dir%\candle.exe -nologo -dVERSION=%VERSION% -dSUBLOC=%SUBLOC% -dPROGRAMFILES="%ProgramFiles%" -dSYSTEM32DIR="%SystemRoot%/system32" psqlodbcm.wxs
|
||||
IF ERRORLEVEL 1 GOTO ERR_HANDLER
|
||||
|
||||
%wix_dir%\light -nologo -out psqlodbc.msm psqlodbcm.wixobj
|
||||
IF ERRORLEVEL 1 GOTO ERR_HANDLER
|
||||
|
||||
echo.
|
||||
echo Building psqlODBC installer database...
|
||||
|
||||
%wix_dir%\candle.exe -nologo -dVERSION=%VERSION% -dSUBLOC=%SUBLOC% -dPROGRAMFILES="%ProgramFiles%" -dPROGRAMCOM="%ProgramFiles%/Common Files/Merge Modules" psqlodbc.wxs
|
||||
IF ERRORLEVEL 1 GOTO ERR_HANDLER
|
||||
|
||||
%wix_dir%\light -nologo -ext WixUIExtension -cultures:en-us psqlodbc.wixobj
|
||||
IF ERRORLEVEL 1 GOTO ERR_HANDLER
|
||||
|
||||
echo.
|
||||
echo Done!
|
||||
GOTO EXIT
|
||||
|
||||
:ERR_HANDLER
|
||||
echo.
|
||||
echo Aborting build!
|
||||
GOTO EXIT
|
||||
|
||||
:EXIT
|
133
installer/makex64.bat
Normal file
133
installer/makex64.bat
Normal file
@ -0,0 +1,133 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
rem
|
||||
rem The 64bit installer
|
||||
rem
|
||||
set CPUTYPE=x64
|
||||
|
||||
rem
|
||||
rem Set yes when clean operations are needed
|
||||
rem
|
||||
set CLEANUP=no
|
||||
rem
|
||||
rem Set yes so as to build dlls before making the installer
|
||||
rem
|
||||
set DLLBUILD=no
|
||||
|
||||
:getparam
|
||||
set para=%1
|
||||
echo para="%para%"
|
||||
if /i "%para:~1%" == "Drivers" (
|
||||
if "%para:~0,1%" == "+" set DLLBUILD=yes
|
||||
shift
|
||||
goto getparam
|
||||
) else if /i "%para%" == "clean" (
|
||||
set CLEANUP=yes
|
||||
shift
|
||||
goto getparam
|
||||
)
|
||||
|
||||
if "%CLEANUP%" == "yes" GOTO CLEAN
|
||||
|
||||
rem
|
||||
rem psqlodbc dlls build options
|
||||
rem
|
||||
SET USE_LIBPQ=no
|
||||
SET USE_GSS=yes
|
||||
SET USE_SSPI=yes
|
||||
|
||||
rem
|
||||
rem Please specify the foler name where you placed libpq related dlls.
|
||||
rem Currently not used.
|
||||
rem
|
||||
rem SET LIBPQBINDIR=
|
||||
echo LIBPQBINDIR=%LIBPQBINDIR%
|
||||
|
||||
rem
|
||||
rem Please specify the foler name where you placed GSSAPI related dlls.
|
||||
rem
|
||||
SET GSSBINDIR="c:/cygwin/develop/bin/AMD64"
|
||||
|
||||
rem
|
||||
rem Build binaries if necessary
|
||||
rem
|
||||
set origdir=%CD%
|
||||
if "%DLLBUILD%" == "yes" (
|
||||
cd ..
|
||||
nmake /f win64.mak USE_LIBPQ=%USE_LIBPQ% USE_SSPI=%USE_SSPI% USE_GSS=%USE_GSS%
|
||||
nmake /f win64.mak ANSI_VERSION=yes USE_LIBPQ=%USE_LIBPQ% USE_SSPI=%USE_SSPI% USE_GSS=%USE_GSS%
|
||||
)
|
||||
cd %origdir%
|
||||
|
||||
set wix_dir="%WIX%bin"
|
||||
echo wix_dir=%wix_dir%
|
||||
|
||||
rem Values to change include VERSION and SUBLOC, both below.
|
||||
|
||||
rem The subdirectory to install into
|
||||
SET SUBLOC="0901"
|
||||
|
||||
if NOT "%1"=="" SET VERSION="%1"
|
||||
if NOT "%1"=="" GOTO GOT_VERSION
|
||||
GOTO NORMAL_EXEC
|
||||
|
||||
:CLEAN
|
||||
echo.
|
||||
echo cleaning derived files
|
||||
echo.
|
||||
del %CPUTYPE%\psqlodbc*.wix* %CPUTYPE%\psqlodbc*.ms*
|
||||
if "%DLLBUILD%" == "yes" (
|
||||
cd ..
|
||||
nmake /f win64.mak clean
|
||||
nmake /f win64.mak ANSI_VERSION=yes clean
|
||||
)
|
||||
GOTO EXIT
|
||||
|
||||
:NORMAL_EXEC
|
||||
REM The full version number of the build in XXXX.XX.XX format
|
||||
SET VERSION="09.01.0200"
|
||||
|
||||
echo.
|
||||
echo Version not specified - defaulting to %VERSION%
|
||||
echo.
|
||||
|
||||
:GOT_VERSION
|
||||
|
||||
if not exist %CPUTYPE%\ mkdir %CPUTYPE%
|
||||
|
||||
echo.
|
||||
echo Building psqlODBC merge module...
|
||||
|
||||
%wix_dir%\candle.exe -nologo -dPlatform="%CPUTYPE%" -dVERSION=%VERSION% -dSUBLOC=%SUBLOC% -dLIBPQBINDIR=%LIBPQBINDIR% -dGSSBINDIR=%GSSBINDIR% -o %CPUTYPE%\psqlodbcm.wixobj psqlodbcm_cpu.wxs
|
||||
IF ERRORLEVEL 1 GOTO ERR_HANDLER
|
||||
|
||||
echo Linking psqlODBC merge module...
|
||||
%wix_dir%\light -nologo -o %CPUTYPE%\psqlodbc_%CPUTYPE%.msm %CPUTYPE%\psqlodbcm.wixobj
|
||||
IF ERRORLEVEL 1 GOTO ERR_HANDLER
|
||||
|
||||
echo.
|
||||
echo Building psqlODBC installer database...
|
||||
|
||||
%wix_dir%\candle.exe -nologo -dPlatform="%CPUTYPE%" -dVERSION=%VERSION% -dSUBLOC=%SUBLOC% -o %CPUTYPE%\psqlodbc.wixobj psqlodbc_cpu.wxs
|
||||
IF ERRORLEVEL 1 GOTO ERR_HANDLER
|
||||
|
||||
echo Linking psqlODBC installer database...
|
||||
%wix_dir%\light -nologo -ext WixUIExtension -cultures:en-us -o %CPUTYPE%\psqlodbc_%CPUTYPE%.msi %CPUTYPE%\psqlodbc.wixobj
|
||||
IF ERRORLEVEL 1 GOTO ERR_HANDLER
|
||||
|
||||
echo.
|
||||
echo Modifying psqlODBC installer database...
|
||||
cscript modify_msi.vbs %CPUTYPE%\psqlodbc_%CPUTYPE%.msi
|
||||
IF ERRORLEVEL 1 GOTO ERR_HANDLER
|
||||
|
||||
echo.
|
||||
echo Done!
|
||||
GOTO EXIT
|
||||
|
||||
:ERR_HANDLER
|
||||
echo.
|
||||
echo Aborting build!
|
||||
GOTO EXIT
|
||||
|
||||
:EXIT
|
45
installer/modify_msi.vbs
Normal file
45
installer/modify_msi.vbs
Normal file
@ -0,0 +1,45 @@
|
||||
'
|
||||
' When the dll name of the driver is not of 8.3-format
|
||||
' the modification of the FileName is needed
|
||||
'
|
||||
option Explicit
|
||||
|
||||
Const msiOpenDatabaseModeTransact = 1
|
||||
|
||||
Const msiViewModifyInsert = 1
|
||||
Const msiViewModifyUpdate = 2
|
||||
|
||||
Dim msiPath : msiPath = Wscript.Arguments(0)
|
||||
|
||||
Dim installer
|
||||
Set installer = Wscript.CreateObject("WindowsInstaller.Installer")
|
||||
Dim database
|
||||
Set database = installer.OpenDatabase(msiPath, msiOpenDatabaseModeTransact)
|
||||
|
||||
Dim query
|
||||
query = "Select * FROM File"
|
||||
Dim view
|
||||
Set view = database.OpenView(query)
|
||||
view.Execute
|
||||
Dim record
|
||||
Set record = view.Fetch
|
||||
Dim gFile, pos
|
||||
Do While not record Is Nothing
|
||||
gFile = record.StringData(1)
|
||||
If Left(gFile, 8) = "psqlodbc" Then
|
||||
gFile = record.StringData(3)
|
||||
' Check if the FileName field is ShortName|LongName
|
||||
pos = InStr(record.StringData(3), "|")
|
||||
If pos > 0 Then
|
||||
' Omit the ShortName part
|
||||
gFile = Mid(record.StringData(3), pos + 1)
|
||||
WScript.echo record.StringData(3) & " -> " & gFile
|
||||
' And update the field
|
||||
record.StringData(3) = gFile
|
||||
view.Modify msiViewModifyUpdate, record
|
||||
End If
|
||||
End If
|
||||
Set record = view.Fetch
|
||||
Loop
|
||||
|
||||
database.Commit
|
22
installer/productcodes.mak
Normal file
22
installer/productcodes.mak
Normal file
@ -0,0 +1,22 @@
|
||||
!IF "$(POSTGRESDRIVERVERSION)" == "09.02.0100"
|
||||
PRODUCTCODE="3E42F836-9204-4c42-B3C3-8680A0434875"
|
||||
SUBLOC=0902
|
||||
!ELSE IF "$(POSTGRESDRIVERVERSION)" == "09.03.0100"
|
||||
PRODUCTCODE="1F896F2F-5756-4d22-B5A3-040796C9B485"
|
||||
SUBLOC=0903
|
||||
!ELSE IF "$(POSTGRESDRIVERVERSION)" == "09.03.0200"
|
||||
PRODUCTCODE="1F896F2F-5756-4d22-B5A3-040796C9B485"
|
||||
SUBLOC=0903
|
||||
!ELSE IF "$(POSTGRESDRIVERVERSION)" == "09.03.0210"
|
||||
PRODUCTCODE="1F896F2F-5756-4d22-B5A3-040796C9B485"
|
||||
SUBLOC=0903
|
||||
!ELSE IF "$(POSTGRESDRIVERVERSION)" == "09.03.0300"
|
||||
PRODUCTCODE="1F896F2F-5756-4d22-B5A3-040796C9B485"
|
||||
SUBLOC=0903
|
||||
!ELSE IF "$(POSTGRESDRIVERVERSION)" == "09.05.0100"
|
||||
PRODUCTCODE="4C4C4544-004D-5210-8035-B4C04F4B5731"
|
||||
SUBLOC=0905
|
||||
!ELSE
|
||||
!MESSAGE Driver version $(POSTGRESDRIVERVERSION) is not listed in productcodes.mak
|
||||
EXIT
|
||||
!ENDIF
|
33
installer/psqlodbc-setup/Bundle.wxs
Normal file
33
installer/psqlodbc-setup/Bundle.wxs
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
|
||||
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
|
||||
|
||||
<Bundle Name="psqlodbc"
|
||||
Version="$(var.VERSION)"
|
||||
Manufacturer="PostgreSQL Global Development Group"
|
||||
UpgradeCode="7f9f14ee-2f3a-4120-a300-ee3fbd585627">
|
||||
|
||||
<BootstrapperApplicationRef
|
||||
Id="WixStandardBootstrapperApplication.RtfLicense">
|
||||
|
||||
<bal:WixStandardBootstrapperApplication
|
||||
SuppressOptionsUI="yes"
|
||||
ShowVersion="yes"
|
||||
LicenseFile="..\lgpl.rtf"
|
||||
/>
|
||||
</BootstrapperApplicationRef>
|
||||
|
||||
<Chain>
|
||||
<!-- TODO: Define the list of chained packages. -->
|
||||
<?if $(var.withRedist) = yes ?>
|
||||
<PackageGroupRef Id="vcredist"/>
|
||||
<?endif ?>
|
||||
<MsiPackage SourceFile="..\x86\psqlodbc_x86.msi"
|
||||
DisplayInternalUI="$(var.withUI)" />
|
||||
<MsiPackage SourceFile="..\x64\psqlodbc_x64.msi"
|
||||
DisplayInternalUI="$(var.withUI)"
|
||||
InstallCondition="VersionNT64" />
|
||||
</Chain>
|
||||
</Bundle>
|
||||
</Wix>
|
11
installer/psqlodbc-setup/Make.bat
Executable file
11
installer/psqlodbc-setup/Make.bat
Executable file
@ -0,0 +1,11 @@
|
||||
::
|
||||
:: Build bootstrapper program of psqlodbc project
|
||||
::
|
||||
@echo off
|
||||
if "%1" == "/?" (
|
||||
powershell Get-Help '%~dp0\buildBootstrapper.ps1' -detailed
|
||||
) else if "%1" == "-?" (
|
||||
powershell Get-Help '%~dp0\buildBootstrapper.ps1' %2 %3 %4 %5 %6 %7 %8 %9
|
||||
) else (
|
||||
powershell "& '%~dp0\buildBootstrapper.ps1' %*"
|
||||
)
|
97
installer/psqlodbc-setup/buildBootstrapper.ps1
Normal file
97
installer/psqlodbc-setup/buildBootstrapper.ps1
Normal file
@ -0,0 +1,97 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Build a bootstrapper application of psqlodbc drivers.
|
||||
.DESCRIPTION
|
||||
Build psqlodbc-setup.exe
|
||||
.PARAMETER version
|
||||
Specify when you'd like to specify the version explicitly.
|
||||
.PARAMETER UI
|
||||
Specify when you'd like to show UIs of each MSIs.
|
||||
.PARAMETER withRedist
|
||||
Specify when you have to include vcredist.
|
||||
.PARAMETER BuildConfigPath
|
||||
Specify the configuration xml file name if you want to use
|
||||
the configuration file other than standard one.
|
||||
The relative path is relative to the current directory.
|
||||
.EXAMPLE
|
||||
> .\buildBootstrapper
|
||||
Build the bootstrapper.
|
||||
.EXAMPLE
|
||||
> .\buildBootstrapper -w(ithRedist)
|
||||
Build the bootstrapper with vcredist.
|
||||
.NOTES
|
||||
Author: Hiroshi Inoue
|
||||
Date: October 8, 2014
|
||||
#>
|
||||
# build bootstrapper of psqlodbc drivers
|
||||
#
|
||||
Param(
|
||||
[string]$version,
|
||||
[switch]$UI,
|
||||
[switch]$withRedist,
|
||||
[string]$BuildConfigPath
|
||||
)
|
||||
|
||||
write-host "Building bootstrapper program`n"
|
||||
|
||||
$scriptPath = (Split-Path $MyInvocation.MyCommand.Path)
|
||||
if ("$version" -eq "") {
|
||||
# $configInfo = & "$scriptPath\..\..\winbuild\configuration.ps1" "$BuildConfigPath"
|
||||
$scriptPath = (Split-Path $MyInvocation.MyCommand.Path)
|
||||
$modulePath="${scriptPath}\..\..\winbuild"
|
||||
Import-Module ${modulePath}\Psqlodbc-config.psm1
|
||||
$defaultConfigDir=$modulePath
|
||||
$configInfo = LoadConfiguration $BuildConfigPath $defaultConfigDir
|
||||
$version = GetPackageVersion $configInfo "$scriptPath/../.."
|
||||
Remove-Module Psqlodbc-config
|
||||
}
|
||||
|
||||
if ("$env:WIX" -eq "") {
|
||||
throw "Please install WIX"
|
||||
}
|
||||
|
||||
$wix_dir="${env:WIX}bin"
|
||||
$pgmname="psqlodbc-setup"
|
||||
$build_config="Release"
|
||||
$objdir="obj\${build_config}"
|
||||
$bindir="bin\${build_config}"
|
||||
|
||||
$modules=@("Bundle.wxs")
|
||||
$wRedist="no"
|
||||
$objs=@("${objdir}\Bundle.wixobj")
|
||||
if ($withRedist) {
|
||||
$modules += "vcredist.wxs"
|
||||
$objs += "${objdir}\vcredist.wixobj"
|
||||
$wRedist = "yes"
|
||||
write-host "with Redistributable"
|
||||
}
|
||||
$wUI = "no"
|
||||
if ($UI) {
|
||||
$wUI = "yes"
|
||||
}
|
||||
|
||||
try {
|
||||
pushd "$scriptPath"
|
||||
|
||||
& ${wix_dir}\candle.exe -v "-dVERSION=$version" "-dwithRedist=$wRedist" "-dwithUI=$wUI" "-dConfiguration=${build_config}" "-dOutDir=${bindir}\" -dPlatform=x86 "-dProjectDir=.\" "-dProjectExt=.wixproj" "-dProjectFileName=${pgmname}.wixproj" "-dProjectName=${pgmname}" "-dProjectPath=${pgmname}.wixproj" "-dTargetDir=${bindir}\" "-dTargetExt=.exe" "-dTargetFileName=${pgmname}.exe" "-dTargetName=${pgmname}" "-dTargetPath=${bindir}\${pgmname}.exe" -out "${objdir}\" -arch x86 -ext ${wix_dir}\WixUtilExtension.dll -ext ${wix_dir}\WixBalExtension.dll $modules
|
||||
# $candle_cmd = "& `"${wix_dir}\candle.exe`" -v `"-dVERSION=$version`" -dwithRedist=$wRedist -dwithUI=$wUI -dConfiguration=${build_config} `"-dOutDir=${bindir}\`" -dPlatform=x86 `"-dProjectDir=.\`" `"-dProjectExt=.wixproj`" `"-dProjectFileName=${pgmname}.wixproj`" -dProjectName=${pgmname} `"-dProjectPath=${pgmname}.wixproj`" -dTargetDir=${bindir}\ `"-dTargetExt=.exe`" `"-dTargetFileName=${pgmname}.exe`" -dTargetName=${pgmname} `"-dTargetPath=${bindir}\${pgmname}.exe`" -out `"${objdir}\`" -arch x86 -ext `"${wix_dir}\WixUtilExtension.dll`" -ext `"${wix_dir}\WixBalExtension.dll`" $modules"
|
||||
#write-debug "candle_cmd = ${candle_cmd}"
|
||||
# compile
|
||||
#invoke-expression $candle_cmd
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to compile $modules"
|
||||
}
|
||||
# link
|
||||
# invoke-expression "& `"${wix_dir}\Light.exe`" -out ${bindir}\${pgmname}.exe -pdbout ${bindir}\${pgmname}.wixpdb -ext `"${wix_dir}\\WixUtilExtension.dll`" -ext `"${wix_dir}\\WixBalExtension.dll`" -contentsfile ${objdir}\${pgmname}.wixproj.BindContentsFileList.txt -outputsfile ${objdir}\${pgmname}.wixproj.BindOutputsFileList.txt -builtoutputsfile ${objdir}\${pgmname}.wixproj.BindBuiltOutputsFileList.txt -wixprojectfile ${pgmname}.wixproj ${objs}"
|
||||
& ${wix_dir}\Light.exe -out ${bindir}\${pgmname}.exe -pdbout ${bindir}\${pgmname}.wixpdb -ext ${wix_dir}\\WixUtilExtension.dll -ext ${wix_dir}\\WixBalExtension.dll -contentsfile ${objdir}\${pgmname}.wixproj.BindContentsFileList.txt -outputsfile ${objdir}\${pgmname}.wixproj.BindOutputsFileList.txt -builtoutputsfile ${objdir}\${pgmname}.wixproj.BindBuiltOutputsFileList.txt -wixprojectfile "${pgmname}.wixproj" ${objs}
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to link bootstrapper"
|
||||
}
|
||||
}
|
||||
catch [Exception] {
|
||||
Write-Host ".`Aborting build!"
|
||||
throw $error[0]
|
||||
}
|
||||
finally {
|
||||
popd
|
||||
}
|
46
installer/psqlodbc-setup/psqlodbc-setup.wixproj
Normal file
46
installer/psqlodbc-setup/psqlodbc-setup.wixproj
Normal file
@ -0,0 +1,46 @@
|
||||
<?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.6</ProductVersion>
|
||||
<ProjectGuid>{748caa18-f40d-4308-bc52-2605d09c38b1}</ProjectGuid>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<OutputName>psqlodbc-setup</OutputName>
|
||||
<OutputType>Bundle</OutputType>
|
||||
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
|
||||
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<OutputPath>bin\$(Configuration)\</OutputPath>
|
||||
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
|
||||
<DefineConstants>Debug</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>bin\$(Configuration)\</OutputPath>
|
||||
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Bundle.wxs" />
|
||||
<Compile Include="vcredist.wxs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WixExtension Include="WixUtilExtension">
|
||||
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
|
||||
<Name>WixUtilExtension</Name>
|
||||
</WixExtension>
|
||||
<WixExtension Include="WixBalExtension">
|
||||
<HintPath>$(WixExtDir)\WixBalExtension.dll</HintPath>
|
||||
<Name>WixBalExtension</Name>
|
||||
</WixExtension>
|
||||
</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>
|
41
installer/psqlodbc-setup/vcredist.wxs
Normal file
41
installer/psqlodbc-setup/vcredist.wxs
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?ifndef VCVER?>
|
||||
<?define VCVER = 14?>
|
||||
<?endif?>
|
||||
<!-- ?define vcredist_x86 = http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe ?>
|
||||
<?define vcredist_x64 = http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x64.exe ? -->
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
<Fragment>
|
||||
<!-- TODO: Put your code here. -->
|
||||
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\$(var.VCVER).0\VC\VCRedist\x86" Value="Installed" Variable="vc$(var.VCVER)0_redist_x86" />
|
||||
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\$(var.VCVER).0\VC\VCRedist\x64" Value="Installed" Variable="vc$(var.VCVER)0_redist_x64" Win64="yes"/>
|
||||
<PackageGroup Id="vcredist">
|
||||
<ExePackage Id="vc$(var.VCVER)0_redist_x86"
|
||||
Cache="no"
|
||||
Compressed="yes"
|
||||
PerMachine="yes"
|
||||
Permanent="yes"
|
||||
Vital="yes"
|
||||
Name="vc$(var.VCVER)0_redist_x86.exe"
|
||||
SourceFile="Redist\vc$(var.VCVER)0_redist_x86.exe"
|
||||
InstallCommand="/q"
|
||||
DetectCondition="vc$(var.VCVER)0_redist_x86 AND (vc$(var.VCVER)0_redist_x86 >= 1)">
|
||||
<ExitCode Value ="3010" Behavior="forceReboot" />
|
||||
</ExePackage>
|
||||
<ExePackage Id="vc$(var.VCVER)0_redist_x64"
|
||||
Cache="no"
|
||||
Compressed="yes"
|
||||
PerMachine="yes"
|
||||
Permanent="yes"
|
||||
Vital="yes"
|
||||
Name="vc$(var.VCVER)0_redist_x64.exe"
|
||||
SourceFile="Redist\vc$(var.VCVER)0_redist_x64.exe"
|
||||
InstallCommand="/q"
|
||||
InstallCondition="VersionNT64"
|
||||
DetectCondition="vc$(var.VCVER)0_redist_x64 AND (vc$(var.VCVER)0_redist_x64 >= 1)">
|
||||
<ExitCode Value ="3010" Behavior="forceReboot" />
|
||||
</ExePackage>
|
||||
</PackageGroup>
|
||||
</Fragment>
|
||||
</Wix>
|
65
installer/psqlodbc.wxs
Normal file
65
installer/psqlodbc.wxs
Normal file
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
|
||||
<!-- Product details -->
|
||||
|
||||
<Product
|
||||
Manufacturer="PostgreSQL Global Development Group"
|
||||
Id="838E187D-8B7A-473d-B93C-C8E970B15D2B"
|
||||
UpgradeCode="24BCA538-75A2-4a7f-B236-C99EFC2145DE"
|
||||
Name="psqlODBC"
|
||||
Version="$(var.VERSION)"
|
||||
Language="1033">
|
||||
|
||||
<!-- Package details -->
|
||||
|
||||
<Package
|
||||
Keywords="PostgreSQL, ODBC"
|
||||
Comments="PostgreSQL ODBC Driver"
|
||||
Manufacturer="PostgreSQL Global Development Group"
|
||||
InstallerVersion="300"
|
||||
Languages="1033"
|
||||
Compressed="yes"
|
||||
SummaryCodepage="1252" />
|
||||
|
||||
<!-- Directories -->
|
||||
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
|
||||
<Directory Id="ProgramFilesFolder" Name="PFiles">
|
||||
<Directory Id="BASEDIR" Name="psqlODBC">
|
||||
<Component Id="registration" Guid="4F0C04EB-ADCB-4fa8-B6A3-E9F74EA693F8">
|
||||
<RegistryValue KeyPath="yes" Type="string" Root="HKLM" Key="Software\psqlODBC" Name="Version" Value="$(var.VERSION)" />
|
||||
</Component>
|
||||
<Merge Id="psqlodbcm" DiskId="1" Language="1033" SourceFile="psqlodbc.msm" />
|
||||
</Directory>
|
||||
</Directory>
|
||||
<Directory Id="ProgramMenuFolder" Name="." SourceName="Programs">
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<!-- Features -->
|
||||
|
||||
<Feature Id="psqlodbc" Title="psqlODBC" Level="1" Description="psqlODBC - The PostgreSQL ODBC Driver" ConfigurableDirectory="BASEDIR" Display="expand">
|
||||
<Feature Id="binaries" Title="ODBC Driver" Level="1" Description="The ODBC driver and supporting libraries.">
|
||||
<ComponentRef Id="registration" />
|
||||
<MergeRef Id="psqlodbcm" />
|
||||
</Feature>
|
||||
|
||||
</Feature>
|
||||
<Media Id="1" EmbedCab="yes" Cabinet="psqlodbc.cab"/>
|
||||
|
||||
<!-- Properties -->
|
||||
|
||||
<Property Id="ALLUSERS">2</Property>
|
||||
<Property Id="WIXUI_INSTALLDIR" Value="BASEDIR" />
|
||||
|
||||
<!-- UI -->
|
||||
|
||||
<UIRef Id="WixUI_FeatureTree" />
|
||||
<WixVariable Id="WixUILicenseRtf" Value="lgpl.rtf" />
|
||||
<WixVariable Id="WixUIDialogBmp" Value="background.bmp" />
|
||||
<WixVariable Id="WixUIBannerBmp" Value="banner.bmp" />
|
||||
|
||||
</Product>
|
||||
</Wix>
|
107
installer/psqlodbc_cpu.wxs
Normal file
107
installer/psqlodbc_cpu.wxs
Normal file
@ -0,0 +1,107 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?ifdef var.Platform ?>
|
||||
<?define PKGNAME = "psqlODBC_$(var.Platform)" ?>
|
||||
<?define MERGEM = "$(var.Platform)\psqlodbc_$(var.Platform).msm" ?>
|
||||
<?if $(var.Platform) = x64 ?>
|
||||
<?define BIT64 = "yes" ?>
|
||||
<?define PGFOLDER = "ProgramFiles64Folder" ?>
|
||||
<?define PRODID = "3E42F836-9204-4c42-B3C3-8680A0434875" ?>
|
||||
<?define CIDREG = "4D361F28-8F75-4c86-9A37-6C279967413D" ?>
|
||||
<?define CIDDOC = "0C745A85-4E55-4bab-BBF1-DCF51D92FCC5" ?>
|
||||
<?define CIDSMD = "{E6410EE8-96DC-4d84-8D07-94F8093BF3EF}" ?>
|
||||
<?define UPGCOD = "BBD29DF5-89F6-4b8b-BDC9-C3EA3A4AFDBB" ?>
|
||||
<?else?>
|
||||
<?define BIT64 = "no" ?>
|
||||
<?define PGFOLDER = "ProgramFilesFolder" ?>
|
||||
<?define PRODID = "838E187D-8B7A-473d-B93C-C8E970B15D2D" ?>
|
||||
<?define CIDREG = "4F0C04EB-ADCB-4fa8-B6A3-E9F74EA693FA" ?>
|
||||
<?define CIDDOC = "89DDBC52-9F0D-4846-91DC-09EECC87E430" ?>
|
||||
<?define CIDSMD = "{22288E09-B3B6-4181-907F-676099C20127}" ?>
|
||||
<?define UPGCOD = "24BCA538-75A2-4a7f-B236-C99EFC2145E0" ?>
|
||||
<?endif?>
|
||||
<?else?>
|
||||
<?define Platform = "x86" ?>
|
||||
<?define PKGNAME = "psqlODBC" ?>
|
||||
<?define MERGEM = "psqlodbc.msm" ?>
|
||||
<?define BIT64 = "no" ?>
|
||||
<?define PGFOLDER = "ProgramFilesFolder" ?>
|
||||
<?define PRODID = "838E187D-8B7A-473d-B93C-C8E970B15D2B" ?>
|
||||
<?define CIDREG = "4F0C04EB-ADCB-4fa8-B6A3-E9F74EA693F8" ?>
|
||||
<?define CIDDOC = "89DDBC52-9F0D-4846-91DC-09EECC87E42E" ?>
|
||||
<?define CIDSMD = "{22288E09-B3B6-4181-907F-676099C20125}" ?>
|
||||
<?define UPGCOD = "24BCA538-75A2-4a7f-B236-C99EFC2145DE" ?>
|
||||
<?endif?>
|
||||
|
||||
<!-- Product details -->
|
||||
|
||||
<Product
|
||||
Manufacturer="PostgreSQL Global Development Group"
|
||||
Id="$(var.PRODID)"
|
||||
UpgradeCode="$(var.UPGCOD)"
|
||||
Name="$(var.PKGNAME)"
|
||||
Version="$(var.VERSION)"
|
||||
Language="1033">
|
||||
|
||||
<!-- Package details -->
|
||||
|
||||
<Package
|
||||
Keywords="PostgreSQL, ODBC"
|
||||
Comments="PostgreSQL ODBC Driver"
|
||||
Manufacturer="PostgreSQL Global Development Group"
|
||||
InstallerVersion="300"
|
||||
Platform="$(var.Platform)"
|
||||
Languages="1033"
|
||||
Compressed="yes"
|
||||
SummaryCodepage="1252" />
|
||||
|
||||
<!-- Directories -->
|
||||
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="$(var.PGFOLDER)" Name="PFiles">
|
||||
<Directory Id="BASEDIR" Name="psqlODBC">
|
||||
<Component Id="registration" Guid="$(var.CIDREG)" Win64="$(var.BIT64)">
|
||||
<RegistryValue KeyPath="yes" Type="string" Root="HKLM" Key="Software\$(var.PKGNAME)" Name="Version" Value="$(var.VERSION)" />
|
||||
</Component>
|
||||
<Merge Id="psqlodbcm" DiskId="1" Language="1033" SourceFile="$(var.MERGEM)" />
|
||||
</Directory>
|
||||
</Directory>
|
||||
<Directory Id="ProgramMenuFolder" Name="." SourceName="Programs">
|
||||
<Directory Id="SMDir" Name="$(var.PKGNAME)">
|
||||
<Component Id="smdir" Guid="$(var.CIDSMD)" Win64="$(var.BIT64)">
|
||||
<RegistryValue KeyPath="yes" Type="string" Root="HKCU" Key="Software\$(var.PKGNAME)\SMDir Created" Value="y" />
|
||||
<RemoveFolder Id="SMDir" On="uninstall" />
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<!-- Features -->
|
||||
|
||||
<Feature Id="psqlodbc" Title="$(var.PKGNAME)" Level="1" Description="psqlODBC - The PostgreSQL ODBC Driver" ConfigurableDirectory="BASEDIR" Display="expand">
|
||||
<Feature Id="binaries" Title="ODBC Driver" Level="1" Description="The ODBC driver and supporting libraries.">
|
||||
<ComponentRef Id="registration" />
|
||||
<MergeRef Id="psqlodbcm" />
|
||||
</Feature>
|
||||
|
||||
<Feature Id="docs" Title="Documentation" Level="4" Description="Documentation, FAQs and HOWTOs.">
|
||||
<ComponentRef Id="smdir" />
|
||||
</Feature>
|
||||
|
||||
</Feature>
|
||||
<Media Id="1" EmbedCab="yes" Cabinet="psqlodbc.cab"/>
|
||||
|
||||
<!-- Properties -->
|
||||
|
||||
<Property Id="ALLUSERS">2</Property>
|
||||
<Property Id="WIXUI_INSTALLDIR" Value="BASEDIR" />
|
||||
|
||||
<!-- UI -->
|
||||
|
||||
<UIRef Id="WixUI_FeatureTree" />
|
||||
<WixVariable Id="WixUILicenseRtf" Value="lgpl.rtf" />
|
||||
<WixVariable Id="WixUIDialogBmp" Value="background.bmp" />
|
||||
<WixVariable Id="WixUIBannerBmp" Value="banner.bmp" />
|
||||
|
||||
</Product>
|
||||
</Wix>
|
45
installer/psqlodbcm.wxs
Normal file
45
installer/psqlodbcm.wxs
Normal file
@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Module
|
||||
Id="psqlODBC"
|
||||
Version="$(var.VERSION)"
|
||||
Language="1033">
|
||||
|
||||
<Package
|
||||
Id="ACF10866-5C01-46f0-90F0-D5618638CA48"
|
||||
Description="PostgreSQL ODBC Driver"
|
||||
Keywords="PostgreSQL, ODBC"
|
||||
Manufacturer="PostgreSQL Global Development Group"
|
||||
InstallerVersion="150"
|
||||
Platforms="Intel"
|
||||
Languages="1033"
|
||||
SummaryCodepage="1252" />
|
||||
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="BINDIR" Name=".">
|
||||
<Component Id="psqlodbc.files" Guid="00A1ACE3-B7C2-41b8-A1F1-DB565990DA4E">
|
||||
<!-- PostgreSQL -->
|
||||
<File Id="psqlodbc35w.dll" Name="psqlodbc35w.dll" Source="../Release-x86/psqlodbc35w.dll" />
|
||||
<File Id="libpq.dll" Name="libpq.dll" Source="../../Code/Release/libpq/libpq.dll" KeyPath="yes" />
|
||||
<File Id="MSVCR100.DLL" Name="MSVCR100.DLL" Source="x86/MSVCR100.DLL" KeyPath="no" />
|
||||
<File Id="MSVCR100D.DLL" Name="MSVCR100D.DLL" Source="x86/MSVCR100D.DLL" KeyPath="no" />
|
||||
|
||||
|
||||
<!-- Note, installing the driver properly (IE, using ODBCDriver) has proven unreliable -->
|
||||
<!-- so we install the registry keys manually ourselves. -->
|
||||
|
||||
<RegistryValue Id="psqlodbc35w.reg.1" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers" Name="PostgreSQL Unicode" Type="string" Value="Installed" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.2" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="APILevel" Type="string" Value="1" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.3" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="ConnectFunctions" Type="string" Value="YYN" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.4" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="Driver" Type="string" Value="[#psqlodbc35w.dll]" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.5" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="DriverODBCVer" Type="string" Value="03.51" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.6" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="FileUsage" Type="string" Value="0" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.7" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="Setup" Type="string" Value="[#psqlodbc35w.dll]" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.8" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="SQLLevel" Type="string" Value="1" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.9" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="UsageCount" Type="integer" Value="1" />
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
</Module>
|
||||
</Wix>
|
69
installer/psqlodbcm_cpu.wxs
Normal file
69
installer/psqlodbcm_cpu.wxs
Normal file
@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?ifdef var.Platform ?>
|
||||
<?define ModuleName = "psqlODBC_$(var.Platform)" ?>
|
||||
<?if $(var.Platform) = x64 ?>
|
||||
<?define BIT64 = "yes" ?>
|
||||
<?define ANSIFOLDER = "AMD64ANSI" ?>
|
||||
<?define UNICODEFOLDER = "AMD64" ?>
|
||||
<?define Module_PackageId = "970B6E07-7105-4d66-80FA-9E208952FB96" ?>
|
||||
<?define CIDPFILES = "5C9A19B5-D7C6-4bb4-BBBC-88C2A67A59B0" ?>
|
||||
<?else?>
|
||||
<?define BIT64 = "no" ?>
|
||||
<?define ANSIFOLDER = "MultibyteRelease" ?>
|
||||
<?define UNICODEFOLDER = "Release" ?>
|
||||
<?define Module_PackageId = "ACF10866-5C01-46f0-90F0-D5618638CA4A" ?>
|
||||
<?define CIDPFILES = "00A1ACE3-B7C2-41b8-A1F1-DB565990DA50" ?>
|
||||
<?endif?>
|
||||
<?else?>
|
||||
<?define BIT64 = "no" ?>
|
||||
<?define Platform = "x86" ?>
|
||||
<?define ModuleName = "psqlODBC" ?>
|
||||
<?define ANSIFOLDER = "MultibyteRelease" ?>
|
||||
<?define UNICODEFOLDER = "Release" ?>
|
||||
<?define Module_PackageId = "ACF10866-5C01-46f0-90F0-D5618638CA48" ?>
|
||||
<?define CIDPFILES = "00A1ACE3-B7C2-41b8-A1F1-DB565990DA4E" ?>
|
||||
<?endif?>
|
||||
|
||||
<Module
|
||||
Id="$(var.ModuleName)"
|
||||
Version="$(var.VERSION)"
|
||||
Language="1033">
|
||||
|
||||
<Package
|
||||
Id="$(var.Module_PackageId)"
|
||||
Description="PostgreSQL ODBC Driver"
|
||||
Keywords="PostgreSQL, ODBC"
|
||||
Manufacturer="PostgreSQL Global Development Group"
|
||||
InstallerVersion="300"
|
||||
Platform="$(var.Platform)"
|
||||
Languages="1033"
|
||||
SummaryCodepage="1252" />
|
||||
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="BINDIR" Name=".">
|
||||
<Component Id="psqlodbc.files" Guid="$(var.CIDPFILES)" Win64="$(var.BIT64)">
|
||||
<File Id="psqlodbc35w.dll" Name="psqlodbc35w.dll" Source="../Release-x64/psqlodbc35w.dll" >
|
||||
<ODBCDriver Id="Psqlodbc_9.0_Driver" Name="PostgreSQL Unicode($(var.Platform))" />
|
||||
</File>
|
||||
<File Id="libpq.dll" Name="libpq.dll" Source="../../Code/Release/libpq/libpq.dll" KeyPath="yes" />
|
||||
<File Id="MSVCR100.DLL" Name="MSVCR100.DLL" Source="x64/MSVCR100.DLL" KeyPath="no" />
|
||||
<File Id="MSVCR100D.DLL" Name="MSVCR100D.DLL" Source="x64/MSVCR100D.DLL" KeyPath="no" />
|
||||
<!-- Note, installing the driver properly (IE, using ODBCDriver) has proven unreliable -->
|
||||
<!-- so we install the registry keys manually ourselves. -->
|
||||
|
||||
<RegistryValue Id="psqlodbc35w.reg.1" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers" Name="PostgreSQL Unicode($(var.Platform))" Type="string" Value="Installed" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.2" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="APILevel" Type="string" Value="1" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.3" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="ConnectFunctions" Type="string" Value="YYN" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.4" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="Driver" Type="string" Value="[#psqlodbc35w.dll]" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.5" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="DriverODBCVer" Type="string" Value="03.51" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.6" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="FileUsage" Type="string" Value="0" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.7" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="Setup" Type="string" Value="[#psqlodbc35w.dll]" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.8" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="SQLLevel" Type="string" Value="1" />
|
||||
<RegistryValue Id="psqlodbc35w.reg.9" Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode" Name="UsageCount" Type="integer" Value="1" />
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
</Module>
|
||||
</Wix>
|
23
installer/upgrade.bat
Normal file
23
installer/upgrade.bat
Normal file
@ -0,0 +1,23 @@
|
||||
@echo off
|
||||
cls
|
||||
echo This file will upgrade your psqlODBC installation.
|
||||
echo.
|
||||
echo You must have psqlODBC 09.01.xxxx installed
|
||||
echo from the official MSI installation to use this upgrade path.
|
||||
echo.
|
||||
echo If psqlODBC or any of it's components are in use
|
||||
echo a reboot will be required once the upgrade is completed.
|
||||
echo.
|
||||
echo.
|
||||
echo Press Ctrl-C to abort the upgrade or
|
||||
pause
|
||||
|
||||
REM Parameters described:
|
||||
REM /i psqlodbc.msi - pick MSI file to install. All properties
|
||||
REM will be read from existing installation.
|
||||
REM REINSTALLMODE=vamus - reinstall all files, regardless of version.
|
||||
REM This makes sure documentation and other
|
||||
REM non-versioned files are updated.
|
||||
REM REINSTALL=ALL - Reinstall all features that were previously
|
||||
REM installed with the new version.
|
||||
msiexec /i psqlodbc.msi REINSTALLMODE=vamus REINSTALL=ALL /qr
|
23
installer/upgrade_x64.bat
Normal file
23
installer/upgrade_x64.bat
Normal file
@ -0,0 +1,23 @@
|
||||
@echo off
|
||||
cls
|
||||
echo This file will upgrade your psqlODBC installation.
|
||||
echo.
|
||||
echo You must have psqlODBC 09.01.xxxx installed
|
||||
echo from the official MSI installation to use this upgrade path.
|
||||
echo.
|
||||
echo If psqlODBC or any of it's components are in use
|
||||
echo a reboot will be required once the upgrade is completed.
|
||||
echo.
|
||||
echo.
|
||||
echo Press Ctrl-C to abort the upgrade or
|
||||
pause
|
||||
|
||||
REM Parameters described:
|
||||
REM /i psqlodbc_x64.msi - pick MSI file to install. All properties
|
||||
REM will be read from existing installation.
|
||||
REM REINSTALLMODE=vamus - reinstall all files, regardless of version.
|
||||
REM This makes sure documentation and other
|
||||
REM non-versioned files are updated.
|
||||
REM REINSTALL=ALL - Reinstall all features that were previously
|
||||
REM installed with the new version.
|
||||
msiexec /i psqlodbc_x64.msi REINSTALLMODE=vamus REINSTALL=ALL /qr
|
Reference in New Issue
Block a user