diff --git a/Telegram/Resources/uwp/AppX/AppxManifest.xml b/Telegram/Resources/uwp/AppX/AppxManifest.xml
index 2cf6fafa5..f9e42811d 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 000000000..223ba3b33
--- /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!
+)