【问题标题】:Innosetup passing in var from [setup] to procedure in [code]Innosetup 将 var 从 [setup] 传递到 [code] 中的过程
【发布时间】:2014-07-27 06:35:14
【问题描述】:

我有类似的东西:

[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 传递到我的程序中?我希望它被声明为一个字符串,这样我就可以对其执行字符串操作

【问题讨论】:

  • 您是在询问如何在脚本中确定您是在进行 32 位还是 64 位安装?
  • 如果您只是在寻找架构,您可以在代码中使用它:ProcessorArchitecturejrsoftware.org/ishelp/…

标签: inno-setup


【解决方案1】:

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

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

或者,鉴于无论如何这在编译时已修复,您可以使用 ISPP 条件:

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

但是这种代码一开始确实没有多大意义——它所做的只是让你在编译时分别制作 32 位和64 位安装程序,完全不管用户实际拥有什么。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-03
    • 2014-05-19
    • 2017-10-08
    • 2017-10-14
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多