Inno设置:使用" Program Files"使用{pf}的32位/ 64位系统上的目录

时间:2016-07-18 18:31:48

标签: windows architecture installer inno-setup

常量{pf}是

的目录
  

C:\ Program Files

用于32位系统和

  

C:\ Program Files(x86)

适用于64位系统。

但是我想使用目录

  

C:\ Program Files

适用于32和64位系统。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

使用scripted constant之类的:

0,064

虽然只应使用此方法,但如果您在运行中为相应平台生成二进制文件。与您的情况一样,如果理解正确,则为相应的体系结构编译Java二进制文件。

如果安装程序中有单独的32位和64位二进制文​​件,请使用以下脚本:

[Setup]
DefaultDirName={code:GetProgramFiles}\My Program

[Code]

function GetProgramFiles(Param: string): string;
begin
  if IsWin64 then Result := ExpandConstant('{pf64}')
    else Result := ExpandConstant('{pf32}')
end;

另见:

答案 1 :(得分:1)

如果您使用单个安装程序进行64位和32位安装,那么您应该使用ArchitecturesInstallIn64BitMode安装指令。这将在64位系统上安装时将{pf}和其他脚本常量更改为64位版本,在32位系统上安装时将更改为32位版本。

您显然也希望在Martin的示例中使用Check,以确保您只安装了正确的二进制文件。

例如:

#define MyAppName "MyAwesomeApp"
[Setup]
ArchitecturesInstallIn64BitMode=x64
AppName={#MyAppName}
DefaultDirname={pf}\{#MyAppName}

[Files]
Source: "MyApp_32bit.exe"; DestDir: "{app}"; Check not Is64BitinstallMode;
Source: "MyApp_64bit.exe"; DestDir: "{app}"; Check Is64BitinstallMode;