如何在Wix中设置MSI安装包根据系统架构(x64/ARM64)安装对应文件?
Windows 多架构统一安装包最简实现方案
你不需要自己编写自定义操作调用系统API,目前主流的Windows安装打包工具都已经内置了对应能力,直接通过配置即可实现需求:
如果你使用MSI系打包工具(Wix/Visual Studio Installer等)
Windows Installer 5.0(Windows 10及以上系统默认预装)已经内置了架构相关的系统属性,会自动根据运行环境填充值,你只需要给不同架构的组件加安装条件即可:
- 原生ARM64 Windows运行安装包时,内置属性
ARM64值为1 - x64 Windows运行安装包时,内置属性
x64值为1
x64二进制组件安装条件:
NOT ARM64 AND VersionNT64
ARM64二进制组件安装条件:ARM64
如果你使用NSIS打包
NSIS 3.08及以上版本已经封装好了架构检测宏,直接在文件拷贝逻辑里加判断即可:
${If} ${IsARM64} File /r "bin\arm64\*" ${ElseIf} ${IsX64} File /r "bin\x64\*" ${EndIf}
如果你使用Inno Setup打包
Inno Setup 6.2及以上版本内置了IsArm64判断函数,直接在文件段加条件配置即可:
[Files] Source: "bin\x64\*"; DestDir: "{app}"; Check: not IsArm64; ArchitecturesInstallIn64BitMode: x64 Source: "bin\arm64\*"; DestDir: "{app}"; Check: IsArm64; ArchitecturesInstallIn64BitMode: arm64
以上方案都不需要编写任何自定义调用系统API的逻辑,仅通过打包工具的内置能力即可满足需求。
内容的提问来源于stack exchange,提问作者Tobi
相关产品推荐
相关产品推荐

