Making 1 installer for arm64 and x64 Windows

This commit is contained in:
Thomas Charlier 2025-03-07 15:11:25 +01:00
parent b4ec0f00a2
commit 7d91395680
2 changed files with 124 additions and 5 deletions
cardcomm/minidriver/makemsi
installers/quickinstaller

View file

@ -1,5 +1,5 @@
;
;Belgium eID Smartcard Minidriver for an x86 and x64 based package.
;Belgium eID Smartcard Minidriver for an x86 and x64 and arm64 based package.
;
[Version]
@ -8,10 +8,11 @@ Class=SmartCard
ClassGuid={990A2BD7-E738-46c7-B26F-1CF8FB9F1391}
Provider=%BOSA%
CatalogFile=beidmdrv.cat
DriverVer=02/02/2022,5.0.27.1
;PnpLockdown=1
DriverVer=02/28/2025,5.1.23.1
;MMDDYYYY
[Manufacturer]
%BOSA%=Bosa,NTamd64.6.1,NTx86.6.1
%BOSA%=Bosa,NTarm64.10.0,NTamd64.6.1,NTx86.6.1
;Windows 7 and beyond, 64bit amd64
[Bosa.NTamd64.6.1]
@ -25,7 +26,14 @@ DriverVer=02/02/2022,5.0.27.1
%BosaCardDeviceName%=Bosa32_61_Install,SCFILTER\CID_a503010101ad1311
%BosaCardDeviceName%=Bosa32_61_Install,SCFILTER\CID_80318065b085040120120fff829000
;Windows 10 and beyond, arm64
[Bosa.NTarm64.10.0]
%BosaCardDeviceName%=Bosa64_100_Install,SCFILTER\CID_a503010101ad1310
%BosaCardDeviceName%=Bosa64_100_Install,SCFILTER\CID_a503010101ad1311
%BosaCardDeviceName%=Bosa64_100_Install,SCFILTER\CID_80318065b085040120120fff829000
[SourceDisksFiles]
beidmdrv_arm64.dll=1
beidmdrv64.dll=1
beidmdrv32.dll=1
@ -92,6 +100,33 @@ beidmdrv32.dll
[wow64_CopyFiles]
beidmdrv32.dll
[Bosa64_100_Install.NT]
CopyFiles=arm64_CopyFiles
AddReg=AddRegDefaultArm64
Include=umpass.inf
Needs=UmPass
[Bosa64_100_Install.NT.Services]
Include=umpass.inf
Needs=UmPass.Services
[Bosa64_100_Install.NT.HW]
Include=umpass.inf
Needs=UmPass.HW
[Bosa64_100_Install.NT.CoInstallers]
Include=umpass.inf
Needs=UmPass.CoInstallers
[Bosa64_100_Install.NT.Interfaces]
Include=umpass.inf
Needs=UmPass.Interfaces
[arm64_CopyFiles]
beidmdrv_arm64.dll
[AddRegDefault32]
HKLM, %SmartCardName%,"ATR",0x00000001,3b,98,00,40,00,a5,03,01,01,01,ad,13,00
HKLM, %SmartCardName%,"ATRMask",0x00000001,ff,ff,00,ff,00,ff,ff,ff,ff,ff,ff,ff,00
@ -126,6 +161,23 @@ HKLM, %SmartCardName_v18%,"80000001",0x00000000,"beidmdrv64.dll"
HKLM, %SmartCardName_v18%,"80000100",0x00000000,"en-US,Please enter your PIN;en-EN,Please enter your PIN;nl-BE,Geef uw PIN in;nl-NL,Geef uw PIN in;fr-BE,Entrez votre code PIN;fr-FR,Entrez votre code PIN;de-DE,Bitte geben Sie Ihre PIN ein"
HKLM, %SmartCardName_v18%,"80000103",0x00000000,"en-US,Please enter your PIN;en-EN,Please enter your PIN;nl-BE,Geef uw PIN in;nl-NL,Geef uw PIN in;fr-BE,Entrez votre code PIN;fr-FR,Entrez votre code PIN;de-DE,Bitte geben Sie Ihre PIN ein"
[AddRegDefaultArm64]
HKLM, %SmartCardName%,"ATR",0x00000001,3b,98,00,40,00,a5,03,01,01,01,ad,13,00
HKLM, %SmartCardName%,"ATRMask",0x00000001,ff,ff,00,ff,00,ff,ff,ff,ff,ff,ff,ff,00
HKLM, %SmartCardName%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider"
HKLM, %SmartCardName%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider"
HKLM, %SmartCardName%,"80000001",0x00000000,"beidmdrv_arm64.dll"
HKLM, %SmartCardName%,"80000100",0x00000000,"en-US,Please enter your PIN;en-EN,Please enter your PIN;nl-BE,Geef uw PIN in;nl-NL,Geef uw PIN in;fr-BE,Entrez votre code PIN;fr-FR,Entrez votre code PIN;de-DE,Bitte geben Sie Ihre PIN ein"
HKLM, %SmartCardName%,"80000103",0x00000000,"en-US,Please enter your PIN;en-EN,Please enter your PIN;nl-BE,Geef uw PIN in;nl-NL,Geef uw PIN in;fr-BE,Entrez votre code PIN;fr-FR,Entrez votre code PIN;de-DE,Bitte geben Sie Ihre PIN ein"
HKLM, %SmartCardName_v18%,"ATR",0x00000001,3b,7f,96,00,00,80,31,80,65,b0,85,04,01,20,12,0f,ff,82,90,00
HKLM, %SmartCardName_v18%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
HKLM, %SmartCardName_v18%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider"
HKLM, %SmartCardName_v18%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider"
HKLM, %SmartCardName_v18%,"80000001",0x00000000,"beidmdrv_arm64.dll"
HKLM, %SmartCardName_v18%,"80000100",0x00000000,"en-US,Please enter your PIN;en-EN,Please enter your PIN;nl-BE,Geef uw PIN in;nl-NL,Geef uw PIN in;fr-BE,Entrez votre code PIN;fr-FR,Entrez votre code PIN;de-DE,Bitte geben Sie Ihre PIN ein"
HKLM, %SmartCardName_v18%,"80000103",0x00000000,"en-US,Please enter your PIN;en-EN,Please enter your PIN;nl-BE,Geef uw PIN in;nl-NL,Geef uw PIN in;fr-BE,Entrez votre code PIN;fr-FR,Entrez votre code PIN;de-DE,Bitte geben Sie Ihre PIN ein"
[AddRegWOW64]
HKLM, %SmartCardNameWOW64%,"ATR",0x00000001,3b,98,00,40,00,a5,03,01,01,01,ad,13,00
HKLM, %SmartCardNameWOW64%,"ATRMask",0x00000001,ff,ff,00,ff,00,ff,ff,ff,ff,ff,ff,ff,00
@ -147,6 +199,7 @@ HKLM, %SmartCardNameWOW64_v18%,"80000103",0x00000000,"en-US,Please enter your PI
amd64_CopyFiles=10,system32
x86_CopyFiles=10,system32
wow64_CopyFiles=10,syswow64
arm64_CopyFiles=10,system32
; =================== Generic ==================================
@ -158,4 +211,4 @@ BosaCardDeviceName="Belgium eID Minidriver for Smart Card"
SmartCardName="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\Beid"
SmartCardNameWOW64="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\Beid"
SmartCardName_v18="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\Beid_v18"
SmartCardNameWOW64_v18="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\Beid_v18"
SmartCardNameWOW64_v18="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\Beid_v18"

View file

@ -44,6 +44,9 @@ caption $(ls_caption)
Var lastname
Var firstletterthirdname
Var firstname
Var VCMajor
Var VCMinor
Var VCBld
Var nsdCustomDialog
Var Label
@ -128,7 +131,70 @@ Section "Belgium Eid Crypto Modules" BeidCrypto
StrCpy $FAQ_url "https://eid.belgium.be/"
${If} ${RunningX64}
${If} ${IsNativeARM64}
ClearErrors
StrCpy $FileToCopy "$INSTDIR\BeidMW_arm64.msi"
File "..\eid-mw\Windows\bin\BeidMW_arm64.msi"
IfErrors 0 +2
Call ErrorHandler_file
ClearErrors
ReadRegDWORD $VCMajor HKLM SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\arm64 Major
ReadRegDWORD $VCMinor HKLM SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\arm64 Minor
ReadRegDWORD $VCBld HKLM SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\arm64 Bld
${If} $VCMajor < 14
${AndIf} $VCMinor < 42
${AndIf} $VCBld < 34433
DetailPrint "Installing Visual Studio Redistributable package..."
ExecWait '"$PLUGINSDIR\VC_redist.arm64.exe" /q /norestart'
Delete "$PLUGINSDIR\VC_redist.arm64.exe"
DetailPrint "Done"
${Else}
DetailPrint "More recent version of VC++ Redistributable already installed"
${EndIf}
StrCpy $LogFile "$INSTDIR\log\install_eidmwarm64_log.txt"
StrCpy $TempFile "$INSTDIR\log\1612_count.txt"
;delete previous log
;Delete "$LogFile"
ExecWait 'msiexec /quiet /norestart /log "$LogFile" /i "$INSTDIR\BeidMW_arm64.msi"' $MsiResponse
;for testing
;StrCpy $MsiResponse 1603
;StrCpy $TestLogFile "$INSTDIR\log\install_eidmw64_error_1612_log.txt"
${Switch} $MsiResponse
${Case} 1603
;general failure, parse through the log file to find the root cause
;check if error 1612 occured
;for testing
;ExecWait 'cmd.exe /C FIND "1612" "$TestLogFile" | FIND /C "error code 1612" > "$TempFile"' $retval
ExecWait 'cmd.exe /C FIND "1612" "$LogFile" | FIND /C "error code 1612" > "$TempFile"' $retval
!insertmacro GetFirstLineOfFile $TempFile $firstLine
DetailPrint "MSI error 1612, count = $firstLine"
StrCmp "$firstLine" "" +2 0
StrCmp "$firstLine" "0" 0 MSI_1612_Error_arm64
${Break}
${Case} 1612
MSI_1612_Error_arm64:
DetailPrint "$(ls_errorinstallmsi_1612) $\r$\n $(ls_error) = $MsiResponse"
;Refer to the FAQ where the user can find a manuel to manually repair the registry, or to run a MS tool that does the cleanup
StrCpy $FAQ_url "$(ls_errorinstallmsi_1612_FAQurl)"
;The installation source for this product is not available. Verify that the source exists and that you can access it.
;often caused by registry not cleaned when cleanup tools remove previously installed msi files
${Break}
${Case} 1622
;install log failure, try to install without logging
ExecWait 'msiexec /quiet /norestart /i "$INSTDIR\BeidMW_arm64.msi"' $MsiResponse
${Break}
${Default}
DetailPrint "MsiResponse = $MsiResponse"
${Break}
${EndSwitch}
;IfErrors 0 +2
; Call ErrorHandler_msiexec
;WriteRegDWORD HKCU "Software\BEID\Installer\Components" "BeidCrypto64" 0x1
Delete "$INSTDIR\BeidMW_arm64.msi"
${elseif} ${RunningX64}
ClearErrors
StrCpy $FileToCopy "$INSTDIR\BeidMW_64.msi"
File "..\eid-mw\Windows\bin\BeidMW_64.msi"