如何读取Pascal代码中的[Setup]参数?

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

如何读取 Pascal 代码中

[Setup]
部分(即
Uninstallable
)中设置的参数?

我之所以需要知道生成的软件包是否可卸载,是因为就绪页面上显示的信息(Windows“添加/删除”显示中的软件包名称)。如果包裹是

Uninstallable=no
,那么该信息没有意义,所以我不应该在就绪页面上显示它!

非常感谢您的任何提示!

inno-setup
2个回答
4
投票

您可以使用

SetupSetting
预处理器函数 在脚本的其他位置发出
Setup
节指令(
Code
或不):

[Setup]
Uninstallable=no
[Code]
...
if '{#SetupSetting('Uninstallable')}' = 'yes' then ...

这会导致:

if 'no' = 'yes' then ...

相关问题:如何在[Code]部分使用Inno Setup预处理器指令?


虽然我实际上发现你的解决方案更好。但为了类型安全并避免诸如区分大小写的比较或引用值之类的问题,我会这样做:

#define Uninstallable false

[Setup]
Uninstallable={#Uninstallable ? "yes" : "no"}
[Code]
...
if {#Uninstallable ? 'True' : 'False'} then ...

这会提高效率:

if False then ...

或者实际上,如果您只是想跳过整个代码块,请执行以下操作:

[Code]
...
#if Uninstallable
// Do something
#endif

这会导致没有代码,当不是“可卸载”时,效率更高,并且还减少了安装程序的大小。


然后更常见的是只测试预处理器定义是否存在:

//#define Uninstallable
[Setup]
#ifndef Uninstallable
Uninstallable=no
#endif
[Code]
...
#ifdef Uninstallable
// Do something
#endif

1
投票

我的“问题”可以通过以下方式解决:

#define uninstallable "no"
...
[Setup]
...
Uninstallable="{#uninstallable}"
...
[code]
...
if {#uninstallable} = 'yes' then ...

有了这个

uninstallable
在帕斯卡代码中就已知了。不是很优雅但可能。我还想知道
[Setup]
中的参数是否可以从pascal代码中读取?

© www.soinside.com 2019 - 2024. All rights reserved.