mirror of
https://github.com/Open-Shell/Open-Shell-Menu.git
synced 2026-04-11 17:37:22 +10:00
* Add ARM64 build configurations to projects * StartMenu: add ARM64 support * Add support for IAT hooking on ARM64 * Add ARM64 support to Classic IE * Add ARM64 support to installer NB: WiX 3.14.0.3910 or higher is required to create the MSI * Revert whitespace change * Separate x86/x64 and ARM64 installers * Change suffix of ARM64 binaries * Put also ARM64 MSI to final installer * Fix sln * Build some DLLs as ARM64X These are meant to be loaded to both x64 and ARM64 processes. We will compile them as ARM64X (when building for ARM64). That way they will contain both x64 and ARM64 code paths. https://learn.microsoft.com/en-us/windows/arm/arm64x-pe * Make sure x64 installer cannot be installed on ARM64 In case if somebody manually tries to install x64 MSI on ARM64. This is not supported/working scenario. --------- Co-authored-by: ge0rdi <ge0rdi@users.noreply.github.com>
217 lines
8.6 KiB
Batchfile
217 lines
8.6 KiB
Batchfile
if exist Output rd /Q /S Output
|
|
md Output
|
|
md Output\x64
|
|
md Output\ARM64
|
|
|
|
echo -- Compiling
|
|
|
|
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do set MSBuildDir=%%i\MSBuild\Current\Bin\
|
|
|
|
REM Restore NuGet packages
|
|
"%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Restore -p:RestorePackagesConfig=true /verbosity:quiet /nologo
|
|
|
|
REM ********* Build x64 solution
|
|
echo --- x64
|
|
"%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Rebuild /p:Configuration="Setup" /p:Platform="x64" /verbosity:quiet /nologo
|
|
@if ERRORLEVEL 1 exit /b 1
|
|
|
|
REM ********* Build ARM64 solution
|
|
echo --- ARM64
|
|
"%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Rebuild /p:Configuration="Setup" /p:Platform="ARM64" /verbosity:quiet /nologo
|
|
if ERRORLEVEL 1 exit /b 1
|
|
|
|
REM ********* Build 32-bit solution (must be after 64-bit)
|
|
echo --- x86
|
|
"%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Rebuild /p:Configuration="Setup" /p:Platform="Win32" /verbosity:quiet /nologo
|
|
@if ERRORLEVEL 1 exit /b 1
|
|
|
|
|
|
REM ********* Make en-US.dll
|
|
cd ..
|
|
..\build\bin\Release\Utility.exe makeEN ..\build\bin\Setup\ClassicExplorer32.dll ..\build\bin\Setup\StartMenuDLL.dll ..\build\bin\Setup\ClassicIEDLL_32.dll ..\build\bin\Release\Update.exe
|
|
@if ERRORLEVEL 1 exit /b 1
|
|
|
|
..\build\bin\Release\Utility.exe extract en-US.dll en-US.csv
|
|
move en-US.dll Localization\English > nul
|
|
move en-US.csv Localization\English > nul
|
|
|
|
cd Setup
|
|
|
|
|
|
REM ********* Copy binaries
|
|
|
|
copy /B ..\..\build\bin\Setup\ClassicExplorer32.dll Output > nul
|
|
copy /B ..\..\build\bin\Setup\ClassicExplorerSettings.exe Output > nul
|
|
copy /B ..\..\build\bin\Setup\ClassicIEDLL_32.dll Output > nul
|
|
copy /B ..\..\build\bin\Setup\ClassicIE_32.exe Output > nul
|
|
copy /B ..\..\build\bin\Setup\StartMenu.exe Output > nul
|
|
copy /B ..\..\build\bin\Setup\StartMenuDLL.dll Output > nul
|
|
copy /B ..\..\build\bin\Setup\StartMenuHelper32.dll Output > nul
|
|
copy /B ..\..\build\bin\Release\Update.exe Output > nul
|
|
copy /B ..\..\build\bin\Release\DesktopToasts.dll Output > nul
|
|
copy /B ..\..\build\bin\Release\SetupHelper.exe Output > nul
|
|
|
|
copy /B ..\..\build\bin\SetupARM64\ClassicExplorer64.dll Output\ARM64 > nul
|
|
copy /B ..\..\build\bin\SetupARM64\ClassicIEDLL_64.dll Output\ARM64 > nul
|
|
copy /B ..\..\build\bin\SetupARM64\ClassicIE_64.exe Output\ARM64 > nul
|
|
copy /B ..\..\build\bin\SetupARM64\StartMenu.exe Output\ARM64 > nul
|
|
copy /B ..\..\build\bin\SetupARM64\StartMenuDLL.dll Output\ARM64 > nul
|
|
copy /B ..\..\build\bin\SetupARM64\StartMenuHelper64.dll Output\ARM64 > nul
|
|
|
|
copy /B ..\..\build\bin\Setup64\ClassicExplorer64.dll Output\x64 > nul
|
|
copy /B ..\..\build\bin\Setup64\ClassicIEDLL_64.dll Output\x64 > nul
|
|
copy /B ..\..\build\bin\Setup64\ClassicIE_64.exe Output\x64 > nul
|
|
copy /B ..\..\build\bin\Setup64\StartMenu.exe Output\x64 > nul
|
|
copy /B ..\..\build\bin\Setup64\StartMenuDLL.dll Output\x64 > nul
|
|
copy /B ..\..\build\bin\Setup64\StartMenuHelper64.dll Output\x64 > nul
|
|
|
|
copy /B "..\..\build\bin\Skins\Classic Skin.skin" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Full Glass.skin" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Smoked Glass.skin" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Windows Aero.skin" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Windows Basic.skin" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Windows XP Luna.skin" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Windows 8.skin" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Metro.skin" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Classic Skin.skin7" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Windows Aero.skin7" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Windows 8.skin7" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Midnight.skin7" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Metro.skin7" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Metallic.skin7" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Immersive.skin" Output > nul
|
|
copy /B "..\..\build\bin\Skins\Immersive.skin7" Output > nul
|
|
|
|
|
|
REM ********* Collect debug info
|
|
md Output\PDB32
|
|
md Output\PDB64
|
|
md Output\PDBARM64
|
|
|
|
REM Explorer 32
|
|
copy /B ..\..\build\bin\Setup\ClassicExplorer32.pdb Output\PDB32 > nul
|
|
copy /B Output\ClassicExplorer32.dll Output\PDB32 > nul
|
|
copy /B ..\..\build\bin\Setup\ClassicExplorerSettings.pdb Output\PDB32 > nul
|
|
copy /B Output\ClassicExplorerSettings.exe Output\PDB32 > nul
|
|
|
|
REM Explorer 64
|
|
copy /B ..\..\build\bin\Setup64\ClassicExplorer64.pdb Output\PDB64 > nul
|
|
copy /B Output\x64\ClassicExplorer64.dll Output\PDB64 > nul
|
|
|
|
REM Explorer ARM64
|
|
copy /B ..\..\build\bin\SetupARM64\ClassicExplorer64.pdb Output\PDBARM64 > nul
|
|
copy /B Output\ARM64\ClassicExplorer64.dll Output\PDBARM64 > nul
|
|
|
|
REM IE 32
|
|
copy /B ..\..\build\bin\Setup\ClassicIEDLL_32.pdb Output\PDB32 > nul
|
|
copy /B Output\ClassicIEDLL_32.dll Output\PDB32 > nul
|
|
copy /B ..\..\build\bin\Setup\ClassicIE_32.pdb Output\PDB32 > nul
|
|
copy /B Output\ClassicIE_32.exe Output\PDB32 > nul
|
|
|
|
REM IE 64
|
|
copy /B ..\..\build\bin\Setup64\ClassicIEDLL_64.pdb Output\PDB64 > nul
|
|
copy /B Output\x64\ClassicIEDLL_64.dll Output\PDB64 > nul
|
|
copy /B ..\..\build\bin\Setup64\ClassicIE_64.pdb Output\PDB64 > nul
|
|
copy /B Output\x64\ClassicIE_64.exe Output\PDB64 > nul
|
|
|
|
REM IE ARM64
|
|
copy /B ..\..\build\bin\SetupARM64\ClassicIEDLL_64.pdb Output\PDBARM64 > nul
|
|
copy /B Output\ARM64\ClassicIEDLL_64.dll Output\PDBARM64 > nul
|
|
copy /B ..\..\build\bin\SetupARM64\ClassicIE_64.pdb Output\PDBARM64 > nul
|
|
copy /B Output\ARM64\ClassicIE_64.exe Output\PDBARM64 > nul
|
|
|
|
REM Menu 32
|
|
copy /B ..\..\build\bin\Setup\StartMenu.pdb Output\PDB32 > nul
|
|
copy /B Output\StartMenu.exe Output\PDB32 > nul
|
|
copy /B ..\..\build\bin\Setup\StartMenuDLL.pdb Output\PDB32 > nul
|
|
copy /B Output\StartMenuDLL.dll Output\PDB32 > nul
|
|
copy /B ..\..\build\bin\Setup\StartMenuHelper32.pdb Output\PDB32 > nul
|
|
copy /B Output\StartMenuHelper32.dll Output\PDB32 > nul
|
|
copy /B ..\..\build\bin\Release\Update.pdb Output\PDB32 > nul
|
|
copy /B Output\Update.exe Output\PDB32 > nul
|
|
copy /B ..\..\build\bin\Release\DesktopToasts.pdb Output\PDB32 > nul
|
|
copy /B Output\DesktopToasts.dll Output\PDB32 > nul
|
|
|
|
REM Menu 64
|
|
copy /B ..\..\build\bin\Setup64\StartMenu.pdb Output\PDB64 > nul
|
|
copy /B Output\x64\StartMenu.exe Output\PDB64 > nul
|
|
copy /B ..\..\build\bin\Setup64\StartMenuDLL.pdb Output\PDB64 > nul
|
|
copy /B Output\x64\StartMenuDLL.dll Output\PDB64 > nul
|
|
copy /B ..\..\build\bin\Setup64\StartMenuHelper64.pdb Output\PDB64 > nul
|
|
copy /B Output\x64\StartMenuHelper64.dll Output\PDB64 > nul
|
|
|
|
REM Menu ARM64
|
|
copy /B ..\..\build\bin\SetupARM64\StartMenu.pdb Output\PDBARM64 > nul
|
|
copy /B Output\ARM64\StartMenu.exe Output\PDBARM64 > nul
|
|
copy /B ..\..\build\bin\SetupARM64\StartMenuDLL.pdb Output\PDBARM64 > nul
|
|
copy /B Output\ARM64\StartMenuDLL.dll Output\PDBARM64 > nul
|
|
copy /B ..\..\build\bin\SetupARM64\StartMenuHelper64.pdb Output\PDBARM64 > nul
|
|
copy /B Output\ARM64\StartMenuHelper64.dll Output\PDBARM64 > nul
|
|
|
|
REM ********* Source Index PDBs
|
|
|
|
set PDBSTR_PATH="C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\srcsrv\pdbstr.exe"
|
|
|
|
if exist %PDBSTR_PATH% (
|
|
echo --- Adding source index to PDBs
|
|
call CreateSourceIndex.bat ..\.. > Output\pdbstr.txt
|
|
|
|
for %%f in (Output\PDB32\*.pdb) do (
|
|
%PDBSTR_PATH% -w -p:%%f -s:srcsrv -i:Output\pdbstr.txt
|
|
if not ERRORLEVEL 0 (
|
|
echo Error adding source index to PDB
|
|
exit /b 1
|
|
)
|
|
)
|
|
|
|
for %%f in (Output\PDB64\*.pdb) do (
|
|
%PDBSTR_PATH% -w -p:%%f -s:srcsrv -i:Output\pdbstr.txt
|
|
if not ERRORLEVEL 0 (
|
|
echo Error adding source index to PDB
|
|
exit /b 1
|
|
)
|
|
)
|
|
|
|
for %%f in (Output\PDBARM64\*.pdb) do (
|
|
%PDBSTR_PATH% -w -p:%%f -s:srcsrv -i:Output\pdbstr.txt
|
|
if not ERRORLEVEL 0 (
|
|
echo Error adding source index to PDB
|
|
exit /b 1
|
|
)
|
|
)
|
|
)
|
|
|
|
REM ********* Prepare symbols
|
|
|
|
set SYMSTORE_PATH="C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe"
|
|
|
|
%SYMSTORE_PATH% add /r /f Output\PDB32 /s Output\symbols /t OpenShell -:NOREFS > nul
|
|
%SYMSTORE_PATH% add /r /f Output\PDB64 /s Output\symbols /t OpenShell -:NOREFS > nul
|
|
%SYMSTORE_PATH% add /r /f Output\PDBARM64 /s Output\symbols /t OpenShell -:NOREFS > nul
|
|
rd /Q /S Output\symbols\000Admin > nul
|
|
del Output\symbols\pingme.txt > nul
|
|
|
|
rd /Q /S Output\PDB32
|
|
rd /Q /S Output\PDB64
|
|
rd /Q /S Output\PDBARM64
|
|
|
|
REM ********* Build ADMX
|
|
echo --- ADMX
|
|
if exist Output\PolicyDefinitions.zip (
|
|
del Output\PolicyDefinitions.zip
|
|
)
|
|
cd ..\Localization\English
|
|
..\..\..\build\bin\Setup\StartMenu.exe -saveadmx en-US
|
|
@if ERRORLEVEL 1 exit /b 1
|
|
..\..\..\build\bin\Setup\ClassicExplorerSettings.exe -saveadmx en-US
|
|
@if ERRORLEVEL 1 exit /b 1
|
|
..\..\..\build\bin\Setup\ClassicIE_32.exe -saveadmx en-US
|
|
@if ERRORLEVEL 1 exit /b 1
|
|
md en-US
|
|
copy /B *.adml en-US > nul
|
|
7z a ..\..\Setup\Output\PolicyDefinitions.zip *.admx en-US\*.adml PolicyDefinitions.rtf > nul
|
|
rd /Q /S en-US
|
|
cd ..\..\Setup
|
|
|
|
exit /b 0
|