Visual Studio C ++编译器provides命令行编译器选项/favor:AMD64
和/favor:INTEL64
分别针对AMD64或Intel64处理器进行优化。现在,AMD64和Intel64 are essentially interchangeable这两个术语用于大多数目的,但编译器可以优化are some differences。
在Microsoft Windows 7上,是否有可靠的方法在应用程序安装时检查我们是否在AMD64或INTEL64系统上安装?
我正在使用InnoSetup和WiX作为安装程序,我正在推测选择基于AMD64或INTEL64 CPU安装的版本。
编辑:回顾一些注意事项
最后,来自RRUZ和Andrew Cooper的答案都为解决这个问题提供了很好的可靠策略,但由于它们都不是真正坚定的未来证明,我个人会坚持我项目的默认/favor:blend
。
答案 0 :(得分:5)
您可以使用Win32_Processor
WMi类,从inno设置中您可以毫无问题地执行WMI查询。检查此样本
var
FSWbemLocator : Variant;
FWMIService : Variant;
FWbemObject : Variant;
begin
FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator');
FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', '');
FWbemObject := FWMIService.Get('Win32_Processor');
if FWbemObject.Architecture=9 then //is a 64 bits processor
if FWbemObject.Family=131 then //all 64-bit AMD processors are identified by using a Family attribute value of 0x83 (131).
从这里您可以使用Architecture,Family,Manufacturer和tohers属性来确定处理器类型。
答案 1 :(得分:2)
您可以尝试%PROCESSOR_IDENTIFIER%
环境变量。
在AMD系统上,值以“AuthenticAMD”结束。
在英特尔系统上,值以“GenuineIntel”结尾。
(至少对于我检查过的少数系统)
答案 2 :(得分:1)