我想在包含文件中嵌套包含文件。为什么我不能在 Inno Setup 中这样做?

I want to nest include files inside include files. Why cant I do that in Inno Setup?

假设我有一个 Inno 安装文件(我们称它为 master.iss),文件部分如下:

[Files]
#include PathToIncludeFile\IncludeFile.iss

效果很好。 IncludeFile.iss 的内容被有效地插入到 #include 所在的 master.iss 文件中。

所以现在我希望 #include 文件的内容嵌套在更多包含中。所以 IncludeFile.iss 看起来像这样:

#include C:\PathToFile\FileWithRealFilesDataForProject1.iss
#include C:\PathToFile\FileWithRealFilesDataForProject2.iss
#include C:\PathToFile\FileWithRealFilesDataForProject3.iss
#include C:\PathToFile\FileWithRealFilesDataForProject4.iss
#include C:\PathToFile\FileWithRealFilesDataForProject5.iss
#include C:\PathToFile\FileWithRealFilesDataForProject6.iss

Inno Setup 编译 Master.iss 的编译器会说

(File: PathToIncludeFile\IncludeFile.iss \n Line 1: \n Column 11:)
[ISSP] Undeclaired Identifier C"

我想我可以用批处理文件或其他东西来实现我想要的,但是如果我可以用嵌套的 #includes 来做到这一点会更直接。

顺便说一句:我当前的 Inno Setup 编译器是 5.5.6 (u)

您可以嵌套包含文件。


您的问题是在 Inno Setup 预处理器中,字符串文字必须用双引号(或单引号)引起来,例如:

#include "C:\PathToFile\FileWithRealFilesDataForProject1.iss"

当您省略引号时,预处理器会尝试将 #include 参数解释为表达式。因此它将 C(前导字母数字序列)视为标识符。

请参阅 Inno Setup 预处理器文档中的这些主题:


出于同样的原因,您的主要包含(您在 post 中的方式)也不会编译。您必须用双引号将其括起来。

为此:

#include PathToIncludeFile\IncludeFile.iss

我得到

[ISPP] Undeclared identifier: "PathToIncludeFile".

(符合预期)