Skip to content

Commit f07dd08

Browse files
committed
Add ARM64 support to installer
NB: WiX 3.14.0.3910 or higher is required to create the MSI
1 parent 81a3756 commit f07dd08

12 files changed

+258
-68
lines changed

Src/BUILDME.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Visual Studio 2019 (Community Edition is enough)
1010
- Windows 10 SDK (10.0.19041.0) for Desktop C++
1111
- Visual C++ ATL support
1212
HTML Help Workshop
13-
WiX 3.7
13+
WiX 3.14
1414
7-Zip
1515
It is possible to convert the projects to newer versions of Visual Studio and newer SDKs.
1616
Newer versions of WiX will probably work fine.

Src/Setup/BuildBinaries.bat

+60-23
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
if exist Output rd /Q /S Output
22
md Output
33
md Output\x64
4+
md Output\ARM64
45

56
echo -- Compiling
67

78
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\
89

9-
REM ********* Build 64-bit solution
10-
echo --- 64bit
10+
REM ********* Build ARM64 solution
11+
echo --- ARM64
12+
"%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Rebuild /p:Configuration="Setup" /p:Platform="ARM64" /verbosity:quiet /nologo
13+
@if ERRORLEVEL 1 exit /b 1
14+
15+
REM ********* Build x64 solution
16+
echo --- x64
1117
"%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Rebuild /p:Configuration="Setup" /p:Platform="x64" /verbosity:quiet /nologo
1218
@if ERRORLEVEL 1 exit /b 1
1319

1420
REM ********* Build 32-bit solution (must be after 64-bit)
15-
echo --- 32bit
21+
echo --- x86
1622
"%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Rebuild /p:Configuration="Setup" /p:Platform="Win32" /verbosity:quiet /nologo
1723
@if ERRORLEVEL 1 exit /b 1
1824

@@ -49,6 +55,13 @@ copy /B ..\StartMenu\Setup64\StartMenu.exe Output\x64 > nul
4955
copy /B ..\StartMenu\Setup64\StartMenuDLL.dll Output\x64 > nul
5056
copy /B ..\StartMenu\StartMenuHelper\Setup64\StartMenuHelper64.dll Output\x64 > nul
5157

58+
copy /B ..\ClassicExplorer\SetupARM64\ClassicExplorerARM64.dll Output\ARM64 > nul
59+
copy /B ..\ClassicIE\SetupARM64\ClassicIEDLL_ARM64.dll Output\ARM64 > nul
60+
copy /B ..\ClassicIE\SetupARM64\ClassicIE_ARM64.exe Output\ARM64 > nul
61+
copy /B ..\StartMenu\SetupARM64\StartMenu.exe Output\ARM64 > nul
62+
copy /B ..\StartMenu\SetupARM64\StartMenuDLL.dll Output\ARM64 > nul
63+
copy /B ..\StartMenu\StartMenuHelper\SetupARM64\StartMenuHelperARM64.dll Output\ARM64 > nul
64+
5265
copy /B "..\StartMenu\Skins\Classic Skin.skin" Output > nul
5366
copy /B "..\StartMenu\Skins\Full Glass.skin" Output > nul
5467
copy /B "..\StartMenu\Skins\Smoked Glass.skin" Output > nul
@@ -67,29 +80,40 @@ copy /B "..\StartMenu\Skins\Metallic.skin7" Output > nul
6780

6881
REM ********* Collect debug info
6982
md Output\PDB32
70-
md Output\PDB64
83+
md Output\PDBx64
84+
md Output\PDBARM64
7185

7286
REM Explorer 32
7387
copy /B ..\ClassicExplorer\Setup\ClassicExplorer32.pdb Output\PDB32 > nul
7488
copy /B Output\ClassicExplorer32.dll Output\PDB32 > nul
7589
copy /B ..\ClassicExplorer\Setup\ClassicExplorerSettings.pdb Output\PDB32 > nul
7690
copy /B Output\ClassicExplorerSettings.exe Output\PDB32 > nul
7791

78-
REM Explorer 64
79-
copy /B ..\ClassicExplorer\Setup64\ClassicExplorer64.pdb Output\PDB64 > nul
80-
copy /B Output\x64\ClassicExplorer64.dll Output\PDB64 > nul
92+
REM Explorer x64
93+
copy /B ..\ClassicExplorer\Setup64\ClassicExplorer64.pdb Output\PDBx64 > nul
94+
copy /B Output\x64\ClassicExplorer64.dll Output\PDBx64 > nul
95+
96+
REM Explorer ARM64
97+
copy /B ..\ClassicExplorer\SetupARM64\ClassicExplorerARM64.pdb Output\PDBARM64 > nul
98+
copy /B Output\ARM64\ClassicExplorerARM64.dll Output\PDBARM64 > nul
8199

82100
REM IE 32
83101
copy /B ..\ClassicIE\Setup\ClassicIEDLL_32.pdb Output\PDB32 > nul
84102
copy /B Output\ClassicIEDLL_32.dll Output\PDB32 > nul
85103
copy /B ..\ClassicIE\Setup\ClassicIE_32.pdb Output\PDB32 > nul
86104
copy /B Output\ClassicIE_32.exe Output\PDB32 > nul
87105

88-
REM IE 64
89-
copy /B ..\ClassicIE\Setup64\ClassicIEDLL_64.pdb Output\PDB64 > nul
90-
copy /B Output\x64\ClassicIEDLL_64.dll Output\PDB64 > nul
91-
copy /B ..\ClassicIE\Setup64\ClassicIE_64.pdb Output\PDB64 > nul
92-
copy /B Output\x64\ClassicIE_64.exe Output\PDB64 > nul
106+
REM IE x64
107+
copy /B ..\ClassicIE\Setup64\ClassicIEDLL_64.pdb Output\PDBx64 > nul
108+
copy /B Output\x64\ClassicIEDLL_64.dll Output\PDBx64 > nul
109+
copy /B ..\ClassicIE\Setup64\ClassicIE_64.pdb Output\PDBx64 > nul
110+
copy /B Output\x64\ClassicIE_64.exe Output\PDBx64 > nul
111+
112+
REM IE ARM64
113+
copy /B ..\ClassicIE\SetupARM64\ClassicIEDLL_ARM64.pdb Output\PDBARM64 > nul
114+
copy /B Output\ARM64\ClassicIEDLL_ARM64.dll Output\PDBARM64 > nul
115+
copy /B ..\ClassicIE\SetupARM64\ClassicIE_ARM64.pdb Output\PDBARM64 > nul
116+
copy /B Output\ARM64\ClassicIE_ARM64.exe Output\PDBARM64 > nul
93117

94118
REM Menu 32
95119
copy /B ..\StartMenu\Setup\StartMenu.pdb Output\PDB32 > nul
@@ -103,14 +127,21 @@ copy /B Output\Update.exe Output\PDB32 > nul
103127
copy /B ..\Update\DesktopToasts\Release\DesktopToasts.pdb Output\PDB32 > nul
104128
copy /B Output\DesktopToasts.dll Output\PDB32 > nul
105129

106-
REM Menu 64
107-
copy /B ..\StartMenu\Setup64\StartMenu.pdb Output\PDB64 > nul
108-
copy /B Output\x64\StartMenu.exe Output\PDB64 > nul
109-
copy /B ..\StartMenu\Setup64\StartMenuDLL.pdb Output\PDB64 > nul
110-
copy /B Output\x64\StartMenuDLL.dll Output\PDB64 > nul
111-
copy /B ..\StartMenu\StartMenuHelper\Setup64\StartMenuHelper64.pdb Output\PDB64 > nul
112-
copy /B Output\x64\StartMenuHelper64.dll Output\PDB64 > nul
113-
130+
REM Menu x64
131+
copy /B ..\StartMenu\Setup64\StartMenu.pdb Output\PDBx64 > nul
132+
copy /B Output\x64\StartMenu.exe Output\PDBx64 > nul
133+
copy /B ..\StartMenu\Setup64\StartMenuDLL.pdb Output\PDBx64 > nul
134+
copy /B Output\x64\StartMenuDLL.dll Output\PDBx64 > nul
135+
copy /B ..\StartMenu\StartMenuHelper\Setup64\StartMenuHelper64.pdb Output\PDBx64 > nul
136+
copy /B Output\x64\StartMenuHelper64.dll Output\PDBx64 > nul
137+
138+
REM Menu ARM64
139+
copy /B ..\StartMenu\SetupARM64\StartMenu.pdb Output\PDBARM64 > nul
140+
copy /B Output\ARM64\StartMenu.exe Output\PDBARM64 > nul
141+
copy /B ..\StartMenu\SetupARM64\StartMenuDLL.pdb Output\PDBARM64 > nul
142+
copy /B Output\ARM64\StartMenuDLL.dll Output\PDBARM64 > nul
143+
copy /B ..\StartMenu\StartMenuHelper\SetupARM64\StartMenuHelperARM64.pdb Output\PDBARM64 > nul
144+
copy /B Output\ARM64\StartMenuHelperARM64.dll Output\PDBARM64 > nul
114145

115146
REM ********* Source Index PDBs
116147

@@ -124,7 +155,11 @@ if exist %PDBSTR_PATH% (
124155
%PDBSTR_PATH% -w -p:%%f -s:srcsrv -i:Output\pdbstr.txt
125156
)
126157

127-
for %%f in (Output\PDB64\*.pdb) do (
158+
for %%f in (Output\PDBx64\*.pdb) do (
159+
%PDBSTR_PATH% -w -p:%%f -s:srcsrv -i:Output\pdbstr.txt
160+
)
161+
162+
for %%f in (Output\PDBARM64\*.pdb) do (
128163
%PDBSTR_PATH% -w -p:%%f -s:srcsrv -i:Output\pdbstr.txt
129164
)
130165
)
@@ -134,12 +169,14 @@ REM ********* Prepare symbols
134169
set SYMSTORE_PATH="C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe"
135170

136171
%SYMSTORE_PATH% add /r /f Output\PDB32 /s Output\symbols /t OpenShell -:NOREFS > nul
137-
%SYMSTORE_PATH% add /r /f Output\PDB64 /s Output\symbols /t OpenShell -:NOREFS > nul
172+
%SYMSTORE_PATH% add /r /f Output\PDBx64 /s Output\symbols /t OpenShell -:NOREFS > nul
173+
%SYMSTORE_PATH% add /r /f Output\PDBARM64 /s Output\symbols /t OpenShell -:NOREFS > nul
138174
rd /Q /S Output\symbols\000Admin > nul
139175
del Output\symbols\pingme.txt > nul
140176

141177
rd /Q /S Output\PDB32
142-
rd /Q /S Output\PDB64
178+
rd /Q /S Output\PDBx64
179+
rd /Q /S Output\PDBARM64
143180

144181
REM ********* Build ADMX
145182
echo --- ADMX

Src/Setup/BuildInstaller.bat

+17-6
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ md Temp
3636
@set /a "CS_VERSION_NUM=%%A<<24|%%B<<16|%%C"
3737
)
3838

39-
REM ********* Build 32-bit MSI
40-
echo --- 32bit MSI
41-
candle Setup.wxs -nologo -out Temp\Setup32.wixobj -ext WixUIExtension -ext WixUtilExtension -dx64=0 -dCS_LANG_FOLDER=%CS_LANG_FOLDER% -dCS_LANG_NAME=%CS_LANG_NAME%
39+
REM ********* Build x86 MSI
40+
echo --- x86 MSI
41+
candle Setup.wxs -nologo -out Temp\Setup32.wixobj -ext WixUIExtension -ext WixUtilExtension -dx64=0 -dARM64=0 -dCS_LANG_FOLDER=%CS_LANG_FOLDER% -dCS_LANG_NAME=%CS_LANG_NAME%
4242
@if ERRORLEVEL 1 exit /b 1
4343

4444
@REM We need to suppress ICE38 and ICE43 because they apply only to per-user installation. We only support per-machine installs
@@ -47,9 +47,9 @@ light Temp\Setup32.wixobj -nologo -out Temp\Setup32.msi -ext WixUIExtension -ext
4747
@if ERRORLEVEL 1 exit /b 1
4848

4949

50-
REM ********* Build 64-bit MSI
51-
echo --- 64bit MSI
52-
candle Setup.wxs -nologo -out Temp\Setup64.wixobj -ext WixUIExtension -ext WixUtilExtension -dx64=1 -dCS_LANG_FOLDER=%CS_LANG_FOLDER% -dCS_LANG_NAME=%CS_LANG_NAME%
50+
REM ********* Build x64 MSI
51+
echo --- x64 MSI
52+
candle Setup.wxs -nologo -out Temp\Setup64.wixobj -ext WixUIExtension -ext WixUtilExtension -dx64=1 -dARM64=0 -dCS_LANG_FOLDER=%CS_LANG_FOLDER% -dCS_LANG_NAME=%CS_LANG_NAME%
5353
@if ERRORLEVEL 1 exit /b 1
5454

5555
@REM We need to suppress ICE38 and ICE43 because they apply only to per-user installation. We only support per-machine installs
@@ -58,6 +58,17 @@ light Temp\Setup64.wixobj -nologo -out Temp\Setup64.msi -ext WixUIExtension -ext
5858
@if ERRORLEVEL 1 exit /b 1
5959

6060

61+
REM ********* Build ARM64 MSI
62+
echo --- ARM64 MSI
63+
candle Setup.wxs -nologo -out Temp\SetupARM64.wixobj -ext WixUIExtension -ext WixUtilExtension -dx64=0 -dARM64=1 -dCS_LANG_FOLDER=%CS_LANG_FOLDER% -dCS_LANG_NAME=%CS_LANG_NAME%
64+
@if ERRORLEVEL 1 exit /b 1
65+
66+
@REM We need to suppress ICE38 and ICE43 because they apply only to per-user installation. We only support per-machine installs
67+
@REM We need to suppress ICE09 because the helper DLLs need to go into the system directory (for safety reasons)
68+
light Temp\SetupARM64.wixobj -nologo -out Temp\SetupARM64.msi -ext WixUIExtension -ext WixUtilExtension -loc ..\Localization\%CS_LANG_FOLDER%\OpenShellText-%CS_LANG_NAME%.wxl -loc ..\Localization\%CS_LANG_FOLDER%\WixUI_%CS_LANG_NAME%.wxl -sice:ICE38 -sice:ICE43 -sice:ICE09
69+
@if ERRORLEVEL 1 exit /b 1
70+
71+
6172
REM ********* Build MSI Checksums
6273
echo --- MSI Checksums
6374
Utility\Release\Utility.exe crcmsi Temp

0 commit comments

Comments
 (0)