@setlocal enableextensions enabledelayedexpansion :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : Appveyor Deployer : See appveyor.yml for default variables :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : Evaluate whether we should be deploying :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: if not [%DPL_ENABLED%] == [1] ( echo Deployer is not enabled... exit /b ) : Don't do DD installs because fmodex DLL handling is not implemented. if [%CONFIGURATION%] == [DD] ( echo Deployer does not support DD builds... exit /b ) if [%CONFIGURATION%] == [DD64] ( echo Deployer does not support DD builds... exit /b ) : Substring match from https://stackoverflow.com/questions/7005951/batch-file-find-if-substring-is-in-string-not-in-a-file : The below line says "if deployer is NOT in string" : Note that APPVEYOR_REPO_BRANCH for pull request builds is the BASE branch that PR is merging INTO if x%APPVEYOR_REPO_BRANCH:deployer=%==x%APPVEYOR_REPO_BRANCH% ( if not [%APPVEYOR_REPO_TAG%] == [true] ( echo Deployer is enabled but we are not in a release tag or a 'deployer' branch... exit /b ) else ( if not [%DPL_TAG_ENABLED%] == [1] ( echo Deployer is not enabled for release tags... exit /b ) ) ) : Release tags always get optional assets (music.dta) if [%APPVEYOR_REPO_TAG%] == [true] ( set "ASSET_FILES_OPTIONAL_GET=1" ) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : Get asset archives :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: if exist "C:\Users\appveyor\srb2_cache\archives\" ( if [%ASSET_CLEAN%] == [1] ( echo Cleaning asset archives... rmdir /s /q "C:\Users\appveyor\srb2_cache\archives" ) ) if not exist "C:\Users\appveyor\srb2_cache\archives\" mkdir "C:\Users\appveyor\srb2_cache\archives" goto EXTRACT_ARCHIVES :::::::::::::::::::::::::::::::: : ARCHIVE_NAME_PARTS : Call this like a function. %archivepath% is the path to extract parts from. :::::::::::::::::::::::::::::::: for %%a in (%archivepath%) do ( set "file=%%~fa" set "filepath=%%~dpa" set "filename=%%~nxa" ) set "localarchivepath=C:\Users\appveyor\srb2_cache\archives\%filename%" goto EOF :::::::::::::::::::::::::::::::: : EXTRACT_ARCHIVES :::::::::::::::::::::::::::::::: set "archivepath=%ASSET_ARCHIVE_PATH%" call :ARCHIVE_NAME_PARTS set "ASSET_ARCHIVE_PATH_LOCAL=%localarchivepath%" if not exist "%localarchivepath%" appveyor DownloadFile "%ASSET_ARCHIVE_PATH%" -FileName "%localarchivepath%" set "archivepath=%ASSET_ARCHIVE_PATCH_PATH%" call :ARCHIVE_NAME_PARTS set "ASSET_ARCHIVE_PATCH_PATH_LOCAL=%localarchivepath%" if not exist "%localarchivepath%" appveyor DownloadFile "%ASSET_ARCHIVE_PATCH_PATH%" -FileName "%localarchivepath%" if not [%X86_64%] == [1] ( set "archivepath=%ASSET_ARCHIVE_X86_PATH%" call :ARCHIVE_NAME_PARTS set "ASSET_ARCHIVE_X86_PATH_LOCAL=!localarchivepath!" if not exist "!localarchivepath!" appveyor DownloadFile "%ASSET_ARCHIVE_X86_PATH%" -FileName "!localarchivepath!" ) if [%X86_64%] == [1] ( set "archivepath=%ASSET_ARCHIVE_X64_PATH%" call :ARCHIVE_NAME_PARTS set "ASSET_ARCHIVE_X64_PATH_LOCAL=!localarchivepath!" if not exist "!localarchivepath!" appveyor DownloadFile "%ASSET_ARCHIVE_X64_PATH%" -FileName "!localarchivepath!" ) if [%ASSET_FILES_OPTIONAL_GET%] == [1] ( set "archivepath=%ASSET_ARCHIVE_OPTIONAL_PATH%" call :ARCHIVE_NAME_PARTS set "ASSET_ARCHIVE_OPTIONAL_PATH_LOCAL=!localarchivepath!" if not exist "!localarchivepath!" appveyor DownloadFile "%ASSET_ARCHIVE_OPTIONAL_PATH%" -FileName "!localarchivepath!" ) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : Build the installers :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: mkdir "assets\installer" mkdir "assets\patch" 7z x -y "%ASSET_ARCHIVE_PATH_LOCAL%" -o"assets\installer" >null 7z x -y "%ASSET_ARCHIVE_PATCH_PATH_LOCAL%" -o"assets\patch" >null : Copy optional files to full installer (music.dta) if [%ASSET_FILES_OPTIONAL_GET%] == [1] ( 7z x -y "%ASSET_ARCHIVE_OPTIONAL_PATH_LOCAL%" -o"assets\installer" >null ) : Copy EXE -- BUILD_PATH is from appveyor.yml robocopy /S /ns /nc /nfl /ndl /np /njh /njs "%BUILD_PATH%" "assets\installer" /XF "*.debug" ".gitignore" robocopy /S /ns /nc /nfl /ndl /np /njh /njs "%BUILD_PATH%" "assets\patch" /XF "*.debug" ".gitignore" : Are we building DD? (we were supposed to exit earlier!) if [%CONFIGURATION%] == [DD] ( set "DPL_INSTALLER_NAME=%DPL_INSTALLER_NAME%-DD" ) if [%CONFIGURATION%] == [DD64] ( set "DPL_INSTALLER_NAME=%DPL_INSTALLER_NAME%-DD" ) : If we are not a release tag, suffix the filename if not [%APPVEYOR_REPO_TAG%] == [true] ( set "INSTALLER_SUFFIX=-%APPVEYOR_REPO_BRANCH%-%GITSHORT%-%CONFIGURATION%" ) else ( set "INSTALLER_SUFFIX=" ) if not [%X86_64%] == [1] ( goto X86_INSTALL ) :::::::::::::::::::::::::::::::: : X64_INSTALL :::::::::::::::::::::::::::::::: : Extract DLL binaries 7z x -y "%ASSET_ARCHIVE_X64_PATH_LOCAL%" -o"assets\installer" >null if [%PACKAGE_PATCH_DLL_GET%] == [1] ( 7z x -y "!ASSET_ARCHIVE_X64_PATH_LOCAL!" -o"assets\patch" >null ) : Build the installer 7z a -sfx7z.sfx "%DPL_INSTALLER_NAME%-x64-Installer%INSTALLER_SUFFIX%.exe" .\assets\installer\* : Build the patch 7z a "%DPL_INSTALLER_NAME%-x64-Patch%INSTALLER_SUFFIX%.zip" .\assets\patch\* : Upload artifacts appveyor PushArtifact "%DPL_INSTALLER_NAME%-x64-Installer%INSTALLER_SUFFIX%.exe" appveyor PushArtifact "%DPL_INSTALLER_NAME%-x64-Patch%INSTALLER_SUFFIX%.zip" : We only do x86 OR x64, one at a time, so exit now. goto EOF :::::::::::::::::::::::::::::::: : X86_INSTALL :::::::::::::::::::::::::::::::: : Extract DLL binaries 7z x -y "%ASSET_ARCHIVE_X86_PATH_LOCAL%" -o"assets\installer" >null if [%PACKAGE_PATCH_DLL_GET%] == [1] ( 7z x -y "!ASSET_ARCHIVE_X86_PATH_LOCAL!" -o"assets\patch" >null ) : Build the installer 7z a -sfx7z.sfx "%DPL_INSTALLER_NAME%-Installer%INSTALLER_SUFFIX%.exe" .\assets\installer\* : Build the patch 7z a "%DPL_INSTALLER_NAME%-Patch%INSTALLER_SUFFIX%.zip" .\assets\patch\* : Upload artifacts appveyor PushArtifact "%DPL_INSTALLER_NAME%-Installer%INSTALLER_SUFFIX%.exe" appveyor PushArtifact "%DPL_INSTALLER_NAME%-Patch%INSTALLER_SUFFIX%.zip" : We only do x86 OR x64, one at a time, so exit now goto EOF :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : EOF :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: endlocal