mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
ca4e009ffc
* Having two separate Visual Studio solution files, while more convenient, was a major pain in the ass and it also required us to update versioning in the .appxmanifest for each commit. * Also, this new AppStore build process enables us to use the GitHub Actions executables to further foster the complete transparency of our build process.
152 lines
5.2 KiB
Batchfile
152 lines
5.2 KiB
Batchfile
@rem This script creates the Rufus appxupload for upload to the Windows Store.
|
|
@rem It attemps to follow as closely as possible what Visual Studio does.
|
|
@echo off
|
|
setlocal EnableExtensions DisableDelayedExpansion
|
|
|
|
goto main
|
|
|
|
:ReplaceTokenInFile
|
|
setlocal EnableDelayedExpansion
|
|
set FILE=%~1
|
|
set TOKEN=%~2
|
|
set VALUE=%~3
|
|
for /f "delims=" %%i in ('type %FILE% ^& break ^> %FILE%') do (
|
|
set "line=%%i"
|
|
>>%FILE% echo(!line:%TOKEN%=%VALUE%!
|
|
)
|
|
endlocal
|
|
exit /B 0
|
|
|
|
:main
|
|
del /q *.appx >NUL 2>&1
|
|
del /q *.appxbundle >NUL 2>&1
|
|
del /q *.map >NUL 2>&1
|
|
|
|
set WDK_PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.20348.0\x64
|
|
set ZIP_PATH=C:\Program Files\7-Zip
|
|
set SIGNATURE_SHA1=9ce9a71ccab3b38a74781b975f1c228222cf7d3b
|
|
set MSBUILD_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
|
|
set MANIFEST=AppxManifest.xml
|
|
set ARCHS=x86 x64 arm arm64
|
|
set DEFAULT_SCALE=200
|
|
set OTHER_SCALES=100 125 150 400
|
|
set SCALED_IMAGES=LargeTile SmallTile Square44x44Logo Square150x150Logo StoreLogo Wide310x150Logo
|
|
set PACKAGE_IMAGES=^
|
|
Square44x44Logo.altform-lightunplated_targetsize-16.png^
|
|
Square44x44Logo.altform-lightunplated_targetsize-24.png^
|
|
Square44x44Logo.altform-lightunplated_targetsize-256.png^
|
|
Square44x44Logo.altform-lightunplated_targetsize-32.png^
|
|
Square44x44Logo.altform-lightunplated_targetsize-48.png^
|
|
Square44x44Logo.altform-unplated_targetsize-16.png^
|
|
Square44x44Logo.altform-unplated_targetsize-256.png^
|
|
Square44x44Logo.altform-unplated_targetsize-32.png^
|
|
Square44x44Logo.altform-unplated_targetsize-48.png^
|
|
Square44x44Logo.targetsize-16.png^
|
|
Square44x44Logo.targetsize-24.png^
|
|
Square44x44Logo.targetsize-24_altform-unplated.png^
|
|
Square44x44Logo.targetsize-256.png^
|
|
Square44x44Logo.targetsize-32.png^
|
|
Square44x44Logo.targetsize-48.png
|
|
|
|
rem if you don't set the temp/tmp you get:
|
|
rem error MSB6001: Invalid command line switch for "CL.exe". System.ArgumentExcep Key being added: 'TEMP'
|
|
set temp=
|
|
set tmp=
|
|
|
|
cd /d "%~dp0"
|
|
|
|
for %%a in (%ARCHS%) do (
|
|
if not exist rufus_%%a.exe (
|
|
echo rufus_%%a.exe is missing from the current directory
|
|
goto out
|
|
)
|
|
)
|
|
|
|
rem Populate the version from the executable
|
|
set target=%~dp0rufus_x64.exe
|
|
set target=%target:\=\\%
|
|
wmic datafile where "name='%target%'" get version | find /v "Version" > version.txt
|
|
set /p VERSION=<version.txt
|
|
set VERSION=%VERSION: =%
|
|
del version.txt
|
|
|
|
echo Will create %VERSION% AppStore Bundle
|
|
pause
|
|
|
|
"%WDK_PATH%\signtool" sign /v /sha1 %SIGNATURE_SHA1% /fd SHA256 /td SHA256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp *.exe
|
|
if ERRORLEVEL 1 goto out
|
|
|
|
echo [Files]> bundle.map
|
|
|
|
for %%a in (%ARCHS%) do (
|
|
echo.
|
|
echo Creating Rufus_%VERSION%_%%a.appx...
|
|
cd /d "%~dp0"
|
|
echo "Rufus_%VERSION%_%%a.appx" "Rufus_%VERSION%_%%a.appx">> bundle.map
|
|
mkdir %%a >NUL 2>&1
|
|
cd %%a
|
|
mkdir Images >NUL 2>&1
|
|
for %%i in (%PACKAGE_IMAGES%) do (
|
|
copy "..\Images\%%i" Images\ >NUL 2>&1
|
|
)
|
|
for %%i in (%SCALED_IMAGES%) do (
|
|
copy "..\Images\%%i.scale-%DEFAULT_SCALE%.png" Images\ >NUL 2>&1
|
|
)
|
|
mkdir rufus
|
|
copy "..\rufus_%%a.exe" "rufus\rufus.exe" >NUL 2>&1
|
|
copy /y NUL "rufus\rufus.app" >NUL 2>&1
|
|
rem When invoking MakePri, it is very important that you don't have files such as AppxManifest.xml or priconfig.xml
|
|
rem in the directory referenced by /pr or you may get ERROR_MRM_DUPLICATE_ENTRY when validating the submission as,
|
|
rem for instance, the 'AppxManifest.xml' from the 100% scale bundle will conflict the one from the x64 bundle.
|
|
"%WDK_PATH%\MakePri" createconfig /o /pv 10.0.0 /dq lang-en-US_scale-%DEFAULT_SCALE%_theme-light /cf ..\priconfig.xml
|
|
"%WDK_PATH%\MakePri" new /o /pr . /cf ..\priconfig.xml
|
|
del /q ..\priconfig.xml
|
|
copy ..\RufusAppxManifest.xml %MANIFEST% >NUL 2>&1
|
|
call:ReplaceTokenInFile %MANIFEST% @ARCH@ %%a
|
|
call:ReplaceTokenInFile %MANIFEST% @VERSION@ %VERSION%
|
|
"%WDK_PATH%\MakeAppx" pack /o /d . /p ..\Rufus_%VERSION%_%%a.appx
|
|
if ERRORLEVEL 1 goto out
|
|
)
|
|
|
|
for %%a in (%OTHER_SCALES%) do (
|
|
echo.
|
|
echo Creating Rufus_%VERSION%_scale-%%a.appx...
|
|
cd /d "%~dp0"
|
|
echo "Rufus_%VERSION%_scale-%%a.appx" "Rufus_%VERSION%_scale-%%a.appx">> bundle.map
|
|
mkdir %%a >NUL 2>&1
|
|
cd %%a
|
|
mkdir Images >NUL 2>&1
|
|
for %%i in (%SCALED_IMAGES%) do (
|
|
copy "..\Images\%%i.scale-%%a.png" Images\ >NUL 2>&1
|
|
)
|
|
"%WDK_PATH%\MakePri" createconfig /o /pv 10.0.0 /dq lang-en-US_scale-%%a_theme-light /cf ..\priconfig.xml
|
|
"%WDK_PATH%\MakePri" new /o /pr . /cf ..\priconfig.xml
|
|
del /q ..\priconfig.xml
|
|
copy ..\ScaleAppxManifest.xml %MANIFEST% >NUL 2>&1
|
|
call:ReplaceTokenInFile %MANIFEST% @SCALE@ %%a
|
|
call:ReplaceTokenInFile %MANIFEST% @VERSION@ %VERSION%
|
|
"%WDK_PATH%\MakeAppx" pack /o /d . /p ..\Rufus_%VERSION%_scale-%%a.appx
|
|
)
|
|
|
|
setlocal EnableDelayedExpansion
|
|
set ALL_ARCHS=
|
|
for %%a in (%ARCHS%) do set ALL_ARCHS=!ALL_ARCHS!_%%a
|
|
cd /d "%~dp0"
|
|
"%WDK_PATH%\MakeAppx" bundle /f bundle.map /bv %VERSION% /p Rufus_%VERSION%%ALL_ARCHS%.appxbundle
|
|
rem Visual Studio zips the appxbundle into an appxupload for store upload, so we do the same...
|
|
"%ZIP_PATH%\7z" a -tzip Rufus_%VERSION%%ALL_ARCHS%_bundle.appxupload Rufus_%VERSION%%ALL_ARCHS%.appxbundle
|
|
endlocal
|
|
|
|
:out
|
|
cd /d "%~dp0"
|
|
for %%a in (%ARCHS%) do (
|
|
rd /S /Q %%a >NUL 2>&1
|
|
)
|
|
for %%a in (%OTHER_SCALES%) do (
|
|
rd /S /Q %%a >NUL 2>&1
|
|
)
|
|
del /q *.map >NUL 2>&1
|
|
del /q *.appx >NUL 2>&1
|
|
del /q *.appxbundle >NUL 2>&1
|
|
pause
|
|
exit
|