首页 > 解决方案 > Inno Setup 预处理器可以使用 FileOpen 读取文件,但不能使用 ReadIni

问题描述

这是下面提到的现有帖子所需的说明
如何通过从文件中读取来声明 Inno Setup 预处理器变量

.txt使用从文件中读取值FileOpen工作得很好,而.ini使用读取文件ReadIni返回一个空字符串。

从txt文件读取的代码是:

#define VerFile FileOpen("common\GlobalConfig.txt")
#define AppVer FileRead(VerFile)
#expr FileClose(VerFile)
#undef VerFile

txt 文件具有字符串Innovation

从ini文件读取的代码是:

#define AppVer ReadIni("common\GlobalConfig.ini", "Productname", "Product")

ini文件的内容是:

[Productname]
Product=Innovation

这两个文件位于同一文件夹位置。

该文件使用 UTF-8 编码,没有 BOM。我也检查过其他类型的编码,但它只返回空。我用记事本++创建的。

提前致谢!

标签: inno-setupini

解决方案


中的相对路径ReadIni被解析到当前工作目录,特别是在 Inno Setup IDE 中不是脚本目录。

通过使用SourcePath 预定义变量来使用绝对路径:

#define AppVer ReadIni( \
    SourcePath + "\common\GlobalConfig.ini", "Productname", "Product")

对于FileOpenISPP 会自动执行此操作,但对于ReadIni.


虽然不是您的情况,但另一种可能性是 INI 文件有问题。它必须是不带 BOM 的 UTF-8/ASCII 或 UTF-16 LE(带或不带 BOM)。


推荐阅读