我可以在 Inno Setup 安装程序中使用脚本和命令行参数选择 #include 路径吗?

问题描述 投票:0回答:1

因此,当我进行了多次安装时,问题就出现了,其中除了安装中的文件之外,大多数内容都是相同的。我有一套不同的包含文件。

所以我想,“嘿,让我们简单地添加一个命令行参数来指定要包含的文件。”我可以从 Pascal 代码中的命令行参数获取信息。

当我尝试使用

#include
中的信息时,问题就出现了。预处理器似乎对 Pascal 脚本一无所知。这是有道理的,只是我想让它知道。例如,我不能这样做:

[Files]
#include "{code:GetMyArgument}"

或者这个:

[Files]
#include {param:foo|bar}

所以问题确实是:如何设置

#include
来包含我在命令行参数中设置的路径文件?或者其他一些动态方法......我能想到一个。我只是不喜欢我的方式:我不喜欢为此移动文件或动态更改文件内容的想法,我认为我的/这个/这些解决方案有味道。有更好的办法吗?

我使用的是 Inno Setup 5.5.6(u) 版本。

command-line-arguments inno-setup pascalscript
1个回答
1
投票

只需使用预处理器变量:

#include IncludePath

并在编译器的命令行上指定其值:

ISCC.exe Example1.iss /DIncludePath=Other.iss

/D
开关的含义:

/D<name>[=<value>] Emulate #define public <name> <value>

如果您使用的 Inno Setup IDE 不支持设置编译器的命令行参数(如 Inno Script Studio),您可以将包含的脚本的文件名基于某些安装程序的选项,如

AppId
AppName
OutputBaseFilename
等等

例如,对于基于

AppName
的名称,请使用:

#include SetupSetting("AppName") + ".iss"

请注意,仅当

#include
指令(调用
SetupSetting
预处理器函数
)位于相应的
[Setup]
节指令之后时才有效。


另一种选择是反转包含。

主要

.iss
是特定于项目的,它包括共享
.iss
:

特定于项目

.iss

; Project-specific settings
[Setup]
AppId=id
AppName=name

[Files]  
; Project specific files

; Include shared script
#include "shared.iss"

请注意,如果这些部分重复,也完全没问题。因此

shared.iss
可以再次包含
[Setup]
[Files]
部分以及其他指令和文件。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.