因此,当我有许多安装时,除了安装中的文件之外,大部分都是相同的,问题就出现了。我有一套不同的包含文件。
所以我想,“嘿,让我们简单地添加一个命令行参数来指定要包含的文件。”我可以从Pascal代码中的命令行参数中获得信息。
当我尝试使用#include中的信息时,问题就出现了。预处理器似乎对Pascal脚本一无所知。这是有道理的,但我想知道。例如,我不能这样做:
[Files]
#include "{code:GetMyArgument}"或者这个:
[Files]
#include {param:foo|bar}所以问题是:我如何设置一个#include来包含我在命令行参数中设置的路径文件?或者其他一些动态方法。我能想到一个。我只是不喜欢我的方式:我不喜欢为这个动态移动文件或更改文件内容的想法,我想我的/这个/这些解决方案闻起来很难闻。有更好的办法吗?
我在版本5.5.6(u)的Inno设置。
发布于 2016-02-02 15:37:04
只需使用预处理变量:
#include IncludePath并在编译器的命令行中指定其值:
ISCC.exe Example1.iss /DIncludePath=Other.issswitch的意义
/D<name>[=<value>] Emulate #define public <name> <value>如果您使用的Inno安装IDE不支持设置编译器的命令行参数(如Inno脚本Studio),则可以将包含的脚本的文件名基于某些安装程序的选项,如AppId、AppName、OutputBaseFilename等。
例如,对于基于AppName的名称,请使用:
#include SetupSetting("AppName") + ".iss"请注意,只有在调用 preprocessor function的 preprocessor function指令位于相应的[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]部分以及其他指令和文件。
https://stackoverflow.com/questions/35157359
复制相似问题