当前位置: 首页 > 知识库问答 >
问题:

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

岳朝
2023-03-14

所以问题出现了,我有许多安装,其中大多数东西都是一样的,当然除了安装中的文件。我有一套不同的包含文件。

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

当我试图使用< code>#include中的信息时,问题出现了。预处理器似乎对Pascal脚本一无所知。有道理,除了我想让它知道。例如,我不能这样做:

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

或者这个:

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

所以真正的问题是:我如何设置一个#包括来包含我在命令行参数中设置的路径文件?或者其他一些动态方法…我能想到一个。我只是不喜欢我的方式:我不喜欢移动文件或动态更改文件内容的想法,我想,我的/这个/这些解决方案闻起来。还有更好的方法吗?

我在版本5.5.6(u)的Inno安装。

共有1个答案

伯逸明
2023-03-14

只需使用预处理器变量:

#include IncludePath

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

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

< code>/D开关的含义:

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

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

例如,对于基于< code>AppName的名称,请使用:

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

请注意,仅当调用< code>SetupSetting预处理器函数的< code>#include指令位于相应的< code>[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]部分以及其他指令和文件。

 类似资料:
  • 我正在使用Visual Studio Code,但我无法运行“在路径中安装代码命令”选项,因为当我键入Shift Ctrl P时,此命令不会出现。我正在使用Windows 10和最新版本的Visual Studio Code。 我尝试了许多步骤来解决我的问题,但没有成功。以下是我所做的: 重新安装了Visual Studio Code(最新版本),并检查了要添加到PATH变量的选项。不起作用。 打

  • 我试图使用jackson databind's的ObjectMapper(不使用maven),但无法将相应的ObjectMapper类集成到我的程序中。 我的文件结构: First.java: run.sh: 我得到以下错误: 我做错了什么?请帮忙

  • 本文向大家介绍找Python安装目录,设置环境路径以及在命令行运行python脚本实例,包括了找Python安装目录,设置环境路径以及在命令行运行python脚本实例的使用技巧和注意事项,需要的朋友参考一下 第一点:找Python安装目录 方法一: 方法二: 输入import sys print(sys.path) 化黑线处 第二点:找到安装目录后就可以开始设置环境变量 这里我的安装目录为C:\P

  • ENV_SUPATH path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/sbin:/usr/local/scripts ENV_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/local/games:/usr/games:/usr/local/scripts

  • 问题内容: 我正在测试一些解析命令行输入的python代码。有没有办法通过IDLE传递此输入?目前,我正在保存在IDLE编辑器中,并从命令提示符处运行。 我正在运行Windows。 问题答案: 似乎IDLE没有提供通过GUI进行此操作的方法,但是您可以执行以下操作: 您也可以手动设置,例如: (信用http://wayneandlayne.com/2009/04/14/using-command-

  • Swagger提出了一个类似的问题:重用枚举定义作为查询参数。我的问题是我是否可以使用枚举(可重用或不可重用)。每当我尝试这样做的时候,我都会得到错误,但是使用字符串不会给出任何错误 我的问题是上面的例子是否有效,或者我应该尝试什么可能的改变。我使用的是OpenAPI 3.0.0。 错误: 我对XX.client知之甚少.cpp .它是一个自动生成的文件,是在编译yaml文件后构建的。