如何在NSIS安装程序中检测ARM64系统及不支持SHA256的Windows系统?
NSIS 3.x 系统检测问题解答
ARM64系统检测
NSIS 3.04及后续版本(包括你使用的3.10)已经内置ARM64检测能力,无需自行编写DLL。可以通过两种方式实现:
- 直接调用系统API获取原生架构:
!include LogicLib.nsh Function CheckARM64 System::Call 'kernel32::GetNativeSystemInfo(ptr)' Pop $0 IntOp $0 $0 & 0xFF ; IMAGE_FILE_MACHINE_ARM64 对应值为 0xAA64 ${If} $0 == 0xAA64 ; 此处添加ARM64系统的处理逻辑(如退出或分支执行) ${EndIf} FunctionEnd
- 使用NSIS内置的
${GetRunningArch}宏,返回值会包含ARM64标识。
不支持SHA256的Windows系统检测
SHA256支持从Windows Vista/Server 2008开始提供,Windows XP及更早版本不支持。直接通过NSIS内置的版本检测宏即可判断:
!include WinVer.nsh Function CheckSHA256Support ${If} ${IsWinXP} MessageBox MB_OK "当前系统不支持SHA256,安装程序将退出" Quit ${Else} ; 系统支持SHA256,继续执行安装流程 ${EndIf} FunctionEnd
结论
不需要自行编写DLL,NSIS本身通过内置宏和系统API调用就能实现这两项检测功能。3.04版本针对Windows 10和ARM64的优化已整合到这些基础能力中,无需额外插件。
内容的提问来源于stack exchange,提问作者tux Neoh
相关产品推荐
相关产品推荐

