Visual Studio C++编译器 提供 命令行编译器选项 /favor:AMD64
和 /favor:INTEL64
分别针对AMD64或Intel64处理器进行优化。现在,AMD64和Intel64这两个术语 基本上可以互换 在大多数情况下,但有 有所不同 编译器可以优化的。
在Microsoft Windows 7上,有没有一种可靠的方法可以在应用程序安装时检查我们是安装在AMD64还是INTEL64系统上?
我是用InnoSetup和WiX来安装程序的,我猜测是根据AMD64或INTEL64 CPU来选择安装的版本。
编辑:回想起来的一些注意事项
最后,来自 RRUZ 和 Andrew Cooper 两者都给出了很好的处理这个问题的坚实策略,但由于它们都没有真正坚定地证明未来,我个人将坚持默认的策略。/favor:blend
的项目。
你可以使用 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和其他属性来确定处理器的类型。
你可以试试 %PROCESSOR_IDENTIFIER%
环境变量。
在AMD系统中,该值以 "AuthenticAMD "结尾。
在Intel系统中,该值以 "GenuineIntel "结尾。
(至少在我检查过的所有系统中是这样的)