gpt4 book ai didi

delphi - 如何选择处理器架构来使用 Delphi 安装 MSI

转载 作者:行者123 更新时间:2023-12-03 02:48:39 26 4
gpt4 key购买 nike

好消息:主要版本即将发布!

坏消息:我刚刚发现(晚了 2 周)有些人的计算机上没有 MSXML 6,而我们推出的新安装程序需要它。

好消息:我们可以分发 MSI 文件来安装 MSXML

坏消息:共有三个 MSI 文件可供选择,一个是“正常”文件,一个以 ia64 结尾,一个以 x64 结尾。

我有 Delphi 7、C++ 和嗯...批处理文件...我如何制作一个方便的 Setup.exe,它可以选择正确的 MSI 自动启动。

最佳答案

简短回答:使用GetSystemInfo Windows API 函数可查明系统是 32 位还是 64 位。

示例代码:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils, Windows;

var
si: TSystemInfo;

const
PROCESSOR_ARCHITECTURE_AMD64 = 9;
PROCESSOR_ARCHITECTURE_IA64 = 6;
PROCESSOR_ARCHITECTURE_INTEL = 0;
PROCESSOR_ARCHITECTURE_UNKNOWN = $FFFF;

begin

GetSystemInfo(si);
case si.wProcessorArchitecture of
PROCESSOR_ARCHITECTURE_AMD64: Writeln('AMD64');
PROCESSOR_ARCHITECTURE_IA64: Writeln('IA64');
PROCESSOR_ARCHITECTURE_INTEL: Writeln('Intel');
PROCESSOR_ARCHITECTURE_UNKNOWN: Writeln('Unknown');
end;

Readln;

end.

两个最常见的输出是“Intel”(32 位 x86)和“AMD64”(64 位 x64)。事实上,您或多或少可以相信您会得到其中之一。

现在,实际上,我相信上面的程序总是返回“Intel”(32位x86),因为所有Delphi应用程序都是32位的,因此它们是在64位下模拟的位 Windows(使用 WOW64)——Delphi 编译器和 IDE 没有 64 位版本。

因此,要获得系统的真实架构,无论仿真如何,您都必须使用 GetNativeSystemInfo功能。该函数没有包装器,因此您必须自己从 kernel32.dll 导入它。

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils, Windows;

var
si: TSystemInfo;

const
PROCESSOR_ARCHITECTURE_AMD64 = 9;
PROCESSOR_ARCHITECTURE_IA64 = 6;
PROCESSOR_ARCHITECTURE_INTEL = 0;
PROCESSOR_ARCHITECTURE_UNKNOWN = $FFFF;

procedure GetNativeSystemInfo(var lpSystemInfo: TSystemInfo); stdcall; external kernel32 name 'GetNativeSystemInfo';

begin

GetNativeSystemInfo(si);
case si.wProcessorArchitecture of
PROCESSOR_ARCHITECTURE_AMD64: Writeln('AMD64');
PROCESSOR_ARCHITECTURE_IA64: Writeln('IA64');
PROCESSOR_ARCHITECTURE_INTEL: Writeln('Intel');
PROCESSOR_ARCHITECTURE_UNKNOWN: Writeln('Unknown');
end;

Readln;

end.

关于delphi - 如何选择处理器架构来使用 Delphi 安装 MSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3449294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com