installer/psqlodbc-setup/buildBootstrapper.ps1 (92 lines of code) (raw):

<# .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) $modulePath="${scriptPath}\..\..\winbuild" Import-Module ${modulePath}\Psqlodbc-config.psm1 if ("$version" -eq "") { # $configInfo = & "$scriptPath\..\..\winbuild\configuration.ps1" "$BuildConfigPath" $defaultConfigDir=$modulePath $configInfo = LoadConfiguration $BuildConfigPath $defaultConfigDir $version = GetPackageVersion $configInfo "$scriptPath/../.." } $STUPBASE = GetObjbase "." "installer\psqlodbc-setup" $INSTBASE = GetObjbase ".." "installer" write-host INSTBASE=$INSTBASE Remove-Module Psqlodbc-config if ("$env:WIX" -eq "") { throw "Please install WIX" } $wix_dir="${env:WIX}bin" $pgmname="psqlodbc-setup" $build_config="Release" $objdir="$STUPBASE\obj\${build_config}" $bindir="$STUPBASE\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" "-dINSTBASE=$INSTBASE" "-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 }