2014-10-21 14:16:10 -04:00
#!/bin/bash
2015-01-04 20:15:19 -05:00
# we assume this script is <ardour-src>/tools/x-win/package.sh
2014-10-21 14:16:10 -04:00
pushd " `/usr/bin/dirname \" $0 \"` " > /dev/null; this_script_dir = "`pwd`" ; popd > /dev/null
2015-03-10 06:34:37 -04:00
cd $this_script_dir
. ../define_versions.sh
2014-10-21 14:16:10 -04:00
cd $this_script_dir /../..
2015-03-10 06:34:37 -04:00
2014-10-21 14:16:10 -04:00
test -f gtk2_ardour/wscript || exit 1
2015-01-04 20:15:19 -05:00
# Defaults (overridden by environment)
2014-10-21 14:16:10 -04:00
: ${ XARCH =i686 } # or x86_64
: ${ ROOT =/home/ardour }
: ${ MAKEFLAGS =-j4 }
: ${ TMPDIR =/var/tmp }
2015-12-07 10:16:58 -05:00
: ${ SRCCACHE =/var/tmp/winsrc } # source-code tgz cache
2016-04-07 16:27:03 -04:00
: ${ HARRISONCHANNELSTRIP =harrison_channelstrip }
2014-10-21 14:16:10 -04:00
2016-05-16 08:42:19 -04:00
# see also wscript, video_tool_paths.cc, bundle_env_mingw.cc
# registry keys based on this are used there
PROGRAM_NAME = Ardour
PROGRAM_KEY = Ardour
PROGRAM_VERSION = ${ major_version }
PRODUCT_NAME = ardour
PRODUCT_VERSION = ${ major_version }
2016-08-02 07:46:41 -04:00
WITH_HARRISON_LV2 = 1 ;
WITH_X42_LV2 = 1 ;
2015-01-04 21:05:01 -05:00
# TODO: grep from build/config.log instead
while [ $# -gt 0 ] ; do
echo " arg = $1 "
case $1 in
--mixbus)
MIXBUS = 1
2015-11-17 06:19:18 -05:00
WITH_HARRISON_LV2 = 1 ;
WITH_X42_LV2 = 1 ;
2016-05-16 08:42:19 -04:00
PROGRAM_NAME = Mixbus
PROGRAM_KEY = Mixbus
PRODUCT_NAME = mixbus
shift ; ;
--mixbus32c)
MIXBUS = 1
WITH_HARRISON_LV2 = 1 ;
WITH_X42_LV2 = 1 ;
PRODUCT_NAME = mixbus32c
PROGRAM_KEY = Mixbus32C
PROGRAM_NAME = Mixbus32C-${ PROGRAM_VERSION }
PROGRAM_VERSION = ""
2015-01-04 21:05:01 -05:00
shift ; ;
2016-04-07 16:27:03 -04:00
--chanstrip) HARRISONCHANNELSTRIP = $2 ; shift; shift ; ;
2015-01-04 21:05:01 -05:00
esac
done
2015-01-04 20:15:19 -05:00
2015-03-23 15:46:59 -04:00
LOWERCASE_DIRNAME = ardour${ major_version }
2015-01-05 13:22:19 -05:00
STATEFILE_SUFFIX = ardour # see filename_extensions.cc
2015-01-04 21:05:01 -05:00
2015-01-04 20:15:19 -05:00
# derived variables
2015-08-08 18:41:00 -04:00
PRODUCT_ID = ${ PROGRAM_NAME } ${ PROGRAM_VERSION }
2015-01-04 20:15:19 -05:00
PRODUCT_EXE = ${ PRODUCT_NAME } .exe
PRODUCT_ICON = ${ PRODUCT_NAME } .ico
###############################################################################
2015-03-10 06:34:37 -04:00
echo " Packaging $PRODUCT_ID "
2014-10-21 14:16:10 -04:00
if test " $XARCH " = "x86_64" -o " $XARCH " = "amd64" ; then
echo "Target: 64bit Windows (x86_64)"
XPREFIX = x86_64-w64-mingw32
WARCH = w64
else
echo "Target: 32 Windows (i686)"
XPREFIX = i686-w64-mingw32
WARCH = w32
fi
: ${ PREFIX = ${ ROOT } /win-stack- $WARCH }
2015-12-07 10:16:58 -05:00
export SRCCACHE
2014-10-21 14:16:10 -04:00
if [ " $( id -u) " = "0" ] ; then
apt-get -y install nsis curl
fi
function download {
echo " --- Downloading.. $2 "
2015-12-07 10:16:58 -05:00
test -f ${ SRCCACHE } /$1 || curl -k -L -o ${ SRCCACHE } /$1 $2
2014-10-21 14:16:10 -04:00
}
################################################################################
set -e
2015-04-03 15:17:04 -04:00
ARDOURVERSION = ${ release_version }
2014-10-21 14:16:10 -04:00
ARDOURDATE = $( date -R)
2015-04-03 15:17:04 -04:00
if ! test -f build/gtk2_ardour/ardour-${ ARDOURVERSION } .exe; then
echo " *** Please compile ardour- ${ ARDOURVERSION } .exe first. "
2014-10-21 14:16:10 -04:00
exit 1
fi
2015-03-11 21:36:01 -04:00
echo " === bundle to $DESTDIR "
2014-10-21 14:16:10 -04:00
./waf install
################################################################################
if test -z " $DESTDIR " ; then
DESTDIR = ` mktemp -d`
trap 'rm -rf $DESTDIR' exit SIGINT SIGTERM
fi
echo " === bundle to $DESTDIR "
2015-01-05 13:22:19 -05:00
ALIBDIR = $DESTDIR /lib/${ LOWERCASE_DIRNAME }
2014-10-21 14:16:10 -04:00
rm -rf $DESTDIR
mkdir -p $DESTDIR /bin
mkdir -p $DESTDIR /share/
mkdir -p $ALIBDIR /surfaces
mkdir -p $ALIBDIR /backends
mkdir -p $ALIBDIR /panners
mkdir -p $ALIBDIR /vamp
2015-02-12 11:35:39 -05:00
mkdir -p $ALIBDIR /suil
2014-10-21 14:16:10 -04:00
cp build/libs/gtkmm2ext/gtkmm2ext-*.dll $DESTDIR /bin/
cp build/libs/midi++2/midipp-*.dll $DESTDIR /bin/
cp build/libs/evoral/evoral-*.dll $DESTDIR /bin/
cp build/libs/ardour/ardour-*.dll $DESTDIR /bin/
cp build/libs/timecode/timecode.dll $DESTDIR /bin/
cp build/libs/qm-dsp/qmdsp-*.dll $DESTDIR /bin/
cp build/libs/canvas/canvas-*.dll $DESTDIR /bin/
cp build/libs/pbd/pbd-*.dll $DESTDIR /bin/
2015-08-05 19:02:13 -04:00
cp build/libs/ptformat/ptformat-*.dll $DESTDIR /bin/
2014-10-21 14:16:10 -04:00
cp build/libs/audiographer/audiographer-*.dll $DESTDIR /bin/
cp build/libs/fst/ardour-vst-scanner.exe $DESTDIR /bin/ || true
2015-01-04 20:15:19 -05:00
cp ` ls -t build/gtk2_ardour/ardour-*.exe | head -n1` $DESTDIR /bin/${ PRODUCT_EXE }
2014-10-21 14:16:10 -04:00
mkdir -p $DESTDIR /lib/gtk-2.0/engines
cp build/libs/clearlooks-newer/clearlooks.dll $DESTDIR /lib/gtk-2.0/engines/libclearlooks.la
cp $PREFIX /bin/*dll $DESTDIR /bin/
cp $PREFIX /lib/*dll $DESTDIR /bin/
2015-08-04 01:36:35 -04:00
# special case libportaudio (wasapi), old stack has no wasapi and hence no .xp
cp $PREFIX /bin/libportaudio-2.xp $DESTDIR /bin/ || cp $PREFIX /bin/libportaudio-2.dll $DESTDIR /bin/libportaudio-2.xp
2014-10-21 14:16:10 -04:00
rm -rf $DESTDIR /bin/libjack*.dll
cp ` find build/libs/surfaces/ -iname "*.dll" ` $ALIBDIR /surfaces/
cp ` find build/libs/backends/ -iname "*.dll" ` $ALIBDIR /backends/
cp ` find build/libs/panners/ -iname "*.dll" ` $ALIBDIR /panners/
cp -r build/libs/LV2 $ALIBDIR /
cp -r build/libs/vamp-plugins/*ardourvampplugins*.dll $ALIBDIR /vamp/libardourvampplugins.dll
2015-02-12 17:00:47 -05:00
cp $PREFIX /lib/suil-*/*.dll $ALIBDIR /suil/ || true
2014-10-21 14:16:10 -04:00
2015-01-28 17:08:06 -05:00
# lv2 core, classifications etc - TODO check if we need the complete LV2 ontology
if test -d $PREFIX /lib/lv2/lv2core.lv2 ; then
cp -R $PREFIX /lib/lv2/lv2core.lv2 $ALIBDIR /LV2/
fi
2015-02-17 14:58:45 -05:00
mv $ALIBDIR /surfaces/ardourcp*.dll $DESTDIR /bin/
2014-10-21 14:16:10 -04:00
# TODO use -static-libgcc -static-libstdc++ -- but for .exe files only
if update-alternatives --query ${ XPREFIX } -gcc | grep Value: | grep -q win32; then
cp /usr/lib/gcc/${ XPREFIX } /*-win32/libgcc_s_*.dll $DESTDIR /bin/
cp /usr/lib/gcc/${ XPREFIX } /*-win32/libstdc++-6.dll $DESTDIR /bin/
elif update-alternatives --query ${ XPREFIX } -gcc | grep Value: | grep -q posix; then
cp /usr/lib/gcc/${ XPREFIX } /*-posix/libgcc_s_*.dll $DESTDIR /bin/
cp /usr/lib/gcc/${ XPREFIX } /*-posix/libstdc++-6.dll $DESTDIR /bin/
else
cp /usr/lib/gcc/${ XPREFIX } /*/libgcc_s_sjlj-1.dll $DESTDIR /bin/
cp /usr/lib/gcc/${ XPREFIX } /*/libstdc++-6.dll $DESTDIR /bin/
fi
#Ubuntu's 14.04's mingw needs this one for the std libs above
if test -f /usr/${ XPREFIX } /lib/libwinpthread-1.dll; then
cp /usr/${ XPREFIX } /lib/libwinpthread-1.dll $DESTDIR /bin/
fi
2015-01-05 13:22:19 -05:00
cp -r $PREFIX /share/${ LOWERCASE_DIRNAME } $DESTDIR /share/
2015-03-11 21:36:01 -04:00
cp -r $PREFIX /share/locale $DESTDIR /share/
2015-01-05 13:22:19 -05:00
cp -r $PREFIX /etc/${ LOWERCASE_DIRNAME } /* $DESTDIR /share/${ LOWERCASE_DIRNAME } /
2014-10-21 14:16:10 -04:00
cp COPYING $DESTDIR /share/
2015-01-04 20:15:19 -05:00
cp gtk2_ardour/icons/${ PRODUCT_ICON } $DESTDIR /share/
2014-12-24 08:33:48 -05:00
cp gtk2_ardour/icons/ardour_bug.ico $DESTDIR /share/
2014-10-21 14:16:10 -04:00
2014-11-18 16:08:51 -05:00
# replace default cursor with square version (sans hotspot file)
2015-01-05 13:22:19 -05:00
cp gtk2_ardour/icons/cursor_square/* $DESTDIR /share/${ LOWERCASE_DIRNAME } /icons/
2014-11-18 16:08:51 -05:00
2014-10-21 14:16:10 -04:00
# clean build-dir after depoyment
2015-03-11 21:36:01 -04:00
echo " === bundle completed, cleaning up"
2014-10-21 14:16:10 -04:00
./waf uninstall
echo " === complete"
du -sh $DESTDIR
2014-12-23 21:56:54 -05:00
################################################################################
### get video tools
if test -z " $NOVIDEOTOOLS " ; then
echo " === Including video-tools"
HARVID_VERSION = $( curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
XJADEO_VERSION = $( curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
2014-12-24 08:33:48 -05:00
rsync -a -q --partial \
2014-12-23 21:56:54 -05:00
rsync://ardour.org/video-tools/harvid_win-${ HARVID_VERSION } .tar.xz \
2015-12-07 10:16:58 -05:00
" ${ SRCCACHE } /harvid_win- ${ HARVID_VERSION } .tar.xz "
2014-12-23 21:56:54 -05:00
2014-12-24 08:33:48 -05:00
rsync -a -q --partial \
2014-12-23 21:56:54 -05:00
rsync://ardour.org/video-tools/xjadeo_win-${ XJADEO_VERSION } .tar.xz \
2015-12-07 10:16:58 -05:00
" ${ SRCCACHE } /xjadeo_win- ${ XJADEO_VERSION } .tar.xz "
2014-12-23 21:56:54 -05:00
mkdir $DESTDIR /video
2015-12-07 10:16:58 -05:00
tar -xf " ${ SRCCACHE } /harvid_win- ${ HARVID_VERSION } .tar.xz " -C " $DESTDIR /video/ "
tar -xf " ${ SRCCACHE } /xjadeo_win- ${ XJADEO_VERSION } .tar.xz " -C " $DESTDIR /video/ "
2014-12-24 08:33:48 -05:00
echo " === unzipped"
du -sh $DESTDIR /video
du -sh $DESTDIR
2014-12-23 21:56:54 -05:00
fi
2014-10-21 14:16:10 -04:00
################################################################################
### include static gdb - re-zipped binaries from
### http://sourceforge.net/projects/mingw/files/MinGW/Extension/gdb/gdb-7.6.1-1/gdb-7.6.1-1-mingw32-bin.tar.lzma
### http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.1/threads-win32/sjlj/x86_64-4.9.1-release-win32-sjlj-rt_v3-rev1.7z
if ! grep " using ./waf configure" build/config.log | grep -q -- "--optimize" ; then
download gdb-static-win3264.tar.xz http://robin.linuxaudio.org/gdb-static-win3264.tar.xz
2015-12-07 10:16:58 -05:00
cd ${ SRCCACHE }
2014-10-21 14:16:10 -04:00
tar xf gdb-static-win3264.tar.xz
cd - > /dev/null
2015-01-04 20:15:19 -05:00
echo " === Creating debug.bat"
2015-12-07 10:16:58 -05:00
cp -r ${ SRCCACHE } /gdb_$WARCH $DESTDIR /gdb
2015-01-04 20:15:19 -05:00
cat > $DESTDIR /debug.bat << EOF
2014-10-21 14:16:10 -04:00
cd bin
2015-04-23 17:56:32 -04:00
START ..\\ gdb\\ bin\\ gdb.exe -iex "set logging overwrite on" -iex "set height 0" -iex " set logging on %UserProfile%\\ ${ PRODUCT_NAME } -debug.log " -iex " target exec ${ PRODUCT_EXE } " -iex "run"
2014-10-21 14:16:10 -04:00
EOF
2015-01-04 20:15:19 -05:00
OUTFILE = " ${ TMPDIR } / ${ PRODUCT_NAME } - ${ ARDOURVERSION } -dbg- ${ WARCH } -Setup.exe "
2014-12-23 21:56:54 -05:00
VERSIONINFO = "Debug Version."
2014-10-21 14:16:10 -04:00
else
2015-01-04 20:15:19 -05:00
OUTFILE = " ${ TMPDIR } / ${ PRODUCT_NAME } - ${ ARDOURVERSION } - ${ WARCH } -Setup.exe "
2014-12-23 21:56:54 -05:00
VERSIONINFO = "Optimized Version."
2014-10-21 14:16:10 -04:00
fi
2015-02-25 18:55:55 -05:00
################################################################################
### Mixbus plugins, etc
2015-11-17 06:19:18 -05:00
if test x$WITH_X42_LV2 != x ; then
2015-02-25 18:55:55 -05:00
mkdir -p $ALIBDIR /LV2
2015-07-02 05:20:10 -04:00
echo "Adding x42 Plugins"
2016-06-06 14:19:47 -04:00
for proj in x42-meters x42-midifilter x42-midimap x42-stereoroute x42-eq setBfree; do
X42_VERSION = $( curl -s -S http://x42-plugins.com/x42/win/${ proj } .latest.txt)
rsync -a -q --partial \
rsync://x42-plugins.com/x42/win/${ proj } -lv2-${ WARCH } -${ X42_VERSION } .zip \
" ${ SRCCACHE } / ${ proj } -lv2- ${ WARCH } - ${ X42_VERSION } .zip "
unzip -q -d " $ALIBDIR /LV2/ " " ${ SRCCACHE } / ${ proj } -lv2- ${ WARCH } - ${ X42_VERSION } .zip "
done
2015-07-02 05:20:10 -04:00
fi
2015-11-17 06:19:18 -05:00
if test x$WITH_HARRISON_LV2 != x ; then
2015-07-02 05:20:10 -04:00
mkdir -p $ALIBDIR /LV2
echo "Including Harrison LV2s"
curl -s -S --fail -# \
2015-12-07 10:16:58 -05:00
-z " ${ SRCCACHE } /harrison_lv2s. ${ WARCH } .zip " \
-o " ${ SRCCACHE } /harrison_lv2s. ${ WARCH } .zip " \
2015-12-13 11:19:38 -05:00
" http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_lv2s. ${ WARCH } .zip "
2015-12-07 10:16:58 -05:00
unzip -q -d " $ALIBDIR /LV2/ " " ${ SRCCACHE } /harrison_lv2s. ${ WARCH } .zip "
2015-07-02 05:20:10 -04:00
fi
if test -n " $MIXBUS " ; then
echo "Deploying Harrison Mixbus Channelstrip"
mkdir -p $ALIBDIR /ladspa/strip
curl -s -S --fail -# \
2016-04-07 16:27:03 -04:00
-z " ${ SRCCACHE } / ${ HARRISONCHANNELSTRIP } . ${ WARCH } .dll " \
-o " ${ SRCCACHE } / ${ HARRISONCHANNELSTRIP } . ${ WARCH } .dll " \
" http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/ ${ HARRISONCHANNELSTRIP } . ${ WARCH } .dll "
2015-02-25 18:55:55 -05:00
2016-04-07 16:27:03 -04:00
cp " ${ SRCCACHE } / ${ HARRISONCHANNELSTRIP } . ${ WARCH } .dll " \
" $ALIBDIR /ladspa/strip/ ${ HARRISONCHANNELSTRIP } .dll "
2016-05-23 10:46:08 -04:00
echo "Deploying Harrison Vamp Plugins"
mkdir -p $ALIBDIR /vamp
curl -s -S --fail -# \
-z " ${ SRCCACHE } /harrison_vamp. ${ WARCH } .dll " \
-o " ${ SRCCACHE } /harrison_vamp. ${ WARCH } .dll " \
" http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_vamp. ${ WARCH } .dll "
cp " ${ SRCCACHE } /harrison_vamp. ${ WARCH } .dll " \
" $ALIBDIR /vamp/harrison_vamp.dll "
2015-02-25 18:55:55 -05:00
fi
2015-08-10 12:55:51 -04:00
( cd $DESTDIR ; find . ) > ${ TMPDIR } /file_list.txt
2014-10-21 14:16:10 -04:00
################################################################################
echo " === Preparing Windows Installer"
NSISFILE = $DESTDIR /a3.nsis
if test " $WARCH " = "w64" ; then
PGF = PROGRAMFILES64
2015-04-23 18:00:47 -04:00
SFX =
2014-10-21 14:16:10 -04:00
else
PGF = PROGRAMFILES
2015-04-23 18:00:47 -04:00
# TODO we should only add this for 32bit on 64bit windows!
SFX = " (x86)"
2014-10-21 14:16:10 -04:00
fi
2014-10-22 17:58:57 -04:00
if test -n " $QUICKZIP " ; then
cat > $NSISFILE << EOF
SetCompressor zlib
EOF
else
cat > $NSISFILE << EOF
2014-10-21 14:16:10 -04:00
SetCompressor /SOLID lzma
SetCompressorDictSize 32
2014-10-22 17:58:57 -04:00
EOF
fi
2014-10-21 14:16:10 -04:00
2014-10-22 17:58:57 -04:00
cat >> $NSISFILE << EOF
2015-01-05 10:00:04 -05:00
!addincludedir " ${ this_script_dir } \\nsis "
2014-10-21 14:16:10 -04:00
!include MUI2.nsh
2015-01-05 10:00:04 -05:00
!include FileAssociation.nsh
2015-08-04 01:36:35 -04:00
!include WinVer.nsh
2015-01-05 10:00:04 -05:00
2015-01-04 20:15:19 -05:00
Name " ${ PROGRAM_NAME } ${ PROGRAM_VERSION } "
2014-10-21 14:16:10 -04:00
OutFile " ${ OUTFILE } "
RequestExecutionLevel admin
2015-01-04 20:15:19 -05:00
InstallDir " \$ ${ PGF } \\ ${ PRODUCT_ID } "
2016-05-16 08:42:19 -04:00
InstallDirRegKey HKLM " Software\\ ${ PRODUCT_NAME } \\ ${ PRODUCT_ID } \\ $WARCH " "Install_Dir"
2015-01-04 20:15:19 -05:00
!define MUI_ICON " share\\ ${ PRODUCT_ICON } "
EOF
2014-10-21 14:16:10 -04:00
2015-01-04 21:05:01 -05:00
if test -n " $MIXBUS " ; then
# TODO: proper welcome/finish text.
cat >> $NSISFILE << EOF
2015-07-02 05:20:10 -04:00
!define MUI_FINISHPAGE_TITLE "Welcome to Harrison Mixbus"
!define MUI_FINISHPAGE_TEXT "Thanks for your purchase of Mixbus!\$\\r\$\\nYou will find the Mixbus application in the Start Menu (or the All Apps panel for Windows 8) \$\\r\$\\nClick the link below to view the Mixbus manual, and learn ways to get involved with the Mixbus community."
!define MUI_FINISHPAGE_LINK "Mixbus Manual"
!define MUI_FINISHPAGE_LINK_LOCATION "http://www.harrisonconsoles.com/mixbus/mixbus3-live-manual"
2015-01-04 21:05:01 -05:00
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
EOF
else
cat >> $NSISFILE << EOF
2014-10-21 14:16:10 -04:00
!define MUI_FINISHPAGE_TITLE "Welcome to Ardour"
2015-04-23 12:25:11 -04:00
!define MUI_FINISHPAGE_TEXT "This windows versions or Ardour is provided as-is.\$\\r\$\\nThe Ardour community currently has no expertise in supporting windows users, and there are no developers focusing on windows specific issues either.\$\\r\$\\nIf you like Ardour, please consider helping out."
!define MUI_FINISHPAGE_LINK "Ardour on Windows"
!define MUI_FINISHPAGE_LINK_LOCATION "http://ardour.org/windows.html"
2014-10-21 14:16:10 -04:00
#this would run as admin - see http://forums.winamp.com/showthread.php?t=353366
2015-01-04 20:15:19 -05:00
#!define MUI_FINISHPAGE_RUN "\$INSTDIR\\bin\\${PRODUCT_EXE}"
2014-10-21 14:16:10 -04:00
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
2015-01-04 20:15:19 -05:00
EOF
2014-10-21 14:16:10 -04:00
2015-01-04 21:05:01 -05:00
fi
2015-01-04 20:15:19 -05:00
cat >> $NSISFILE << EOF
2014-10-21 14:16:10 -04:00
!define MUI_ABORTWARNING
!insertmacro MUI_PAGE_LICENSE "share\\COPYING"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
2015-01-04 20:15:19 -05:00
Section " ${ PROGRAM_NAME } ${ PROGRAM_VERSION } (required) " SecMainProg
2014-10-21 14:16:10 -04:00
SectionIn RO
SetOutPath \$ INSTDIR
File /r bin
File /r lib
File /r share
2015-01-04 20:15:19 -05:00
File /nonfatal debug.bat
2014-10-21 14:16:10 -04:00
File /nonfatal /r gdb
2016-05-16 08:42:19 -04:00
WriteRegStr HKLM " Software\\ ${ PROGRAM_KEY } \\v ${ major_version } \\ $WARCH " "Install_Dir" "\$INSTDIR"
2015-04-23 15:09:48 -04:00
WriteRegStr HKLM " Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ ${ PRODUCT_ID } - ${ WARCH } " "DisplayName" " ${ PROGRAM_NAME } ${ PROGRAM_VERSION } "
WriteRegStr HKLM " Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ ${ PRODUCT_ID } - ${ WARCH } " "UninstallString" '"\$INSTDIR\\uninstall.exe"'
WriteRegDWORD HKLM " Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ ${ PRODUCT_ID } - ${ WARCH } " "NoModify" 1
WriteRegDWORD HKLM " Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ ${ PRODUCT_ID } - ${ WARCH } " "NoRepair" 1
2014-10-21 14:16:10 -04:00
WriteUninstaller "\$INSTDIR\uninstall.exe"
2015-01-04 20:15:19 -05:00
CreateShortCut " \$INSTDIR\\ ${ PROGRAM_NAME } ${ PROGRAM_VERSION } .lnk " " \$INSTDIR\\bin\\ ${ PRODUCT_EXE } " "" " \$INSTDIR\\bin\\ ${ PRODUCT_EXE } " 0
2015-01-05 13:22:19 -05:00
\$ { registerExtension} " \$INSTDIR\\bin\\ ${ STATEFILE_SUFFIX } " " . ${ PRODUCT_NAME } " " ${ PROGRAM_NAME } Session "
2014-10-21 14:16:10 -04:00
SectionEnd
2015-08-13 00:50:03 -04:00
Section "WASAPI sound driver" SecWASAPI
SectionEnd
2014-12-23 21:56:54 -05:00
EOF
if test -z " $NOVIDEOTOOLS " ; then
cat >> $NSISFILE << EOF
Section "Videotimeline Tools" SecVideo
2016-05-16 08:42:19 -04:00
WriteRegStr HKLM " Software\\ ${ PROGRAM_KEY } \\v ${ major_version } \\video " "Install_Dir" "\$INSTDIR\\video"
2014-12-23 21:56:54 -05:00
SetOutPath \$ INSTDIR
File /r video
SectionEnd
EOF
fi
cat >> $NSISFILE << EOF
2014-10-21 14:16:10 -04:00
Section "Start Menu Shortcuts" SecMenu
SetShellVarContext all
2015-04-23 18:00:47 -04:00
CreateDirectory " \$SMPROGRAMS\\ ${ PRODUCT_ID } ${ SFX } "
CreateShortCut " \$SMPROGRAMS\\ ${ PRODUCT_ID } ${ SFX } \\ ${ PROGRAM_NAME } ${ PROGRAM_VERSION } .lnk " " \$INSTDIR\\bin\\ ${ PRODUCT_EXE } " "" " \$INSTDIR\\bin\\ ${ PRODUCT_EXE } " 0
2014-10-21 14:16:10 -04:00
EOF
2015-01-04 20:15:19 -05:00
if test -f " $DESTDIR /debug.bat " ; then
2014-10-21 14:16:10 -04:00
cat >> $NSISFILE << EOF
2015-04-23 18:00:47 -04:00
CreateShortCut " \$SMPROGRAMS\\ ${ PRODUCT_ID } ${ SFX } \\ ${ PROGRAM_NAME } ${ PROGRAM_VERSION } GDB.lnk " "\$INSTDIR\\debug.bat" "" "\$INSTDIR\\share\\ardour_bug.ico" 0
2014-12-24 08:33:48 -05:00
EOF
fi
if test -z " $NOVIDEOTOOLS " ; then
cat >> $NSISFILE << EOF
2015-01-04 20:15:19 -05:00
IfFileExists "\$INSTDIR\\video\\xjadeo\\xjadeo.exe" 0 +2
2015-04-23 18:00:47 -04:00
CreateShortCut " \$SMPROGRAMS\\ ${ PRODUCT_ID } ${ SFX } \\Video Monitor.lnk " "\$INSTDIR\\video\\xjadeo\\xjadeo.exe" "" "\$INSTDIR\\video\\xjadeo\\xjadeo.exe" 0
2014-10-21 14:16:10 -04:00
EOF
fi
cat >> $NSISFILE << EOF
2015-04-23 18:00:47 -04:00
CreateShortCut " \$SMPROGRAMS\\ ${ PRODUCT_ID } ${ SFX } \\Uninstall.lnk " "\$INSTDIR\\uninstall.exe" "" "\$INSTDIR\\uninstall.exe" 0
2014-10-21 14:16:10 -04:00
SectionEnd
2015-01-04 20:15:19 -05:00
LangString DESC_SecMainProg \$ { LANG_ENGLISH} " ${ PROGRAM_NAME } ${ ARDOURVERSION } \$\\r\$\\n ${ VERSIONINFO } \$\\r\$\\n ${ ARDOURDATE } "
2015-08-13 00:50:03 -04:00
LangString DESC_SecWASAPI \$ { LANG_ENGLISH} "WASAPI Audio Driver\$\\r\$\\nOnly works on Vista or later. Windows 10 Users may currently also experience issues if this is installed."
2014-12-23 21:56:54 -05:00
EOF
if test -z " $NOVIDEOTOOLS " ; then
cat >> $NSISFILE << EOF
LangString DESC_SecVideo \$ { LANG_ENGLISH} " Video Tools\$\\r\$\\nxjadeo- ${ XJADEO_VERSION } \$\\r\$\\nharvid- ${ HARVID_VERSION } "
EOF
fi
cat >> $NSISFILE << EOF
2014-10-21 14:16:10 -04:00
LangString DESC_SecMenu \$ { LANG_ENGLISH} "Create Start-Menu Shortcuts (recommended)."
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
2015-01-04 20:15:19 -05:00
!insertmacro MUI_DESCRIPTION_TEXT \$ { SecMainProg} \$ ( DESC_SecMainProg)
2015-08-13 00:50:03 -04:00
!insertmacro MUI_DESCRIPTION_TEXT \$ { SecWASAPI} \$ ( DESC_SecWASAPI)
2014-12-23 21:56:54 -05:00
EOF
if test -z " $NOVIDEOTOOLS " ; then
cat >> $NSISFILE << EOF
!insertmacro MUI_DESCRIPTION_TEXT \$ { SecVideo} \$ ( DESC_SecVideo)
EOF
fi
cat >> $NSISFILE << EOF
2014-10-21 14:16:10 -04:00
!insertmacro MUI_DESCRIPTION_TEXT \$ { SecMenu} \$ ( DESC_SecMenu)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
Section "Uninstall"
SetShellVarContext all
2015-04-23 15:09:48 -04:00
DeleteRegKey HKLM " Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ ${ PRODUCT_ID } - ${ WARCH } "
2015-01-04 20:15:19 -05:00
DeleteRegKey HKLM " Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ ${ PRODUCT_ID } "
2016-05-16 08:42:19 -04:00
DeleteRegKey HKLM " Software\\ ${ PROGRAM_KEY } \\v ${ major_version } "
2014-10-21 14:16:10 -04:00
RMDir /r "\$INSTDIR\\bin"
RMDir /r "\$INSTDIR\\lib"
RMDir /r "\$INSTDIR\\share"
RMDir /r "\$INSTDIR\\gdb"
2014-12-23 21:56:54 -05:00
RMDir /r "\$INSTDIR\\video"
2015-01-04 20:15:19 -05:00
Delete "\$INSTDIR\\debug.bat"
2014-10-21 14:16:10 -04:00
Delete "\$INSTDIR\\uninstall.exe"
2015-01-04 20:15:19 -05:00
Delete " \$INSTDIR\\ ${ PROGRAM_NAME } ${ PROGRAM_VERSION } .lnk "
2014-10-21 14:16:10 -04:00
RMDir "\$INSTDIR"
2015-04-23 18:00:47 -04:00
Delete " \$SMPROGRAMS\\ ${ PRODUCT_ID } ${ SFX } \\*.* "
RMDir " \$SMPROGRAMS\\ ${ PRODUCT_ID } ${ SFX } "
2015-01-05 13:22:19 -05:00
\$ { unregisterExtension} " . ${ STATEFILE_SUFFIX } " " ${ PROGRAM_NAME } Session "
2014-10-21 14:16:10 -04:00
SectionEnd
2015-08-13 00:50:03 -04:00
Function .onInit
ReadRegStr \$ R0 HKLM \
" Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ ${ PRODUCT_ID } - ${ WARCH } " \
"UninstallString"
StrCmp \$ R0 "" done
MessageBox MB_OKCANCEL| MB_ICONEXCLAMATION \
" ${ PROGRAM_NAME } is already installed. Click 'OK' to remove the previous version or 'Cancel' to cancel this upgrade. " \
IDOK uninst
Abort
uninst:
ClearErrors
ExecWait '\$R0 _?=\$INSTDIR'
IfErrors uninstall_error
ReadRegStr \$ R1 HKLM \
" Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ ${ PRODUCT_ID } - ${ WARCH } " \
"UninstallString"
StrCmp \$ R1 "" 0 done
Delete "\$INSTDIR\\uninstall.exe"
RMDir "\$INSTDIR"
goto done
uninstall_error:
MessageBox MB_OK| MB_ICONEXCLAMATION \
"Uninstaller did not complete successfully. Continue at your own risk..." \
IDOK done
done :
\$ { If} \$ { AtMostWinXP}
SectionSetFlags \$ { SecWASAPI} \$ { SF_RO}
\$ { Else}
SectionSetFlags \$ { SecWASAPI} \$ { SF_SELECTED}
\$ { EndIf}
FunctionEnd
Function .onInstSuccess
\$ { If} \$ { AtMostWinXP}
goto pa_no_wasapi
\$ { EndIf}
SectionGetFlags \$ { SecWASAPI} \$ R0
IntOp \$ R0 \$ R0 & \$ { SF_SELECTED}
IntCmp \$ R0 \$ { SF_SELECTED} pa_with_wasapi pa_no_wasapi
pa_with_wasapi:
; VISTA .. 9, libportaudio with WASAPI is good.
Delete "\$INSTDIR\\bin\\libportaudio-2.xp"
goto endportaudio
; Windows XP lacks support for WASAPI, Windows10 on some system has issues
; http://tracker.ardour.org/view.php?id= 6507
pa_no_wasapi:
Delete "\$INSTDIR\\bin\\libportaudio-2.dll"
Rename "\$INSTDIR\\bin\\libportaudio-2.xp" "\$INSTDIR\\bin\\libportaudio-2.dll"
endportaudio:
FunctionEnd
2014-10-21 14:16:10 -04:00
EOF
rm -f ${ OUTFILE }
echo " === OutFile: $OUTFILE "
2014-10-22 17:58:57 -04:00
if test -n " $QUICKZIP " ; then
echo " === Building Windows Installer (fast zip)"
else
2014-10-21 14:16:10 -04:00
echo " === Building Windows Installer (lzma compression takes ages)"
2014-10-22 17:58:57 -04:00
fi
time makensis -V2 $NSISFILE
2014-10-21 14:16:10 -04:00
rm -rf $DESTDIR
2015-01-10 13:39:45 -05:00
ls -lgGh " $OUTFILE "