Inno Setup:使用{pf}在32位/ 64位系统上使用“Program Files”目录

常量{pf}是的目录

C:\ Program Files文件

对于32位系统和

C:\ Program Files(x86)

为64位系统。

但是我想使用该目录

C:\ Program Files文件

对于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; 

尽管只能使用这种方法,但如果您在运行中为各个平台生成二进制文件。 就像你的情况一样,如果理解正确的话,你可以编译相应体系结构的Java二进制文件。


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

 [Files] Source: "MyDll32.dll"; DestDir: "{pf32}\My Program"; Check: not IsWin64 Source: "MyDll64.dll"; DestDir: "{pf64}\My Program"; Check: IsWin64 

也可以看看:

  • 可以在inno setup(32或64位)中设置安装模式吗?
  • Inno Setup 32位和64位dll安装

如果您使用一个安装程序进行64位和32位安装,那么您应该使用ArchitecturesInstallIn64BitMode设置指令。 这将改变{pf}和其他脚本常量在64位系统上安装时的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;