2012-01-29 09:10:37 +01:00
##############################################################################
# This optional file "builder-targets-cb.sh" will be called by builder.sh
#
# The targets will be called from thde opsi-builder using the following
# order: config, prepare, retrieve, create, package, publish, commit, cleanup
# You can overwrite the target functions in builder-targets-cb.sh
#
# You can define callback functions. The functions are called from
# opsi-builder within processing a target
# cb_package_makeproductfile
#
# You can use every variable defined in any configuration file or by
# the defined builder script itself. Also, calling the predefined
# targets builder_<targetname> is possible.
#
# Abstract:
# target order: config, prepare, retrieve, create, package, publish, commit, cleanup
# callbacks: <none>
#
##############################################################################
function cleanup( ) {
2012-02-06 19:31:41 +01:00
echo "Cleanup"
2012-02-05 20:33:48 +01:00
builder_cleanup
2012-01-29 09:10:37 +01:00
}
2012-02-04 18:20:26 +01:00
2013-03-18 05:58:53 +01:00
function retrieve( ) {
echo "Retrieve"
# work around big file download for verison change
local olddir = ` echo $DIST_CACHE_DIR | sed -e " s/\/[^\/]* $// " `
echo $olddir
mv $olddir /${ PN } -* tempsereby
mv tempsereby $DIST_CACHE_DIR
builder_retrieve
}
2013-03-15 21:47:00 +01:00
function create( ) {
echo "Create"
builder_create
# create directories and extract the runtime packages
2013-08-06 08:53:04 +02:00
mkdir -p $INST_DIR /CLIENT_DATA/{ Install/Packages/BasicRuntimes,Install/Packages/Air,Config}
2013-04-06 08:12:09 +02:00
mkdir -p $INST_DIR /CLIENT_DATA/UnInstall/Packages/{ Flash,Shockwave,Silverlight}
2013-03-15 21:47:00 +01:00
7z x -o$INST_DIR /CLIENT_DATA/Install $INST_DIR /CLIENT_DATA/X86/svcpack/aio-runtimes.exe
2013-07-28 17:20:25 +02:00
# extract .net 8.0 & 8.1 now so the unix2dos dont change the extracted files
mkdir -p $INST_DIR /CLIENT_DATA/X86/win8xdotnet35
7z x -o$INST_DIR /CLIENT_DATA/X86/win8xdotnet35 $INST_DIR /CLIENT_DATA/X86/${ DL_FILE [6] }
7z x -y -o$INST_DIR /CLIENT_DATA/X86/win8xdotnet35 $INST_DIR /CLIENT_DATA/X86/${ DL_FILE [7] }
2013-07-28 10:59:11 +02:00
# move the Windows 8 dotnet 2 - 3.5 in place
2013-07-28 17:20:25 +02:00
mv -v $INST_DIR /CLIENT_DATA/X86/win8xdotnet35/sources/sxs $INST_DIR /CLIENT_DATA/Install/NET/WIN8.X
2013-04-05 11:03:03 +02:00
2013-08-06 08:53:04 +02:00
# move the Portbale Unlocker in Place
mv -v $INST_DIR /CLIENT_DATA/X86/Unlocker $INST_DIR /CLIENT_DATA/Install/Packages/BasicRuntimes/
2013-04-05 11:03:03 +02:00
# Serby and its hacks workaround (sereby pack wants to copy a file on install but thats not possible on a readonly device in opsi
# move the combined x86/x64 to a common name
mv $INST_DIR /CLIENT_DATA/Install/NET/3.5 $INST_DIR /CLIENT_DATA/Install/NET/35
# recreate the new dir
mkdir -p $INST_DIR /CLIENT_DATA/Install/NET/3.5
# move the common dir to the x86 name under the new dir
mv $INST_DIR /CLIENT_DATA/Install/NET/35 $INST_DIR /CLIENT_DATA/Install/NET/3.5/x86
# remove the copy from the install.bat
sed -e '/^copy/d' -i $INST_DIR /CLIENT_DATA/Install/NET/3.5/x86/_Install.bat
# move the package.xml un dir up
mv $INST_DIR /CLIENT_DATA/Install/NET/3.5/x86/package.xml $INST_DIR /CLIENT_DATA/Install/NET/3.5
# now link copy the x86 dir to x64
cp -al $INST_DIR /CLIENT_DATA/Install/NET/3.5/x86 $INST_DIR /CLIENT_DATA/Install/NET/3.5/x64
# do the copy for x86 (seded away erlyer)
mv $INST_DIR /CLIENT_DATA/Install/NET/3.5/x86/vs_setup_x86.msi $INST_DIR /CLIENT_DATA/Install/NET/3.5/x86/vs_setup.msi
mv $INST_DIR /CLIENT_DATA/Install/NET/3.5/x86/setup_x86.sdb $INST_DIR /CLIENT_DATA/Install/NET/3.5/x86/setup.sdb
# do the copy for x64 (seded away erlyer)
mv $INST_DIR /CLIENT_DATA/Install/NET/3.5/x64/vs_setup_x64.msi $INST_DIR /CLIENT_DATA/Install/NET/3.5/x64/vs_setup.msi
mv $INST_DIR /CLIENT_DATA/Install/NET/3.5/x64/setup_x64.sdb $INST_DIR /CLIENT_DATA/Install/NET/3.5/x64/setup.sdb
# create a new install.bat that calls the right setup from the right dir
echo "@echo off" >> $INST_DIR /CLIENT_DATA/Install/NET/3.5/_Install.bat
echo "set arch=%1" >> $INST_DIR /CLIENT_DATA/Install/NET/3.5/_Install.bat
echo "call %~dp0\%arch%\_Install.bat" >> $INST_DIR /CLIENT_DATA/Install/NET/3.5/_Install.bat
2013-08-05 21:31:53 +02:00
echo "" >> $INST_DIR /CLIENT_DATA/Install/NET/3.5/_Install.bat
2013-03-18 05:58:53 +01:00
2013-07-28 10:59:11 +02:00
# Integrate .net for win 8.0 into winpkg
2013-07-27 07:57:56 +02:00
for NETVER in 2.0 3.0 3.5
do
2013-07-28 10:59:11 +02:00
# convert all the cmd's to axept check entities
2013-07-27 15:05:13 +02:00
sed '/_Install.bat/ s/\/>/>\n\t\t<\/cmd>/' -i $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /package.xml
sed '/NET Framework/ s/\/>/>\n\t\t<\/cmd>/' -i $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /package.xml
2013-07-28 10:59:11 +02:00
# force a check on os verison for every cmd command
2013-07-27 15:05:13 +02:00
sed 's/.*\t<\/cmd>.*/\t\t<check type="os" condition="<" value="6.2.9200.0" \/>\n&/' -i $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /package.xml
2013-07-28 10:59:11 +02:00
# remove the installer and package end tags
2013-07-27 15:05:13 +02:00
sed -e '/^\t<\/install>/d' -i $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /package.xml
2013-07-28 10:59:11 +02:00
sed -e '/^<\/package>/d' -i $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /package.xml
2013-07-28 17:20:25 +02:00
# append the win 8.x install cmd via a cmd script that runs it
echo "<cmd path=\"_Install8X.bat\" >" >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /package.xml
echo "<check type=\"os\" condition=\">\" value=\"6.2.9200.0\" />" >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /package.xml
2013-07-28 10:59:11 +02:00
echo "</cmd>" >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /package.xml
# add back the install and package end tags
2013-07-27 07:57:56 +02:00
echo "</install>" >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /package.xml
echo "</package>" >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /package.xml
2013-07-28 10:59:11 +02:00
2013-07-28 17:20:25 +02:00
# create the needed install cmd script for win 8.x
echo "@echo off" >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /_Install8X.bat
echo "SET NETDIR=%~dp0" >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /_Install8X.bat
echo "cd %NETDIR%\.." >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /_Install8X.bat
echo "SET NETPARENTDIR=%cd%" >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /_Install8X.bat
echo " echo Installing .NET Framwork $NETVER " >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /_Install8X.bat
echo "dism /online /enable-feature /featurename:NetFx3 /All /Source:%NETPARENTDIR%\WIN8.X /LimitAccess" >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /_Install8X.bat
2013-08-05 21:31:53 +02:00
echo "" >> $INST_DIR /CLIENT_DATA/Install/NET/$NETVER /_Install8X.bat
2013-07-27 07:57:56 +02:00
done
2013-03-15 21:47:00 +01:00
# sed everything to disabled
2013-03-17 08:58:03 +01:00
sed -e "s!\"1\"!\"0\"!g" -e "s!maximized=\"0\"!maximized=\"1\"!" $INST_DIR /CLIENT_DATA/X86/WinPKG.xml > $INST_DIR /CLIENT_DATA/Config/WinPKG.xml
2013-03-15 21:47:00 +01:00
2013-04-04 07:15:53 +02:00
# sed force update on flash
sed -e "s!-install!-force -install!" -i $INST_DIR /CLIENT_DATA/Install/Packages/Flash/package.xml
2013-08-05 23:25:40 +02:00
2013-08-06 08:53:04 +02:00
# Workaround update bugs of the sereby Basic Runtimes
# Unlocker loads a kernel driver to find out the locking programms and forces them to spawn to memeory so that the lock gets removed and the file can be deleted
# so we need to load the right unlocker for the arch x86 or x64
echo "@echo off" >> $INST_DIR /CLIENT_DATA/Install/Packages/BasicRuntimes/CleanUp32.bat
echo "%~dp0\Unlocker\x86\Unlocker.exe %WINDIR%\System32\zlib1.dll /D /S" >> $INST_DIR /CLIENT_DATA/Install/Packages/BasicRuntimes/CleanUp32.bat
echo "" >> $INST_DIR /CLIENT_DATA/Install/Packages/BasicRuntimes/CleanUp32.bat
echo "@echo off" >> $INST_DIR /CLIENT_DATA/Install/Packages/BasicRuntimes/CleanUp64.bat
echo "%~dp0\Unlocker\x64\Unlocker.exe %WINDIR%\System32\zlib1.dll /D /S" >> $INST_DIR /CLIENT_DATA/Install/Packages/BasicRuntimes/CleanUp64.bat
echo "" >> $INST_DIR /CLIENT_DATA/Install/Packages/BasicRuntimes/CleanUp64.bat
sed 's/.*\t\t<cmd.*/\t\t<cmd path="CleanUp32.bat" name="Workaround update bugs x86" arch="x86" \/>\n\t\t<cmd path="CleanUp64.bat" name="Workaround update bugs x64" arch="x64" \/>\n&/' -i $INST_DIR /CLIENT_DATA/Install/Packages/BasicRuntimes/package.xml
2013-04-05 20:37:00 +02:00
2013-04-08 22:12:02 +02:00
# Move Adobe Air and sereby config in place
2013-05-23 19:14:54 +02:00
mv -v $INST_DIR /CLIENT_DATA/X86/air_${ AIRVERSION } _win.exe $INST_DIR /CLIENT_DATA/Install/Packages/Air/air3-8_win.exe
2013-07-04 06:58:24 +02:00
mv -v $INST_DIR /CLIENT_DATA/AdobeAIR_package.xml $INST_DIR /CLIENT_DATA/Install/Packages/Air/package.xml
2013-07-03 20:48:46 +02:00
mv -v $INST_DIR /CLIENT_DATA/AdobeAIR_7zip_config.txt $INST_DIR /CLIENT_DATA/Install/Packages/Air/7zip_config.txt
2013-04-08 22:12:02 +02:00
sed 's/.*<\/settings>.*/\t<set component="AdobeAir" checked="0" \/>\n&/' -i $INST_DIR /CLIENT_DATA/Config/WinPKG.xml
2013-05-23 19:14:54 +02:00
sed " s!.\..\..\....! ${ AIRVERSION } ! " -i $INST_DIR /CLIENT_DATA/Install/Packages/Air/package.xml
2013-07-28 10:59:11 +02:00
# Adobe AIR Installer not working very good from network share so create a sfx file that places the installer into a temp and let it run locally
2013-07-03 20:48:46 +02:00
7z a $INST_DIR /CLIENT_DATA/Install/Packages/Air/AdobeAIR.7z $INST_DIR /CLIENT_DATA/Install/Packages/Air/air3-8_win.exe
cat $INST_DIR /CLIENT_DATA/X86/7ZipSFX/7zsd_All.sfx $INST_DIR /CLIENT_DATA/Install/Packages/Air/7zip_config.txt $INST_DIR /CLIENT_DATA/Install/Packages/Air/AdobeAIR.7z > $INST_DIR /CLIENT_DATA/Install/Packages/Air/AdobeAIR.exe
rm $INST_DIR /CLIENT_DATA/Install/Packages/Air/air3-8_win.exe $INST_DIR /CLIENT_DATA/Install/Packages/Air/7zip_config.txt $INST_DIR /CLIENT_DATA/Install/Packages/Air/AdobeAIR.7z
2013-04-08 22:12:02 +02:00
2013-05-26 02:15:40 +02:00
# Update Java
2013-06-25 18:10:58 +02:00
if [ " $JREUPDATE " = "1" ] ; then
rm -rf $INST_DIR /CLIENT_DATA/Install/Packages/JRE/*/jre.exe
mv $INST_DIR /CLIENT_DATA/X86/jre7u${ JREUVERSION } -x86.exe $INST_DIR /CLIENT_DATA/Install/Packages/JRE/x86/jre.exe
mv $INST_DIR /CLIENT_DATA/X86/jre7u${ JREUVERSION } -x64.exe $INST_DIR /CLIENT_DATA/Install/Packages/JRE/x64/jre.exe
sed " s!Update ..!Update ${ JREUVERSION } ! " -i $INST_DIR /CLIENT_DATA/Install/Packages/JRE/package.xml
sed " s!.\..\....\...! ${ JREVERSION } ! " -i $INST_DIR /CLIENT_DATA/Install/Packages/JRE/package.xml
fi
2013-05-26 02:15:40 +02:00
sed "s!/s!/s REBOOT=Suppress!" -i $INST_DIR /CLIENT_DATA/Install/Packages/JRE/package.xml
2013-07-03 16:55:25 +02:00
echo "@echo off" >> $INST_DIR /CLIENT_DATA/Install/Packages/JRE/disable.bat
echo "if exist \"%PROGRAMFILES%\Java\jre7\bin\jqs.exe\" \"%PROGRAMFILES%\Java\jre7\bin\jqs.exe\" -unregister" >> $INST_DIR /CLIENT_DATA/Install/Packages/JRE/disable.bat
echo "if exist \"%PROGRAMFILES(x86)%\Java\jre7\bin\jqs.exe\" \"%PROGRAMFILES(x86)%\Java\jre7\bin\jqs.exe\" -unregister" >> $INST_DIR /CLIENT_DATA/Install/Packages/JRE/disable.bat
# echo "REG DELETE HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v SunJavaUpdateSched /f" >> $INST_DIR/CLIENT_DATA/Install/Packages/JRE/disable.bat
2013-08-05 21:31:53 +02:00
echo "" >> $INST_DIR /CLIENT_DATA/Install/Packages/JRE/disable.bat
2013-07-03 16:55:25 +02:00
sed 's/.*\t<\/install>.*/\t\t<cmd path="disable.bat" name="Disable Java Update Check " \/>\n&/' -i $INST_DIR /CLIENT_DATA/Install/Packages/JRE/package.xml
2013-05-26 02:15:40 +02:00
2013-05-10 21:38:39 +02:00
# Update Flash
2013-06-25 18:10:58 +02:00
if [ " $FLASHUPDATE " = "1" ] ; then
rm -f $INST_DIR /CLIENT_DATA/Install/Packages/Flash/*.exe
cp $INST_DIR /CLIENT_DATA/X86/install_flash_player-${ FLASHVERSION } .exe $INST_DIR /CLIENT_DATA/Install/Packages/Flash/install_flash_player.exe
cp $INST_DIR /CLIENT_DATA/X86/install_flash_player_ax-${ FLASHVERSION } .exe $INST_DIR /CLIENT_DATA/Install/Packages/Flash/install_flash_player_ax.exe
sed " s!..\..\....\....! ${ FLASHVERSION } ! " -i $INST_DIR /CLIENT_DATA/Install/Packages/Flash/package.xml
sed " s!.._._..._...! ${ FLASHVERSION //./_ } ! " -i $INST_DIR /CLIENT_DATA/Install/Packages/Flash/package.xml
fi
2013-07-04 06:58:24 +02:00
mv -v $INST_DIR /CLIENT_DATA/AdobeFlash_mms.cfg $INST_DIR /CLIENT_DATA/Install/Packages/Flash/mms.cfg
2013-07-28 20:33:10 +02:00
sed 's/.*\t<\/install>.*/\t\t<cmd path="disable32.bat" name="Disable Flash Update Check x86" >\n<check type="file" condition="notexist" path="%Windir%\\system32\\Macromed\\Flash\\NPSWF32_%VERSION_FILE%.dll" \/>\n<\/cmd>\n&/' -i $INST_DIR /CLIENT_DATA/Install/Packages/Flash/package.xml
sed 's/.*\t<\/install>.*/\t\t<cmd path="disable64.bat" name="Disable Flash Update Check x64" arch="x64" \/>\n<check type="file" condition="notexist" path="%Windir%\\SysWOW64\\Macromed\\Flash\\NPSWF32_%VERSION_FILE%.dll" arch="x64" \/>\n<\/cmd>\n&/' -i $INST_DIR /CLIENT_DATA/Install/Packages/Flash/package.xml
2013-07-03 16:55:25 +02:00
echo "@echo off" >> $INST_DIR /CLIENT_DATA/Install/Packages/Flash/disable32.bat
2013-07-03 19:56:50 +02:00
echo "copy /y /v \"%~dp0mms.cfg\" \"%WINDIR%\system32\Macromed\Flash\mms.cfg\"" >> $INST_DIR /CLIENT_DATA/Install/Packages/Flash/disable32.bat
2013-08-05 21:31:53 +02:00
echo "" >> $INST_DIR /CLIENT_DATA/Install/Packages/Flash/disable32.bat
2013-07-03 16:55:25 +02:00
echo "@echo off" >> $INST_DIR /CLIENT_DATA/Install/Packages/Flash/disable64.bat
2013-07-03 19:56:50 +02:00
echo "copy /y /v \"%~dp0mms.cfg\" \"%WINDIR%\SysWOW64\Macromed\Flash\mms.cfg\"" >> $INST_DIR /CLIENT_DATA/Install/Packages/Flash/disable64.bat
2013-08-05 21:31:53 +02:00
echo "" >> $INST_DIR /CLIENT_DATA/Install/Packages/Flash/disable64.bat
2013-05-10 21:38:39 +02:00
2013-07-25 12:08:31 +02:00
# Update Shockwave
if [ " $SHOCKUPDATE " = "1" ] ; then
rm -f $INST_DIR /CLIENT_DATA/Install/Packages/Shockwave/*.msi
cp $INST_DIR /CLIENT_DATA/X86/sw_lic_full_installer-${ SHOCKVERSION } .msi $INST_DIR /CLIENT_DATA/Install/Packages/Shockwave/sw_lic_full_installer.msi
sed " s!..\..\..r...! ${ SHOCKVERSION } ! " -i $INST_DIR /CLIENT_DATA/Install/Packages/Shockwave/package.xml
sed " s!v12!v ${ SHOCKVERSION //r/. } ! " -i $INST_DIR /CLIENT_DATA/Install/Packages/Shockwave/package.xml
fi
2013-07-28 20:33:10 +02:00
# Update Silverlight
if [ " $SILVERUPDATE " = "1" ] ; then
rm -f $INST_DIR /CLIENT_DATA/Install/Packages/Silverlight/*.exe
cp $INST_DIR /CLIENT_DATA/X86/Silverlight-${ SILVERVERSION } .exe $INST_DIR /CLIENT_DATA/Install/Packages/Silverlight/Silverlight.exe
cp $INST_DIR /CLIENT_DATA/X86/Silverlight_x64-${ SILVERVERSION } .exe $INST_DIR /CLIENT_DATA/Install/Packages/Silverlight/Silverlight_x64.exe
sed " s!.\..\......\..! ${ SILVERVERSION } ! " -i $INST_DIR /CLIENT_DATA/Install/Packages/Silverlight/package.xml
sed " s!v5!v ${ SILVERVERSION } ! " -i $INST_DIR /CLIENT_DATA/Install/Packages/Silverlight/package.xml
fi
2013-03-15 21:47:00 +01:00
# move the uninstallers in place (directory layout like the sereby package)
mv -v $INST_DIR /CLIENT_DATA/X86/JavaRa $INST_DIR /CLIENT_DATA/UnInstall/Packages/JRE
mv -v $INST_DIR /CLIENT_DATA/JavaUninstallScript.vbs $INST_DIR /CLIENT_DATA/UnInstall/Packages/JRE
2013-04-06 08:12:09 +02:00
mv -v $INST_DIR /CLIENT_DATA/CleanSilverlight.cmd $INST_DIR /CLIENT_DATA/UnInstall/Packages/Silverlight
2013-03-15 21:47:00 +01:00
mv -v $INST_DIR /CLIENT_DATA/X86/dotnet $INST_DIR /CLIENT_DATA/UnInstall/NET
2013-05-23 19:14:54 +02:00
mv -v $INST_DIR /CLIENT_DATA/X86/uninstall_flash_player-${ FLASHVERSION } .exe $INST_DIR /CLIENT_DATA/UnInstall/Packages/Flash/uninstall_flash_player.exe
2013-07-25 16:37:59 +02:00
mv -v $INST_DIR /CLIENT_DATA/X86/uninstall_shock_player-${ SHOCKVERSION } .exe $INST_DIR /CLIENT_DATA/UnInstall/Packages/Shockwave/uninstall_shock_player.exe
2013-03-15 21:47:00 +01:00
2013-04-05 20:37:00 +02:00
# move the opsi wrapper to the right dir (close the error window if nothing needs to be done)
mv -v $INST_DIR /CLIENT_DATA/opsi-WinPKG.exe $INST_DIR /CLIENT_DATA/Install/
2013-08-05 23:25:40 +02:00
# change linefeed of bat & xml files to work correctly
2013-08-05 21:31:53 +02:00
find $INST_DIR /CLIENT_DATA -name *.bat -print0 | xargs -0 unix2dos
2013-08-05 23:25:40 +02:00
find $INST_DIR /CLIENT_DATA -name package.xml -print0 | xargs -0 unix2dos
2013-08-05 21:31:53 +02:00
2013-06-25 18:10:58 +02:00
# set exec bit on executeables
2013-06-27 17:09:25 +02:00
find $INST_DIR /CLIENT_DATA/Install/ -type f -print0 | xargs -0 chmod +x
find $INST_DIR /CLIENT_DATA/UnInstall/ -type f -print0 | xargs -0 chmod +x
2013-06-26 18:51:18 +02:00
find $INST_DIR /CLIENT_DATA -type d -print0 | xargs -0 chmod 755 -v
2013-06-25 18:10:58 +02:00
2013-03-15 21:47:00 +01:00
# delete the temp directory
rm -rf $INST_DIR /CLIENT_DATA/X86
}