====== Freestudio 5.7.1 ======
2012-12-12\\
Script by uib gmbh \\
Comments and improvements welcome \\
Tested with opsi 4.0.2\\
type: localboot\\
id: freestudio\\
name: FreeStudio Version\\
description: All-in-one Paket der kostenlosen Multimedia-Anwendungen von DVDVideoSoft\\
version: 5.7.1.822\\
Requires dotnetfx, so make a dependency.\\
Full package: http://download.uib.de/opsi4.0/products/contribute/full-package/
==== setup32.ins ====
; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/en/credits/
[Actions]
requiredWinstVersion >= "4.11.2.6"
DefVar $MsiId$
DefVar $UninstallProgram$
DefVar $LogDir$
DefVar $ProductId$
DefVar $MinimumSpace$
DefVar $InstallDir$
DefVar $ExitCode$
DefVar $commonFiles$
DefVar $RebootFlag$
DefVar $WinstRegKey$
DefVar $searchscope$
DefVar $removeConduit$
DefVar $user$
DefVar $SearchProc$
DefVar $ProcStarted$
DefVar $ProcEnded$
DefVar $TimeOut$
DefStringlist $TimeOutList$
Set $LogDir$ = "%SystemDrive%\opsi.org\tmp"
comment "handle Rebootflag"
Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
Set $RebootFlag$ = GetRegistryStringValue("["+$WinstRegKey$+"] "+"RebootFlag")
Set $ProductId$ = "freestudio"
Set $MinimumSpace$ = "5 MB"
; the path were we find the product after the installation
Set $InstallDir$ = "%ProgramFiles32Dir%\DVDVideoSoft\Free Studio\"
; ----------------------------------------------------------------
if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))
LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$
isFatalError
; Stop process and set installation status to failed
else
comment "Show product picture"
ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$
comment "backup the actual ie default search scope"
set $searchscope$ = getregistrystringvalue32("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\SearchScopes]")
comment "check if conduit is installed"
if FileExists("%ProgramFiles32Dir%\Conduit")
set $removeConduit$ = "false"
else
comment "conduit do not exist before Installation - so we will remove it later"
set $removeConduit$ = "true"
endif
if FileExists("%ScriptPath%\delsub32.ins")
comment "Start uninstall sub section"
Sub "%ScriptPath%\delsub32.ins"
endif
Message "Installing " + $ProductId$ + " ..."
if getmsversioninfo < "6.0"
if "" = getregistrystringvalue32("[hklm\software\microsoft\windows\currentversion\uninstall\KB932716-v2] DisplayName")
comment "needed (KB932716-v2) is not existing"
if ($RebootFlag$ = "KB932716-v2-installed")
set $RebootFlag$ = ""
Registry_SaveRebootFlag
LogError "Error: we installed KB932716-v2 before but it is not existing after reboot"
isFatalError
else
comment "install Image Mastering API v2.0 (IMAPIv2.0) für Windows XP (KB932716)"
winbatch_install_imapi
Sub_check_exitcode
set $RebootFlag$ = "KB932716-v2-installed"
Registry_SaveRebootFlag
ExitWindows /ImmediateReboot
endif
else
comment "seems to be installed: Image Mastering API v2.0 (IMAPIv2.0) für Windows XP (KB932716)"
set $RebootFlag$ = ""
Registry_SaveRebootFlag
endif
endif
comment "Start setup program"
;if getmsversioninfo >= "6.0"
killtask "iexplore.exe"
killtask "firefox.exe"
;endif
Files_copy_setup_2_temp
ChangeDirectory $LogDir$
if getmsversioninfo >= "6.0"
Winbatch_install /WaitForProcessEnding "DVSUpdate.exe" /TimeOutSeconds 300
else
Winbatch_install
if getLastExitcode = "1"
sleepseconds 2
Winbatch_install
if getLastExitcode = "1"
sleepseconds 2
Winbatch_install
if getLastExitcode = "1"
sleepseconds 2
Winbatch_install
if getLastExitcode = "1"
ExitWindows /ImmediateReboot
endif
endif
endif
endif
set $SearchProc$ = "DVSUpdate.exe"
sub_wait_until_proc_finished
endif
if getmsversioninfo >= "6.0"
killtask "iexplore.exe"
killtask "firefox.exe"
endif
Sub_check_exitcode
Files_del_setup_temp
comment "Deinstall Toolbar"
if not (FileExists("%ProgramFiles32Dir%\DVDVideoSoftTB_DE\uninstall.exe"))
comment "wait for Toolbar install dir"
sleepseconds 10
endif
if FileExists("%ProgramFiles32Dir%\DVDVideoSoftTB_DE\uninstall.exe")
Execwith_autoit_install "%ScriptPath%\autoit3.exe" winst /LetThemGo
Winbatch_deinstall_toolbar
Sub_check_exitcode
sleepseconds 1
killtask "autoit3.exe"
Sub_check_exitcode
includelog $LogDir$+"\au3.log" "50"
else
comment "Toolbar install dir not found"
endif
if getmsversioninfo >= "6.0"
killtask "iexplore.exe"
killtask "firefox.exe"
endif
comment "delete tb installer files"
set $commonFiles$ = GetRegistryStringValue32("[hklm\software\microsoft\windows\currentversion] CommonFilesDir" )
Files_del_toolbar /32Bit
comment "Remove search entry from Registry"
Registry_remove_iesearch /32Bit
if $removeConduit$ = "true"
Files_del_conduit
Registry_del_conduit
endif
Exitwindows /reboot
endif
[winbatch_install_imapi]
"%ScriptPath%\WindowsXP-KB932716-v2-x86-DEU.exe" /quiet /passive /norestart
[Files_copy_setup_2_temp]
copy "%ScriptPath%\FreeStudio.exe" "$LogDir$"
[Files_del_setup_temp]
del "$LogDir$\FreeStudio.exe"
[Winbatch_install]
; === Inno Setup ========================================================================================
"$LogDir$\FreeStudio.exe" /sp- /silent /norestart /nocancel /SUPPRESSMSGBOXES
[Winbatch_deinstall_toolbar]
; no known silent switch
"%ProgramFiles32Dir%\DVDVideoSoftTB_DE\uninstall.exe"
[Files_del_toolbar]
del "$commonFiles$\DVDVideoSoft\bin\SubscriptionOffer.exe"
del -f -s "$commonFiles$\DVDVideoSoft\TB\"
del -f -s "%ProgramFiles32Dir%\DVDVideoSoftTB_DE\"
[Files_del_conduit]
del -f -s "$commonFiles$\conduit\"
[Registry_del_conduit]
deletekey [HKEY_LOCAL_MACHINE\SOFTWARE\Conduit]
[Registry_remove_iesearch]
deletekey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\SearchScopes\{afdbddaa-5d3f-42ee-b79c-185a7020515b}]
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\SearchScopes]
set "" = "$searchscope$"
[Execwith_autoit_install]
#RequireAdmin
;Blockinput(1)
;run("%ProgramFiles32Dir%\DVDVideoSoftTB_DE\uninstall.exe")
; exact title match
Opt("WinTitleMatchMode", 3)
$mylog = FileOpen("$LogDir$\au3.log", 2)
FileWriteLine($mylog,"auto-it started - waiting for the window")
; do not use winwait(), it will fail on other desktops than current
$seconds = 0
$exists = 0
While ($seconds <= 300) and ($exists = 0)
$exists = WinExists("Toolbar Uninstall","Are you sure")
FileWriteLine($mylog,"winexists result (1=exists): " & $exists )
$seconds = $seconds + 1
sleep(1000)
WEnd
FileWriteLine($mylog,"window detected - sending answer")
; next
$result = ControlClick("Toolbar Uninstall","Are you sure", 1)
FileWriteLine($mylog,"answer sended: result (1=success) : " & $result)
Blockinput(0)
FileClose($mylog)
;Sleep(500)
;and good bye
Exit @error
[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "RebootFlag" = "$RebootFlag$"
[sub_wait_until_proc_finished]
set $ProcStarted$="0"
set $ProcEnded$="0"
set $TimeOut$="0"
set $TimeOutList$= createStringList("0","1","2","3","4","5","6","7","8","end")
for %t% in $TimeOutList$ do sub_proclook_and_wait
[sub_proclook_and_wait]
if ("%t%"="end")
set $TimeOut$="1"
comment "Timeout reached"
endif
if ($TimeOut$="0") and ($ProcEnded$="0")
if not ("" = takefirststringcontaining(getProcessList,$SearchProc$))
comment $SearchProc$+ " is running"
if $ProcStarted$="0"
set $ProcStarted$="1"
set $ProcEnded$="0"
comment $SearchProc$+ " has started"
sleepseconds 20
else
comment "waiting for ending of "+$SearchProc$
sleepseconds 20
endif
else
comment $SearchProc$+ " is not running"
if $ProcStarted$="1"
set $ProcEnded$="1"
comment $SearchProc$+ " has ended"
else
comment "waiting for start of "+$SearchProc$
sleepseconds 20
endif
endif
endif
[Sub_check_exitcode]
comment "Test for installation success via exit code"
set $ExitCode$ = getLastExitCode
; informations to exit codes see
; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx
; http://msdn.microsoft.com/en-us/library/aa368542.aspx
if ($ExitCode$ = "0")
comment "Looks good: setup program gives exitcode zero"
else
comment "Setup program gives a exitcode unequal zero: " + $ExitCode$
if ($ExitCode$ = "1605")
comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed."
comment "Uninstall of a not installed product failed - no problem"
else
if ($ExitCode$ = "1641")
comment "looks good: setup program gives exitcode 1641"
comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success."
Exitwindows /Reboot
else
if ($ExitCode$ = "3010")
comment "looks good: setup program gives exitcode 3010"
comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success."
Exitwindows /Reboot
else
logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$
isFatalError
endif
endif
endif
endif
==== uninstall32.ins ====
; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib gmbh
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/en/credits/
[Actions]
requiredWinstVersion >= "4.11.2.6"
DefVar $MsiId$
DefVar $UninstallProgram$
DefVar $LogDir$
DefVar $ExitCode$
DefVar $ProductId$
DefVar $InstallDir$
DefVar $LicenseRequired$
DefVar $LicensePool$
Set $LogDir$ = "%SystemDrive%\opsi.org\tmp"
; ----------------------------------------------------------------
; - Please edit the following values -
; ----------------------------------------------------------------
Set $ProductId$ = "freestudio"
Set $InstallDir$ = "%ProgramFiles32Dir%\\DVDVideoSoft\Free Studio\"
; ----------------------------------------------------------------
comment "Show product picture"
ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$
Message "Uninstalling " + $ProductId$ + " ..."
if FileExists("%ScriptPath%\delsub32.ins")
comment "Start uninstall sub section"
Sub "%ScriptPath%\delsub32.ins"
endif
==== delsub32.ins ====
; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib gmbh
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/en/credits/
Set $UninstallProgram$ = $InstallDir$ + "unins000.exe"
Message "Uninstalling " + $ProductId$ + " ..."
if FileExists($UninstallProgram$)
comment "Uninstall program found, starting uninstall"
;Winbatch_uninstall /WaitForProcessEnding "DVSVideoToolbarHelper.exe" /TimeOutSeconds 40
Winbatch_uninstall
sub_check_exitcode
comment "Delete files"
Files_uninstall /32Bit
if getmsversioninfo < "6.0"
ExitWindows /ImmediateReboot
endif
endif
sleepseconds 2
if getmsversioninfo >= "6.0"
killtask "iexplore.exe"
killtask "firefox.exe"
endif
[Winbatch_uninstall]
; === Inno Setup ========================================================================================
"$UninstallProgram$" /silent /norestart /SUPPRESSMSGBOXES /nocancel
[Files_uninstall]
del -sf "$InstallDir$\"
[Sub_check_exitcode]
comment "Test for installation success via exit code"
set $ExitCode$ = getLastExitCode
; informations to exit codes see
; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx
; http://msdn.microsoft.com/en-us/library/aa368542.aspx
if ($ExitCode$ = "0")
comment "Looks good: setup program gives exitcode zero"
else
comment "Setup program gives a exitcode unequal zero: " + $ExitCode$
if ($ExitCode$ = "1605")
comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed."
comment "Uninstall of a not installed product failed - no problem"
else
if ($ExitCode$ = "1641")
comment "looks good: setup program gives exitcode 1641"
comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success."
Exitwindows /Reboot
else
if ($ExitCode$ = "3010")
comment "looks good: setup program gives exitcode 3010"
comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success."
Exitwindows /Reboot
else
logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$
isFatalError
endif
endif
endif
endif