@echo off
if exist "turnon_echo" (
@echo on
)
:: Reset working dir especially when using 'Run as administrator'
@cd /d "%~dp0"
echo This batch file can help you to create a packages for SMPlayer and MPlayer.
echo.
echo This script will temporarily rename the smplayer-build and mplayer directories.
echo Make sure these files ^& directories are not opened when running the script.
echo.
echo 1 - NSIS 10 - NSIS [32-bit/64-bit]
echo 2 - NSIS [64-bit] 11 - Portable [32-bit/64-bit]
echo 3 - Portable 20 - Portable SFX [32-bit/64-bit]
echo 4 - Portable [64-bit]
echo 5 - Without MPlayer
echo 6 - Without MPlayer [64-bit]
echo.
:: Relative directory of all the source files to this script
set TOP_LEVEL_DIR=..
:: Reset in case ran again in same command prompt instance
set ALL_PKG_VER=
set VER_MAJOR=
set VER_MINOR=
set VER_BUILD=
set VER_REVISION=
set VER_REV_CMD=
set MAKENSIS_EXE_PATH=
:: NSIS path
if exist "nsis_path" (
for /f "tokens=*" %%y in ('type nsis_path') do if exist %%y set MAKENSIS_EXE_PATH="%%y"
)
if not defined MAKENSIS_EXE_PATH (
for %%x in ("%PROGRAMFILES(X86)%\NSIS\Unicode\makensis.exe" "%PROGRAMFILES%\NSIS\Unicode\makensis.exe") do if exist %%x set MAKENSIS_EXE_PATH=%%x
)
if not defined MAKENSIS_EXE_PATH (
echo Warning: Unable to locate NSIS in the default path, create the file ^'nsis_path^' with the full correct path
echo to makensis.exe or the existing ^'nsis_path^' may be incorrect.
echo.
)
:: Works only in Vista+
where /q where.exe 2>NUL && (
where /q 7za.exe 2>NUL || (
echo Warning: 7za.exe not found in path or current directory!
echo.
)
)
set SMPLAYER_DIR=%TOP_LEVEL_DIR%\smplayer-build
set SMPLAYER_DIR64=%TOP_LEVEL_DIR%\smplayer-build64
set MPLAYER_DIR=%TOP_LEVEL_DIR%\mplayer
set OUTPUT_DIR=%TOP_LEVEL_DIR%\output
set PORTABLE_EXE_DIR=%TOP_LEVEL_DIR%\portable
:cmdline_parsing
if "%1" == "" goto reask
for %%w in (1 2 3 4 5 6 10 11 20) do (
if "%1" == "%%w" (
set USER_CHOICE=%%w
goto pkgver
)
)
echo Unknown option: "%1"
echo.
goto superend
:reask
set USER_CHOICE=
set /P USER_CHOICE="Choose an action: "
echo.
for %%z in (1 2 3 4 5 6 10 11 20) do if "%USER_CHOICE%" == "%%z" goto pkgver
if "%USER_CHOICE%" == "" goto superend
goto reask
:pkgver
if exist "pkg_version" (
for /f "tokens=*" %%i in ('type pkg_version') do set ALL_PKG_VER=%%i
goto parse_version
)
echo Format: VER_MAJOR.VER_MINOR.VER_BUILD[.VER_REVISION]
echo VER_REVISION is optional (set to 0 if blank)
:pkgver_manual
echo.
set ALL_PKG_VER=
set VER_MAJOR=
set VER_MINOR=
set VER_BUILD=
set VER_REVISION=
set VER_REV_CMD=
set /p ALL_PKG_VER="Version: "
echo.
:parse_version
for /f "tokens=1 delims=." %%j in ("%ALL_PKG_VER%") do set VER_MAJOR=%%j
for /f "tokens=2 delims=." %%k in ("%ALL_PKG_VER%") do set VER_MINOR=%%k
for /f "tokens=3 delims=." %%l in ("%ALL_PKG_VER%") do set VER_BUILD=%%l
for /f "tokens=4 delims=." %%m in ("%ALL_PKG_VER%") do set VER_REVISION=%%m
echo %VER_MAJOR%|findstr /r /c:"^[0-9][0-9]*$" >nul
if errorlevel 1 (
echo Invalid version string. VER_MAJOR is not defined or is not a number [#.x.x]
goto pkgver_manual & ver>nul
)
echo %VER_MINOR%|findstr /r /c:"^[0-9][0-9]*$" >nul
if errorlevel 1 (
echo Invalid version string. VER_MINOR is not defined or is not a number [x.#.x]
goto pkgver_manual & ver>nul
)
echo %VER_BUILD%|findstr /r /c:"^[0-9][0-9]*$" >nul
if errorlevel 1 (
echo Invalid version string. VER_BUILD is not defined or is not a number [x.x.#]
goto pkgver_manual & ver>nul
)
if defined VER_REVISION (
echo %VER_REVISION%|findstr /r /c:"^[0-9][0-9]*$" >nul
if errorlevel 1 (
echo Invalid version string. VER_REVISION is not a number [x.x.x.#]
goto pkgver_manual & ver>nul
) else (
set VER_REV_CMD=/DVER_REVISION=%VER_REVISION% & ver>nul
)
) else (
set VER_REV_CMD=
)
if not defined VER_REVISION (
set PORTABLE_PKG_VER=%ALL_PKG_VER%.0
) else (
set PORTABLE_PKG_VER=%ALL_PKG_VER%
)
if "%USER_CHOICE%" == "1" goto nsispkg
if "%USER_CHOICE%" == "2" goto nsispkg64
if "%USER_CHOICE%" == "3" goto portable
if "%USER_CHOICE%" == "4" goto portable64
if "%USER_CHOICE%" == "5" goto nomplayer
if "%USER_CHOICE%" == "6" goto nomplayer64
if "%USER_CHOICE%" == "10" goto nsispkg
if "%USER_CHOICE%" == "11" goto portable
if "%USER_CHOICE%" == "20" goto portablesfx
:: Should not happen
goto end
:nsispkg
echo --- SMPlayer NSIS Package [32-bit] ---
echo.
if exist %TOP_LEVEL_DIR%\smplayer-build (
%MAKENSIS_EXE_PATH% /V3 /DVER_MAJOR=%VER_MAJOR% /DVER_MINOR=%VER_MINOR% /DVER_BUILD=%VER_BUILD% %VER_REV_CMD% %TOP_LEVEL_DIR%\smplayer.nsi
)
if not "%USER_CHOICE%" == "10" goto end
:nsispkg64
echo --- SMPlayer NSIS Package [64-bit] ---
echo.
if exist %TOP_LEVEL_DIR%\smplayer-build64 (
%MAKENSIS_EXE_PATH% /V3 /DVER_MAJOR=%VER_MAJOR% /DVER_MINOR=%VER_MINOR% /DVER_BUILD=%VER_BUILD% %VER_REV_CMD% /DWIN64 %TOP_LEVEL_DIR%\smplayer.nsi
)
goto end
:portable
echo --- SMPlayer Portable Package [32-bit] ---
echo.
if not exist %SMPLAYER_DIR% (
echo SMPlayer sources missing.
goto end
)
REM Check for portable exes
if not exist "%PORTABLE_EXE_DIR%\smplayer-portable.exe" (
echo SMPlayer portable EXE not found!
goto end
)
REM if not exist "%PORTABLE_EXE_DIR%\smtube-portable.exe" (
REM echo Warning: SMTube portable EXE not found!
REM )
if exist "%SMPLAYER_DIR%\QtCore4.dll" (
set PORTABLE_DIR_NAME=smplayer-portable-%PORTABLE_PKG_VER%-Qt4
) else (
set PORTABLE_DIR_NAME=smplayer-portable-%PORTABLE_PKG_VER%
)
ren "%SMPLAYER_DIR%" "%PORTABLE_DIR_NAME%"
set SMPLAYER_PORTABLE_DIR="%TOP_LEVEL_DIR%\%PORTABLE_DIR_NAME%"
if not exist "%SMPLAYER_PORTABLE_DIR%" (
echo Oops! Unable to find renamed directory, make sure no files are opened.
goto end
)
echo Backing up files...
ren "%SMPLAYER_PORTABLE_DIR%\smplayer.exe" smplayer.bak
REM ren "%SMPLAYER_PORTABLE_DIR%\smtube.exe" smtube.bak
echo Creating screenshots dir...
mkdir "%SMPLAYER_PORTABLE_DIR%\screenshots"
echo Creating smplayer.ini...
echo [%%General]> "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
echo screenshot_directory=.\\screenshots>> "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
echo.>> "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
echo [smplayer]>> "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
echo check_if_upgraded=false>> "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
echo Creating smplayer_orig.ini...
echo [%%General]> "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
echo screenshot_directory=.\\screenshots>> "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
echo.>> "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
echo [smplayer]>> "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
echo check_if_upgraded=false>> "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
REM echo Creating mplayer config...
REM echo ^../fontconfig^> "%SMPLAYER_PORTABLE_DIR%\mplayer\fonts\local.conf"
echo Copying portable .exe...
copy /y "%PORTABLE_EXE_DIR%\smplayer-portable.exe" "%SMPLAYER_PORTABLE_DIR%\smplayer.exe"
REM copy /y "%PORTABLE_EXE_DIR%\smtube-portable.exe" "%SMPLAYER_PORTABLE_DIR%\smtube.exe"
echo Finalizing package...
7za a -t7z "%OUTPUT_DIR%\%PORTABLE_DIR_NAME%.7z" "%SMPLAYER_PORTABLE_DIR%" -xr!*.bak* -xr!qxtcore.dll -xr!mplayer64.exe -xr!mencoder.exe -xr!mencoder64.exe -xr!mplayer64.exe.debug -xr!mencoder64.exe.debug -xr!mplayer.exe.debug -xr!mencoder.exe.debug -xr!gdb.exe -xr!gdb64.exe -xr!vfw2menc.exe -xr!buildinfo -xr!buildinfo64 -xr!buildinfo-mencoder-32 -xr!buildinfo-mencoder-debug-32 -xr!buildinfo-mplayer-32 -xr!buildinfo-mplayer-debug-32 -xr!buildinfo-mencoder-64 -xr!buildinfo-mencoder-debug-64 -xr!buildinfo-mplayer-64 -xr!buildinfo-mplayer-debug-64 -xr!mpv64.exe -xr!mpv64.com -xr!d3dcompiler_43-64.dll -xr!libaacs64.dll -xr!libbdplus64.dll -mx9 >nul
echo.
echo Restoring source folder(s) back to its original state...
echo.
rmdir "%SMPLAYER_PORTABLE_DIR%\screenshots"
del "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
del "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
del "%SMPLAYER_PORTABLE_DIR%\smplayer.exe"
REM del "%SMPLAYER_PORTABLE_DIR%\smtube.exe"
REM del "%SMPLAYER_PORTABLE_DIR%\mplayer\fonts\local.conf"
ren "%SMPLAYER_PORTABLE_DIR%\smplayer.bak" smplayer.exe
REM ren "%SMPLAYER_PORTABLE_DIR%\smtube.bak" smtube.exe
ren "%SMPLAYER_PORTABLE_DIR%" smplayer-build
if not "%USER_CHOICE%" == "11" goto end
:portable64
echo --- SMPlayer Portable Package [64-bit] ---
echo.
if not exist %SMPLAYER_DIR64% (
echo SMPlayer sources missing.
goto end
)
REM Check for portable exes
if not exist "%PORTABLE_EXE_DIR%\smplayer-portable64.exe" (
echo SMPlayer portable EXE not found!
goto end
)
REM if not exist "%PORTABLE_EXE_DIR%\smtube-portable64.exe" (
REM echo Warning: SMTube portable EXE not found!
REM )
set PORTABLE_DIR_NAME=smplayer-portable-%PORTABLE_PKG_VER%-x64
ren "%SMPLAYER_DIR64%" "%PORTABLE_DIR_NAME%"
set SMPLAYER_PORTABLE_DIR="%TOP_LEVEL_DIR%\%PORTABLE_DIR_NAME%"
if not exist "%SMPLAYER_PORTABLE_DIR%" (
echo Oops! Unable to find renamed directory, make sure no files are opened.
goto end
)
echo Backing up files...
ren "%SMPLAYER_PORTABLE_DIR%\smplayer.exe" smplayer.bak
REM ren "%SMPLAYER_PORTABLE_DIR%\smtube.exe" smtube.bak
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\mplayer.exe" mplayer.exe.bak32
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\libaacs.dll" libaacs.dll.bak32
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\libbdplus.dll" libbdplus.dll.bak32
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\mplayer64.exe" mplayer.exe
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\libaacs64.dll" libaacs.dll
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\libbdplus64.dll" libbdplus.dll
if exist "%SMPLAYER_PORTABLE_DIR%\mpv\fonts" (
ren "%SMPLAYER_PORTABLE_DIR%\mpv\fonts" fonts.bak32
)
if exist "%SMPLAYER_PORTABLE_DIR%\mpv\mpv" (
ren "%SMPLAYER_PORTABLE_DIR%\mpv\mpv" mpv.bak32
)
ren "%SMPLAYER_PORTABLE_DIR%\mpv\mpv.exe" mpv.exe.bak32
ren "%SMPLAYER_PORTABLE_DIR%\mpv\mpv.com" mpv.com.bak32
ren "%SMPLAYER_PORTABLE_DIR%\mpv\d3dcompiler_43.dll" d3dcompiler_43.dll.bak32
ren "%SMPLAYER_PORTABLE_DIR%\mpv\mpv64.exe" mpv.exe
ren "%SMPLAYER_PORTABLE_DIR%\mpv\mpv64.com" mpv.com
ren "%SMPLAYER_PORTABLE_DIR%\mpv\d3dcompiler_43-64.dll" d3dcompiler_43.dll
echo Creating screenshots dir...
mkdir "%SMPLAYER_PORTABLE_DIR%\screenshots"
echo Creating smplayer.ini...
echo [%%General]> "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
echo screenshot_directory=.\\screenshots>> "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
echo.>> "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
echo [smplayer]>> "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
echo check_if_upgraded=false>> "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
echo Creating smplayer_orig.ini...
echo [%%General]> "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
echo screenshot_directory=.\\screenshots>> "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
echo.>> "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
echo [smplayer]>> "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
echo check_if_upgraded=false>> "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
REM echo Creating mplayer config...
REM echo ^../fontconfig^> "%SMPLAYER_PORTABLE_DIR%\mplayer\fonts\local.conf"
echo Copying portable .exe...
copy /y "%PORTABLE_EXE_DIR%\smplayer-portable64.exe" "%SMPLAYER_PORTABLE_DIR%\smplayer.exe"
REM copy /y "%PORTABLE_EXE_DIR%\smtube-portable64.exe" "%SMPLAYER_PORTABLE_DIR%\smtube.exe"
echo Finalizing package...
7za a -t7z "%OUTPUT_DIR%\%PORTABLE_DIR_NAME%.7z" "%SMPLAYER_PORTABLE_DIR%" -xr!*.bak* -xr!qxtcore.dll -xr!mencoder.exe -xr!mencoder64.exe -xr!mplayer64.exe.debug -xr!mencoder64.exe.debug -xr!mplayer.exe.debug -xr!mencoder.exe.debug -xr!gdb.exe -xr!gdb64.exe -xr!vfw2menc.exe -xr!codecs -xr!buildinfo -xr!buildinfo64 -xr!buildinfo-mencoder-32 -xr!buildinfo-mencoder-debug-32 -xr!buildinfo-mplayer-32 -xr!buildinfo-mplayer-debug-32 -xr!buildinfo-mencoder-64 -xr!buildinfo-mencoder-debug-64 -xr!buildinfo-mplayer-64 -xr!buildinfo-mplayer-debug-64 -mx9 >nul
echo.
echo Restoring source folder(s) back to its original state...
echo.
rmdir "%SMPLAYER_PORTABLE_DIR%\screenshots"
del "%SMPLAYER_PORTABLE_DIR%\smplayer.ini"
del "%SMPLAYER_PORTABLE_DIR%\smplayer_orig.ini"
del "%SMPLAYER_PORTABLE_DIR%\smplayer.exe"
REM del "%SMPLAYER_PORTABLE_DIR%\smtube.exe"
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\mplayer.exe" mplayer64.exe
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\libaacs.dll" libaacs64.dll
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\libbdplus.dll" libbdplus64.dll
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\mplayer.exe.bak32" mplayer.exe
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\libaacs.dll.bak32" libaacs.dll
ren "%SMPLAYER_PORTABLE_DIR%\mplayer\libbdplus.dll.bak32" libbdplus.dll
REM del "%SMPLAYER_PORTABLE_DIR%\mplayer\fonts\local.conf"
ren "%SMPLAYER_PORTABLE_DIR%\smplayer.bak" smplayer.exe
REM ren "%SMPLAYER_PORTABLE_DIR%\smtube.bak" smtube.exe
ren "%SMPLAYER_PORTABLE_DIR%\mpv\mpv.exe" mpv64.exe
ren "%SMPLAYER_PORTABLE_DIR%\mpv\mpv.com" mpv64.com
ren "%SMPLAYER_PORTABLE_DIR%\mpv\d3dcompiler_43.dll" d3dcompiler_43-64.dll
ren "%SMPLAYER_PORTABLE_DIR%\mpv\mpv.exe.bak32" mpv.exe
ren "%SMPLAYER_PORTABLE_DIR%\mpv\mpv.com.bak32" mpv.com
ren "%SMPLAYER_PORTABLE_DIR%\mpv\d3dcompiler_43.dll.bak32" d3dcompiler_43.dll
if exist "%SMPLAYER_PORTABLE_DIR%\mpv\fonts.bak32" (
ren "%SMPLAYER_PORTABLE_DIR%\mpv\fonts.bak32" fonts
)
if exist "%SMPLAYER_PORTABLE_DIR%\mpv\mpv.bak32" (
ren "%SMPLAYER_PORTABLE_DIR%\mpv\mpv.bak32" mpv
)
ren "%SMPLAYER_PORTABLE_DIR%" smplayer-build64
goto end
:portablesfx
if exist %PORTABLE_EXE_DIR%\smplayer-portable.exe (
if exist %TOP_LEVEL_DIR%\smplayer-build (
%MAKENSIS_EXE_PATH% /V3 /DVER_MAJOR=%VER_MAJOR% /DVER_MINOR=%VER_MINOR% /DVER_BUILD=%VER_BUILD% %VER_REV_CMD% %TOP_LEVEL_DIR%\smportable.nsi
)
)
if exist %PORTABLE_EXE_DIR%\smplayer-portable64.exe (
if exist %TOP_LEVEL_DIR%\smplayer-build64 (
%MAKENSIS_EXE_PATH% /V3 /DVER_MAJOR=%VER_MAJOR% /DVER_MINOR=%VER_MINOR% /DVER_BUILD=%VER_BUILD% %VER_REV_CMD% /DWIN64 %TOP_LEVEL_DIR%\smportable.nsi
)
)
goto end
:nomplayer
echo --- Creating SMPlayer w/o MPlayer Package [32-bit] ---
echo.
ren %SMPLAYER_DIR% smplayer-%ALL_PKG_VER%
set SMPLAYER_NOMP_DIR=%TOP_LEVEL_DIR%\smplayer-%ALL_PKG_VER%
::
echo Finalizing package...
7za a -t7z %OUTPUT_DIR%\smplayer-%ALL_PKG_VER%_without_mplayer.7z %SMPLAYER_NOMP_DIR% -xr!mplayer -mx9 >nul
ren %SMPLAYER_NOMP_DIR% smplayer-build
echo.
echo Restoring source folder(s) back to its original state....
goto end
:nomplayer64
echo --- Creating SMPlayer w/o MPlayer Package [64-bit] ---
echo.
ren %SMPLAYER_DIR64% smplayer-%ALL_PKG_VER%-x64
set SMPLAYER_NOMP_DIR=%TOP_LEVEL_DIR%\smplayer-%ALL_PKG_VER%-x64
::
echo Finalizing package...
7za a -t7z %OUTPUT_DIR%\smplayer-%ALL_PKG_VER%-x64_without_mplayer.7z %SMPLAYER_NOMP_DIR% -xr!mplayer -mx9 >nul
ren %SMPLAYER_NOMP_DIR% smplayer-build64
echo.
echo Restoring source folder(s) back to its original state....
goto end
:end
timeout /t 10
:superend
set ALL_PKG_VER=
set VER_MAJOR=
set VER_MINOR=
set VER_BUILD=
set VER_REVISION=