Innosetup将[setup]中的var传递给[code]中的过程

时间:2014-07-24 21:49:31

标签: inno-setup

我有类似的东西:

[Setup]
ArchitecturesInstallIn64BitMode = {#MyArchInstallIn64BitMode}

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  Value: String;
  I: Integer;
  LogList: TStringList;
begin
if (ArchitecturesInstallIn64BitMode = 'x64') then begin
//code
end else begin
//else code
end;

其中ArchitecturesInstallIn64BitMode是一个包含。如何将ArchitecturesInstallIn64BitMode传递给我的程序?我希望它被声明为一个字符串,所以我可以对它执行字符串操作

1 个答案:

答案 0 :(得分:0)

根据您在问题中发布的代码,您可以这样做:

if '{#MyArchInstallIn64BitMode}' = 'x64' then begin

或者,鉴于这在编译时是固定的,您可以使用ISPP条件:

#if MyArchInstallIn64BitMode == "x64"
   ...
#endif

但是这种代码在开始时确实没有多大意义 - 它只是让你在编译时分开32-位和64位安装程序,完全不管用户实际拥有的内容。

查看Inno附带的64BitTwoArch.iss示例脚本,该脚本演示了如何制作适用于32位和64位安装的单个安装程序,这是首选方法。

即使这样,只有在您实际拥有32位和64位版本的应用程序时才有用。如果您的应用程序仅为32位(这是最常见的情况),那么您通常根本不需要做任何事情 - Inno的默认行为将在32位和64位上正确安装它视窗。