2012-12-12
Script by uib gmbh
Comments and improvements welcome
Tested with opsi 4.0.2
type: localboot
id: vlc
name: VideoLAN - VLC media player
description: VLC media player is a highly portable multimedia player supporting most audio and video formats (H.264, Ogg, DivX, MKV, TS, MPEG-2, mp3, MPEG-4, aac, …) from files, physical media (DVDs, VCD, Audio-CD), TV capture cards and many network streaming protocols.
It can also convert media files, transcode and act as a streaming server over unicast or multicast and IPv4 or IPv6. It doesn't need any external codec, program or codec pack to work.
version: 2.0.2
Full package: http://download.uib.de/opsi4.0/products/contribute/full-package/
; 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/credits/ [actions] requiredWinstVersion >= "4.11.2.6" setloglevel = 6 DefVar $ProductId$ DefVar $MinimumSpace$ DefVar $NewExe$ DefVar $InstallDir$ DefVar $ExitCode$ DefVar $UserProfileName$ DefStringList $UserProfileNamesList$ DefVar $AppDataDirName$ DefVar $proxy$ set $ProductId$ = "vlc" set $MinimumSpace$ = "200 MB" Set $InstallDir$ = "%ProgramFiles32Dir%\VideoLAN\VLC" set $NewExe$ = $InstallDir$ + "\" + $ProductId$ + ".exe" set $proxy$ = GetProductProperty("proxy","") Message "Installing VLC ..." if not(HasMinimumSpace ("%SYSTEMDRIVE%", $MinimumSpace$)) LogError "Not enough space on %SYSTEMDRIVE%: . " + $MinimumSpace$ + " on Drive %SYSTEMDRIVE%: needed for " + $ProductId$ + "." isFatalError else comment "show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" "VLC" if FileExists("%ScriptPath%\delsub.ins") comment "start uninstall sub section" sub "%ScriptPath%\delsub.ins" endif Message "Installing VLC ..." comment "Start setup program" Winbatch_install sub_check_exitcode comment "what is the name of the Application Data Dir ?" Set $AppDataDirName$ = TakeString(-1, SplitString("%CommonAppdataDir%", "\")) if getMsVersionInfo >= "6" set $AppDataDirName$ = "AppData\Roaming" endif comment "Patching user profiles" ;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList Set $UserProfileNamesList$ = getOutStreamFromSection('DosInAnIcon_list_profiledir') for %prof% in $UserProfileNamesList$ do Sub_update_user_profile comment "Delete desktop shortcut" LinkFolder_remove_desktop_link comment "test for installation success" if not(FileExists($NewExe$)) logError "Fatal: After Installation "+$NewExe$+" not found" isFatalError endif endif [LinkFolder_remove_desktop_link] set_basefolder common_desktopdirectory set_subfolder "" delete_element "VLC media player" [DosInAnIcon_list_profiledir] @echo off dir "%ProfileDir%" /b /ad [Winbatch_install] ;http://www.videolan.org/vlc/download-windows.html "%SCRIPTPATH%\vlc-2.0.2-win32.exe" /L=1031 /S [Sub_update_user_profile] Set $UserProfileName$ = "%prof%" if not ($UserProfileName$ = "") and not ($UserProfileName$ = "All Users") and not ($UserProfileName$ = "Public") and not ($UserProfileName$ = "LocalService") and not ($UserProfileName$ = "NetworkService") if FileExists("%ProfileDir%\" + $UserProfileName$ +"\"+ $AppDataDirName$ + "\vlc\") comment "VLC user profile exist for user " + $UserProfileName$ + ", patching" Patches_vlcrc "%ProfileDir%\" + $UserProfileName$ +"\"+ $AppDataDirName$ + "\vlc\vlcrc" else comment "Creating new VLC profile for user " + $UserProfileName$ Files_copy_vlc_profile_template endif if not ($proxy$ = "") Patches_vlcrc_proxy "%ProfileDir%\" + $UserProfileName$ +"\"+ $AppDataDirName$ + "\vlc\vlcrc" endif endif [Files_copy_vlc_profile_template] copy -s "%SCRIPTPATH%\profile-template\*.*" "%ProfileDir%\$UserProfileName$\$AppDataDirName$\vlc\" [Patches_vlcrc] set [qt4] qt-updates-notif=0 [Patches_vlcrc_proxy] set [access_http] http-proxy=$proxy$ [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
; delsub for vlc Message "Deinstalling VLC ..." DefVar $UninstallProgram$ Set $UninstallProgram$ = $InstallDir$ + "\uninstall.exe" comment "Start uninstall program if exists" if FileExists($UninstallProgram$) Winbatch_uninstall /WaitForProcessEnding "Au_.exe" /Timeoutseconds 15 ;Winbatch_uninstall sub_check_exitcode endif comment "Delete files" Files_uninstall [Winbatch_uninstall] "$UninstallProgram$" /S [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
; 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/credits/ [Actions] requiredWinstVersion >= "4.11.2.6" setLogLevel = 6 DefVar $ProductId$ DefVar $InstallDir$ DefVar $ExitCode$ ; This should be edited set $ProductId$ = "vlc" Set $InstallDir$ = "%ProgramFiles32Dir%\VideoLAN\VLC" comment "Show product picture" ShowBitmap "%scriptpath%\" + $ProductId$ + ".png" "VLC" if FileExists("%ScriptPath%\delsub.ins") comment "Start uninstall sub section" sub "%ScriptPath%\delsub.ins" endif
Can be used with opsi-Extension “User Profile Management”
; 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/credits/ [Actions] requiredWinstVersion >= "4.11.2.6" setloglevel = 6 DefVar $proxy$ set $proxy$ = GetProductProperty("proxy","") Message "Profile Patch for VLC ...." comment "Did we run this script before ? - and set version stamp in profile" if getValue("installationstate", getProductMap) = "installed" comment "Product is installed" if not (scriptWasExecutedBefore) comment "loginscript was not run yet " if FileExists("%CurrentAppdataDir%\vlc\") comment "VLC user profile exist for user " + $UserProfileName$ + ", patching" Patches_vlcrc "%CurrentAppdataDir%\vlc\vlcrc" else comment "Creating new VLC profile for user %Username%" Files_copy_vlc_profile_template endif if not ($proxy$ = "") Patches_vlcrc_proxy "%CurrentAppdataDir%\vlc\vlcrc" endif endif endif [Files_copy_vlc_profile_template] copy -s "%SCRIPTPATH%\profile-template\*.*" "%CurrentAppdataDir%\vlc\" [Patches_vlcrc] set [qt4] qt-updates-notif=0 [Patches_vlcrc_proxy] set [access_http] http-proxy=$proxy$