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

标签 inno-setup

如何读取 [Setup] 部分中的参数集,即 Pascal 代码中的 Uninstallable

我需要知道生成的包是否可卸载的原因是准备页面上显示的信息(Windows 添加/删除显示中的包名称)。如果包是 Uninstallable=no,则该信息没有意义,所以我不应该在就绪页面上显示它!

非常感谢任何提示!

最佳答案

您可以使用 SetupSetting preprocessor function在脚本的其他地方发出 Setup 部分指令(Code 或不):

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

这导致:

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

相关问题:How to use Inno Setup preprocessor directive in [Code] section?


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

#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

关于inno-setup - 如何读取 Pascal 代码中的 [Setup] 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73672934/

相关文章:

return-value - 从命令行应用程序将字符串值传递给 Inno Setup

vb.net - 隔离的存储内容是否在更新后仍然存在?

inno-setup - Innosetup 添加多个 exe 文件并在主设置中执行

c# - 将字符串数组从 C# 返回到 Inno Setup

inno-setup - 我选择使用 Inno Setup 6.1.1 下载的文件是否必须位于 [Files] 部分?

windows - 我是否必须为 64 位 Windows 上的 Inno 设置留出余地?

inno-setup - 使用 Inno Setup 编译后检测到恶意软件

installation - 如何在 Inno 设置中更改鼠标光标?

inno-setup - 当未在 InputFilePage (CreateInputFilePage) 上选择文件时如何禁用 NextButton?

winapi - 更改环境值后Innosetup SendMessage