Inno Setup:基于PC架构禁用组件

Noc*_*ckm 2 inno-setup

我正在使用Inno Setup,它有两个组件:一个用于32位机器,另一个用于64位.这些将在XP/Vista/Win7上运行.

[Components]
Name: Bin/32; Description: 32-bit; Types: full; Flags: dontinheritcheck
Name: Bin/64; Description: 64-bit; Types: full; Flags: dontinheritcheck
Run Code Online (Sandbox Code Playgroud)

目前:

  • 运行安装程序时,默认情况下会勾选两个组件.

我想要的是:

  • 一个适当的默认值(即32位或64位勾选),具体取决于用户的机器.
  • 弄清楚不合适的组件也是一个奖励.

到目前为止我发现的是:

  • 我可能想在[Code]部分使用Pascal.
  • IsWin64功能
  • 我可能想要使用一个事件,但我找不到任何与我的需求有关的事情.

PS不幸的是我无法为每个架构安装单独的安装程序.

RRU*_*RUZ 8

您可以在C:\Program Files\Inno Setup 5\Examples 文件夹中查看有关如何使用单个安装程序为不同体系结构安装程序的示例.

检查这些文件

  • 64BitThreeArch.iss
  • 64BitTwoArch.iss
  • 64Bit.iss

你可以使用这样的东西

[Components]
Name: Bin_32; Description: 32-bit; Types: full; Check: IsX86; Flags: dontinheritcheck
Name: Bin_64; Description: 64-bit; Types: full; Check: IsX64; Flags: dontinheritcheck

[Code]
function IsX64: Boolean;
begin
  Result := Is64BitInstallMode and (ProcessorArchitecture = paX64);
end;

function IsX86: Boolean;
begin
  Result := (Is64BitInstallMode=false) and (ProcessorArchitecture = paX86);
end;
Run Code Online (Sandbox Code Playgroud)