;Copyright (C) 2004-2007 John T. Haller ;Website: http://PortableApps.com/MPlayerPortable ;This software is OSI Certified Open Source Software. ;OSI Certified is a certification mark of the Open Source Initiative. ;This program is free software; you can redistribute it and/or ;modify it under the terms of the GNU General Public License ;as published by the Free Software Foundation; either version 2 ;of the License, or (at your option) any later version. ;This program is distributed in the hope that it will be useful, ;but WITHOUT ANY WARRANTY; without even the implied warranty of ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;GNU General Public License for more details. ;You should have received a copy of the GNU General Public License ;along with this program; if not, write to the Free Software ;Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. !define NAME "MPlayerPortable" !define PORTABLEAPPNAME "MPlayer Portable" !define APPNAME "MPlayer" !define VER "1.5.6.0" !define WEBSITE "PortableApps.com/MPlayerPortable" !define DEFAULTEXE "MPUI.exe" !define DEFAULTAPPDIR "mplayer" !define DEFAULTSETTINGSDIR "settings" ;=== Program Details Name "${PORTABLEAPPNAME}" OutFile "..\..\${NAME}.exe" Caption "${PORTABLEAPPNAME} | PortableApps.com" VIProductVersion "${VER}" VIAddVersionKey ProductName "${PORTABLEAPPNAME}" VIAddVersionKey Comments "Allows ${APPNAME} to be run from a removable drive. For additional details, visit ${WEBSITE}" VIAddVersionKey CompanyName "PortableApps.com" VIAddVersionKey LegalCopyright "John T. Haller" VIAddVersionKey FileDescription "${PORTABLEAPPNAME}" VIAddVersionKey FileVersion "${VER}" VIAddVersionKey ProductVersion "${VER}" VIAddVersionKey InternalName "${PORTABLEAPPNAME}" VIAddVersionKey LegalTrademarks "PortableApps.com is a Trademark of Rare Ideas, LLC." VIAddVersionKey OriginalFilename "${NAME}.exe" ;VIAddVersionKey PrivateBuild "" ;VIAddVersionKey SpecialBuild "" ;=== Runtime Switches CRCCheck On WindowIcon Off SilentInstall Silent AutoCloseWindow True RequestExecutionLevel user ; Best Compression SetCompress Auto SetCompressor /SOLID lzma SetCompressorDictSize 32 SetDatablockOptimize On ;=== Include !include "GetParameters.nsh" !include "MUI.nsh" ;=== Program Icon Icon "..\..\App\AppInfo\appicon.ico" ;=== Icon & Stye === !define MUI_ICON "..\..\App\AppInfo\appicon.ico" ;=== Languages !insertmacro MUI_LANGUAGE "English" LangString LauncherFileNotFound ${LANG_ENGLISH} "${PORTABLEAPPNAME} cannot be started. You may wish to re-install to fix this issue. (ERROR: $MISSINGFILEORPATH could not be found)" LangString LauncherAlreadyRunning ${LANG_ENGLISH} "Another instance of ${APPNAME} is already running. Please close other instances of ${APPNAME} before launching ${PORTABLEAPPNAME}." LangString LauncherAskCopyLocal ${LANG_ENGLISH} "${PORTABLEAPPNAME} appears to be running from a location that is read-only. Would you like to temporarily copy it to the local hard drive and run it from there?$\n$\nPrivacy Note: If you say Yes, your personal data within ${PORTABLEAPPNAME} will be temporarily copied to a local drive. Although this copy of your data will be deleted when you close ${PORTABLEAPPNAME}, it may be possible for someone else to access your data later." LangString LauncherNoReadOnly ${LANG_ENGLISH} "${PORTABLEAPPNAME} can not run directly from a read-only location and will now close." Var PROGRAMDIRECTORY Var SETTINGSDIRECTORY Var ADDITIONALPARAMETERS Var EXECSTRING Var PROGRAMEXECUTABLE Var INIPATH Var DISABLESPLASHSCREEN Var SKIPBACKUPS Var SECONDARYLAUNCH Var MISSINGFILEORPATH Section "Main" ;=== Check if already running System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${NAME}") i .r1 ?e' Pop $0 StrCmp $0 0 CheckINI StrCpy $SECONDARYLAUNCH "true" CheckINI: ;=== Find the INI file, if there is one IfFileExists "$EXEDIR\${NAME}.ini" "" NoINI StrCpy $INIPATH "$EXEDIR" ;=== Read the parameters from the INI file ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "${APPNAME}Directory" StrCpy $PROGRAMDIRECTORY "$EXEDIR\$0" ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "SettingsDirectory" StrCpy $SETTINGSDIRECTORY "$EXEDIR\$0" ;=== Check that the above required parameters are present IfErrors NoINI ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "AdditionalParameters" StrCpy $ADDITIONALPARAMETERS $0 ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "${APPNAME}Executable" StrCpy $PROGRAMEXECUTABLE $0 ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "DisableSplashScreen" StrCpy $DISABLESPLASHSCREEN $0 ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "SkipBackups" StrCpy $SKIPBACKUPS $0 ;=== Any missing unrequired INI entries will be an empty string, ignore associated errors ClearErrors IfFileExists "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" FoundProgramEXE NoProgramEXE NoINI: ;=== No INI file, so we'll use the defaults StrCpy $ADDITIONALPARAMETERS "" StrCpy $PROGRAMEXECUTABLE "${DEFAULTEXE}" StrCpy $DISABLESPLASHSCREEN "false" StrCpy $SKIPBACKUPS "false" IfFileExists "$EXEDIR\App\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" NoProgramEXE StrCpy $PROGRAMDIRECTORY "$EXEDIR\App\${DEFAULTAPPDIR}" StrCpy $SETTINGSDIRECTORY "$EXEDIR\Data\${DEFAULTSETTINGSDIR}" GoTo FoundProgramEXE NoProgramEXE: ;=== Program executable not where expected StrCpy $MISSINGFILEORPATH $PROGRAMEXECUTABLE MessageBox MB_OK|MB_ICONEXCLAMATION `$(LauncherFileNotFound)` Abort FoundProgramEXE: StrCmp $SECONDARYLAUNCH "true" GetPassedParameters StrCmp $DISABLESPLASHSCREEN "true" SkipSplashScreen ;=== Show the splash screen before processing the files InitPluginsDir File /oname=$PLUGINSDIR\splash.jpg "${NAME}.jpg" newadvsplash::show /NOUNLOAD 1200 0 0 -1 /L "$PLUGINSDIR\splash.jpg" SkipSplashScreen: ;=== Skip backups? StrCmp $SKIPBACKUPS "true" GetPassedParameters ;=== Check for data files IfFileExists "$PROGRAMDIRECTORY\MPUI.ini" GetPassedParameters IfFileExists "$SETTINGSDIRECTORY\MPUI.ini" MoveSettings MoveSettings: CreateDirectory $SETTINGSDIRECTORY Rename "$SETTINGSDIRECTORY\MPUI.ini" "$PROGRAMDIRECTORY\MPUI.ini" Goto GetPassedParameters GetPassedParameters: ;=== Get any passed parameters Call GetParameters Pop $0 StrCmp "'$0'" "''" "" LaunchProgramParameters ;=== No parameters StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE"` Goto AdditionalParameters LaunchProgramParameters: StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" $0` AdditionalParameters: StrCmp $ADDITIONALPARAMETERS "" LaunchNow ;=== Additional Parameters StrCpy $EXECSTRING `$EXECSTRING $ADDITIONALPARAMETERS` LaunchNow: StrCmp $SECONDARYLAUNCH "true" LaunchAndExit ExecWait $EXECSTRING CheckRunning: Sleep 1000 FindProcDLL::FindProc "$PROGRAMEXECUTABLE" StrCmp $R0 "1" CheckRunning ;=== Move settings back Rename "$PROGRAMDIRECTORY\MPUI.ini" "$SETTINGSDIRECTORY\MPUI.ini" Goto TheEnd LaunchAndExit: Exec $EXECSTRING TheEnd: newadvsplash::stop /WAIT SectionEnd