tdesktop/Telegram/Build.bat

196 lines
5.9 KiB
Batchfile

@echo OFF
setlocal
FOR /F "tokens=1,2* delims= " %%i in (Version) do set "%%i=%%j"
set "VersionForPacker=%AppVersion%"
if %BetaVersion% neq 0 (
set "AppVersion=%BetaVersion%"
set "AppVersionStrFull=%AppVersionStr%_%BetaVersion%"
set "DevParam=-beta %BetaVersion%"
set "BetaKeyFile=tbeta_%BetaVersion%_key"
) else (
if %DevChannel% neq 0 (
set "DevParam=-dev"
set "AppVersionStrFull=%AppVersionStr%.dev"
) else (
set "DevParam="
set "AppVersionStrFull=%AppVersionStr%"
)
)
echo.
echo Building version %AppVersionStrFull% for Windows..
echo.
set "UpdateFile=tupdate%AppVersion%"
set "SetupFile=tsetup.%AppVersionStrFull%.exe"
set "PortableFile=tportable.%AppVersionStrFull%.zip"
set "HomePath=..\..\Telegram"
set "ReleasePath=..\Win32\Deploy"
set "DeployPath=%ReleasePath%\deploy\%AppVersionStrMajor%\%AppVersionStrFull%"
set "SignPath=..\..\TelegramPrivate\Sign.bat"
set "BinaryName=Telegram"
set "DropboxSymbolsPath=Z:\Dropbox\Telegram\symbols"
if %BetaVersion% neq 0 (
if exist %DeployPath%\ (
echo Deploy folder for version %AppVersionStr% already exists!
exit /b 1
)
if exist %ReleasePath%\%BetaKeyFile% (
echo Beta version key file for version %AppVersion% already exists!
exit /b 1
)
) else (
if exist %ReleasePath%\deploy\%AppVersionStrMajor%\%AppVersionStr%.dev\ (
echo Deploy folder for version %AppVersionStr%.dev already exists!
exit /b 1
)
if exist %ReleasePath%\deploy\%AppVersionStrMajor%\%AppVersionStr%\ (
echo Deploy folder for version %AppVersionStr% already exists!
exit /b 1
)
if exist %ReleasePath%\tupdate%AppVersion% (
echo Update file for version %AppVersion% already exists!
exit /b 1
)
)
cd SourceFiles\
if "%1" == "fast" (
echo Skipping touching of telegram.qrc..
) else (
copy telegram.qrc /B+,,/Y
)
cd ..\
if %errorlevel% neq 0 goto error
cd ..\
MSBuild Telegram.sln /property:Configuration=Deploy
cd Telegram\
if %errorlevel% neq 0 goto error
echo .
echo Version %AppVersionStrFull% build successfull. Preparing..
echo .
echo Dumping debug symbols..
call ..\..\Libraries\breakpad\src\tools\windows\binaries\dump_syms.exe %ReleasePath%\%BinaryName%.pdb > %ReleasePath%\%BinaryName%.sym
echo Done!
set "PATH=%PATH%;C:\Program Files\7-Zip;C:\Program Files (x86)\Inno Setup 5"
call %SignPath% %ReleasePath%\%BinaryName%.exe
if %errorlevel% neq 0 goto error
call %SignPath% %ReleasePath%\Updater.exe
if %errorlevel% neq 0 goto error
if %BetaVersion% equ 0 (
cd %ReleasePath%
iscc /dMyAppVersion=%AppVersionStrSmall% /dMyAppVersionZero=%AppVersionStr% /dMyAppVersionFull=%AppVersionStrFull% %HomePath%\Setup.iss
cd %HomePath%
if %errorlevel% neq 0 goto error
call %SignPath% %ReleasePath%\tsetup.%AppVersionStrFull%.exe
if %errorlevel% neq 0 goto error
)
cd %ReleasePath%
call Packer.exe -version %VersionForPacker% -path %BinaryName%.exe -path Updater.exe %DevParam%
cd %HomePath%
if %errorlevel% neq 0 goto error
if %BetaVersion% neq 0 (
if not exist %ReleasePath%\%BetaKeyFile% (
echo Beta version key file not found!
exit /b 1
)
FOR /F "tokens=1* delims= " %%i in (%ReleasePath%\%BetaKeyFile%) do set "BetaSignature=%%i"
)
if %errorlevel% neq 0 goto error
if %BetaVersion% neq 0 (
set "UpdateFile=%UpdateFile%_%BetaSignature%"
set "PortableFile=tbeta%BetaVersion%_%BetaSignature%.zip"
)
for /f ^"usebackq^ eol^=^
^ delims^=^" %%a in (%ReleasePath%\%BinaryName%.sym) do (
set "SymbolsHashLine=%%a"
goto symbolslinedone
)
:symbolslinedone
FOR /F "tokens=1,2,3,4* delims= " %%i in ("%SymbolsHashLine%") do set "SymbolsHash=%%l"
echo Copying %BinaryName%.sym to %DropboxSymbolsPath%\%BinaryName%.pdb\%SymbolsHash%
if not exist %DropboxSymbolsPath%\%BinaryName%.pdb mkdir %DropboxSymbolsPath%\%BinaryName%.pdb
if not exist %DropboxSymbolsPath%\%BinaryName%.pdb\%SymbolsHash% mkdir %DropboxSymbolsPath%\%BinaryName%.pdb\%SymbolsHash%
xcopy %ReleasePath%\%BinaryName%.sym %DropboxSymbolsPath%\%BinaryName%.pdb\%SymbolsHash%\
echo Done!
if not exist %ReleasePath%\deploy mkdir %ReleasePath%\deploy
if not exist %ReleasePath%\deploy\%AppVersionStrMajor% mkdir %ReleasePath%\deploy\%AppVersionStrMajor%
mkdir %DeployPath%
mkdir %DeployPath%\Telegram
if %errorlevel% neq 0 goto error
move %ReleasePath%\Telegram.exe %DeployPath%\Telegram\
move %ReleasePath%\Updater.exe %DeployPath%\
move %ReleasePath%\Telegram.pdb %DeployPath%\
move %ReleasePath%\Updater.pdb %DeployPath%\
if %BetaVersion% equ 0 (
move %ReleasePath%\%SetupFile% %DeployPath%\
) else (
move %ReleasePath%\%BetaKeyFile% %DeployPath%\
)
move %ReleasePath%\%UpdateFile% %DeployPath%\
if %errorlevel% neq 0 goto error
cd %DeployPath%\
7z a -mx9 %PortableFile% Telegram\
cd ..\..\..\%HomePath%\
if %errorlevel% neq 0 goto error
echo .
echo Version %AppVersionStrFull% is ready for deploy!
echo .
set "FinalReleasePath=Z:\TBuild\tother\tsetup"
set "FinalDeployPath=%FinalReleasePath%\%AppVersionStrMajor%\%AppVersionStrFull%"
if not exist %DeployPath%\%UpdateFile% goto error
if not exist %DeployPath%\%PortableFile% goto error
if %BetaVersion% equ 0 (
if not exist %DeployPath%\%SetupFile% goto error
)
if not exist %DeployPath%\%BinaryName%.pdb goto error
if not exist %DeployPath%\Updater.exe goto error
if not exist %DeployPath%\Updater.pdb goto error
if not exist %FinalReleasePath%\%AppVersionStrMajor% mkdir %FinalReleasePath%\%AppVersionStrMajor%
if not exist %FinalDeployPath% mkdir %FinalDeployPath%
xcopy %DeployPath%\%UpdateFile% %FinalDeployPath%\
xcopy %DeployPath%\%PortableFile% %FinalDeployPath%\
if %BetaVersion% equ 0 (
xcopy %DeployPath%\%SetupFile% %FinalDeployPath%\
) else (
xcopy %DeployPath%\%BetaKeyFile% %FinalDeployPath%\ /Y
)
xcopy %DeployPath%\%BinaryName%.pdb %FinalDeployPath%\
xcopy %DeployPath%\Updater.exe %FinalDeployPath%\
xcopy %DeployPath%\Updater.pdb %FinalDeployPath%\
echo Version %AppVersionStrFull% is ready!
goto eof
:error
echo ERROR occured!
if %errorlevel% neq 0 exit /b %errorlevel%
exit /b 1
:eof