diff --git a/Telegram/Resources/uwp/AppX/AppxManifest.xml b/Telegram/Resources/uwp/AppX/AppxManifest.xml index 2cf6fafa51..f9e42811de 100644 --- a/Telegram/Resources/uwp/AppX/AppxManifest.xml +++ b/Telegram/Resources/uwp/AppX/AppxManifest.xml @@ -7,7 +7,7 @@ xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="uap uap2 uap3 rescap"> @@ -28,7 +28,7 @@ build\target -) else ( - echo win > build\target -) - call gyp\refresh.bat if %errorlevel% neq 0 goto error @@ -196,27 +179,47 @@ echo Done! if %BuildUWP% neq 0 ( cd "%HomePath%" - mkdir "%ReleasePath%\AppX" - xcopy /e "Resources\uwp\AppX\*" "%ReleasePath%\AppX\" + mkdir "%ReleasePath%\AppX_x86" + xcopy "Resources\uwp\AppX\*" "%ReleasePath%\AppX_x86\" /E + set "ResourcePath=%ReleasePath%\AppX_x86\AppxManifest.xml" + call :repl "Argument= (ProcessorArchitecture=)"ARCHITECTURE"/ $1"x86"" "Filename=!ResourcePath!" || goto error - makepri new /pr Resources\uwp\AppX\ /cf Resources\uwp\priconfig.xml /mn %ReleasePath%\AppX\AppxManifest.xml /of %ReleasePath%\AppX\resources.pri + makepri new /pr Resources\uwp\AppX\ /cf Resources\uwp\priconfig.xml /mn %ReleasePath%\AppX_x86\AppxManifest.xml /of %ReleasePath%\AppX_x86\resources.pri if %errorlevel% neq 0 goto error - move "%ReleasePath%\%BinaryName%.exe" "%ReleasePath%\AppX\" + xcopy "%ReleasePath%\%BinaryName%.exe" "%ReleasePath%\AppX_x86\" - MakeAppx.exe pack /d "%ReleasePath%\AppX" /l /p ..\out\Release\%BinaryName%.appx + MakeAppx.exe pack /d "%ReleasePath%\AppX_x86" /l /p ..\out\Release\%BinaryName%.x86.appx if %errorlevel% neq 0 goto error - rem call "%SignAppxPath%" "..\out\Release\%BinaryName%.appx" + mkdir "%ReleasePath%\AppX_x64" + xcopy "Resources\uwp\AppX\*" "%ReleasePath%\AppX_x64\" /E + set "ResourcePath=%ReleasePath%\AppX_x64\AppxManifest.xml" + call :repl "Argument= (ProcessorArchitecture=)"ARCHITECTURE"/ $1"x64"" "Filename=!ResourcePath!" || goto error - xcopy "%ReleasePath%\%BinaryName%.pdb" "%ReleasePath%\AppX\" - move "%ReleasePath%\%BinaryName%.exe.pdb" "%ReleasePath%\AppX\" - move "%ReleasePath%\%BinaryName%.appx" "%ReleasePath%\AppX\" + makepri new /pr Resources\uwp\AppX\ /cf Resources\uwp\priconfig.xml /mn %ReleasePath%\AppX_x64\AppxManifest.xml /of %ReleasePath%\AppX_x64\resources.pri + if %errorlevel% neq 0 goto error + + xcopy "%ReleasePath%\%BinaryName%.exe" "%ReleasePath%\AppX_x64\" + + MakeAppx.exe pack /d "%ReleasePath%\AppX_x64" /l /p ..\out\Release\%BinaryName%.x64.appx + if %errorlevel% neq 0 goto error + + if not exist "%ReleasePath%\deploy" mkdir "%ReleasePath%\deploy" + if not exist "%ReleasePath%\deploy\%AppVersionStrMajor%" mkdir "%ReleasePath%\deploy\%AppVersionStrMajor%" + mkdir "%DeployPath%" + + xcopy "%ReleasePath%\%BinaryName%.pdb" "%DeployPath%\" + move "%ReleasePath%\%BinaryName%.exe.pdb" "%DeployPath%\" + move "%ReleasePath%\%BinaryName%.x86.appx" "%DeployPath%\" + move "%ReleasePath%\%BinaryName%.x64.appx" "%DeployPath%\" + move "%ReleasePath%\%BinaryName%.exe" "%DeployPath%\" if "%AlphaBetaParam%" equ "" ( - move "%ReleasePath%\AppX" "%DeployPath%\" + move "%ReleasePath%\AppX_x86" "%DeployPath%\AppX_x86" + move "%ReleasePath%\AppX_x64" "%DeployPath%\AppX_x64" ) else ( - echo Leaving result in out\Release\AppX for now.. + echo Leaving result in out\Release\AppX_arch for now.. ) ) else ( if not exist "%ReleasePath%\deploy" mkdir "%ReleasePath%\deploy" @@ -264,10 +267,10 @@ if %BuildUWP% equ 0 ( if not exist "%FinalReleasePath%\%AppVersionStrMajor%" mkdir "%FinalReleasePath%\%AppVersionStrMajor%" if not exist "%FinalDeployPath%" mkdir "%FinalDeployPath%" - xcopy "%DeployPath%\%UpdateFile%" "%FinalDeployPath%\" - xcopy "%DeployPath%\%PortableFile%" "%FinalDeployPath%\" + xcopy "%DeployPath%\%UpdateFile%" "%FinalDeployPath%\" /Y + xcopy "%DeployPath%\%PortableFile%" "%FinalDeployPath%\" /Y if %BetaVersion% equ 0 ( - xcopy "%DeployPath%\%SetupFile%" "%FinalDeployPath%\" + xcopy "%DeployPath%\%SetupFile%" "%FinalDeployPath%\" /Y ) else ( xcopy "%DeployPath%\%BetaKeyFile%" "%FinalDeployPath%\" /Y ) @@ -290,3 +293,25 @@ exit /b cd "%FullExecPath%" exit /b !ErrorCode! ) + +:repl +( + set %1 + set %2 + set "TempFilename=!Filename!__tmp__" + cscript //Nologo "%FullScriptPath%replace.vbs" "Replace" "!Argument!" < "!Filename!" > "!TempFilename!" || goto :repl_finish + xcopy /Y !TempFilename! !Filename! >NUL || goto :repl_finish + goto :repl_finish +) + +:repl_finish +( + set ErrorCode=%errorlevel% + if !ErrorCode! neq 0 ( + echo Replace error !ErrorCode! + echo While replacing "%Replace%" + echo In file "%Filename%" + ) + del %TempFilename% + exit /b !ErrorCode! +) diff --git a/Telegram/build/test_package.bat b/Telegram/build/test_package.bat new file mode 100644 index 0000000000..223ba3b332 --- /dev/null +++ b/Telegram/build/test_package.bat @@ -0,0 +1,81 @@ +@echo OFF +setlocal enabledelayedexpansion +set "FullScriptPath=%~dp0" +set "FullExecPath=%cd%" + +if not exist "%FullScriptPath%..\..\..\TelegramPrivate" ( + echo. + echo This script is for building the production version of Telegram Desktop. + echo. + echo For building custom versions please visit the build instructions page at: + echo https://github.com/telegramdesktop/tdesktop/#build-instructions + exit /b +) + +set "HomePath=%FullScriptPath%.." +set "SignAppxPath=%HomePath%\..\..\TelegramPrivate\AppxSign.bat" +set "ResourcesPath=%HomePath%\Resources" +set "SolutionPath=%HomePath%\.." +set "ReleasePath=%HomePath%\..\out\Debug" +set "BinaryName=Telegram" + +if exist %ReleasePath%\AppX\ ( + echo Result folder out\Debug\AppX already exists! + exit /b 1 +) + +cd "%HomePath%" + +call gyp\refresh.bat +if %errorlevel% neq 0 goto error + +cd "%SolutionPath%" +call ninja -C out/Debug Telegram +if %errorlevel% neq 0 goto error + +cd "%HomePath%" + +mkdir "%ReleasePath%\AppX" +xcopy "Resources\uwp\AppX\*" "%ReleasePath%\AppX\" /E + +set "ResourcePath=%ReleasePath%\AppX\AppxManifest.xml" +call :repl "Argument= (Publisher=)"CN=536BC709-8EE1-4478-AF22-F0F0F26FF64A"/ $1"CN=Telegram Messenger LLP, O=Telegram Messenger LLP, L=London, C=GB"" "Filename=%ResourcePath%" || goto :error +call :repl "Argument= (ProcessorArchitecture=)"ARCHITECTURE"/ $1"x64"" "Filename=%ResourcePath%" || goto :error + +makepri new /pr Resources\uwp\AppX\ /cf Resources\uwp\priconfig.xml /mn %ReleasePath%\AppX\AppxManifest.xml /of %ReleasePath%\AppX\resources.pri +if %errorlevel% neq 0 goto error + +xcopy "%ReleasePath%\%BinaryName%.exe" "%ReleasePath%\AppX\" + +MakeAppx.exe pack /d "%ReleasePath%\AppX" /l /p ..\out\Debug\%BinaryName%.appx +if %errorlevel% neq 0 goto error + +call "%SignAppxPath%" "..\out\Debug\%BinaryName%.appx" + +move "%ReleasePath%\%BinaryName%.appx" "%ReleasePath%\AppX\" + +echo Done. + +exit /b + +:repl +( + set %1 + set %2 + set "TempFilename=!Filename!__tmp__" + cscript //Nologo "%FullScriptPath%replace.vbs" "Replace" "!Argument!" < "!Filename!" > "!TempFilename!" || goto :repl_finish + xcopy /Y !TempFilename! !Filename! >NUL || goto :repl_finish + goto :repl_finish +) + +:repl_finish +( + set ErrorCode=%errorlevel% + if !ErrorCode! neq 0 ( + echo Replace error !ErrorCode! + echo While replacing "%Replace%" + echo In file "%Filename%" + ) + del %TempFilename% + exit /b !ErrorCode! +)