如何调用外部iss脚本并使用Code部分下的主要Inno Setup脚本中的函数?

时间:2016-10-10 09:55:44

标签: inno-setup

我有一个Inno安装脚本,其中包含一些基本内容的代码部分。但我还有另一个Inno Setup脚本文件(.iss)专门处理Windows服务。我想直接从我的主脚本中调用这些函数/过程。那么我如何#includeservices.iss文件放入我的主脚本中,以便我可以从Code部分调用其函数?

我在网上看到了一些示例,说明如何使用此方法拆分文件部分,这很好,但我希望能够在安装之间使用通用代码脚本拆分代码部分。我可以在这里和那里找到它的提及,但它没有告诉你如何做到这一点。

1 个答案:

答案 0 :(得分:1)

正如您自己提到的,请使用#include pre-processor directive

如果你有一个像common.pas这样的公共代码文件:

procedure CommonProcedure;
begin
  { ... }
end;

您可以将其包含在主.iss脚本中,例如:

[Code]

#include "common.pas"

function InitializeSetup(): Boolean;
begin
  { Calling procedure included from the common.pas }
  CommonProcedure;

  Result := True;
end;

扩展名并不重要。我使用.pas作为文件,它纯粹是一个Pascal(脚本)代码。但如果您更喜欢.iss,那么这是您的选择。尽管如此,从语法上来说,将部分名称包含在文件中会更合适:

[Code]

procedure CommonProcedure;
begin
  { ... }
end;

并在[Code]部分的外部包含文件:

#include "common.pas"

[Code]

function InitializeSetup(): Boolean;
begin
  { Calling procedure included from the common.pas }
  CommonProcedure;

  Result := True;
end;

这种方法甚至可以为您提供更大的灵活性,例如如果你需要一些代码支持文件:

[Files]
Source: "InnoCallback.dll"; Flags: dontcopy

[Code]

procedure CommonProcedure;
begin
  { ... }
end;

(虽然它只是编码风格的问题。从技术上讲,它并不重要,因为这些部分可以以任何方式混合。所以你可以有[Code]部分,其次是按[Files]部分,然后是另一个[Code]部分。