我正在使用InnoSetup创建安装程序,并在[Code]部分中编写了一些自定义处理程序。在其中一个处理程序中,我希望能够检索AppName部分中定义的[Setup]的值(或者可能是其他参数的值)。我有办法吗?我看过了documentation,但是还没有找到任何可以执行此操作的东西。我们的InnoSetup文件实际上是由我们的构建过程生成的,该过程将我们所有程序之间通用且特定于程序的片段拼接在一起,因此为每个程序在代码中定义常量将很不方便。有什么方便的方法吗?

我正在寻找类似的东西

MyString := ExpandConstant('{AppName}');

除了{AppName}不是定义的常数。有什么方法可以查询[Setup]部分中定义的参数?

最佳答案

这是一个构建时间常数,而不是安装时间值。因此,您可以使用Inno Setup Preprocessor附加组件来定义此类常量。 (您可以通过QuickStart pack轻松安装它)。

定义常量:

#define AppName "Excellent Foo App"

[Setup]中使用常量:
AppName={#AppName}

在Pascal代码中,我不太确定语法,但是类似:
MyString := {#AppName}

更新:我意识到我的一个脚本使用了{#emit SetupSetting("AppId")},这更容易。 Brian's solution也发现了这种方法,并且效果更好。

07-24 09:49