常量{pf}是
的目录C:\ Program Files
用于32位系统和
C:\ Program Files(x86)
适用于64位系统。
但是我想使用目录
C:\ Program Files
适用于32和64位系统。我怎样才能做到这一点?
答案 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;