inno-setup - 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。我也检查过其他类型的编码,但它只返回空。我用记事本++创建的。
提前致谢!
解决方案
中的相对路径ReadIni
被解析到当前工作目录,特别是在 Inno Setup IDE 中不是脚本目录。
通过使用SourcePath
预定义变量来使用绝对路径:
#define AppVer ReadIni( \
SourcePath + "\common\GlobalConfig.ini", "Productname", "Product")
对于FileOpen
ISPP 会自动执行此操作,但对于ReadIni
.
虽然不是您的情况,但另一种可能性是 INI 文件有问题。它必须是不带 BOM 的 UTF-8/ASCII 或 UTF-16 LE(带或不带 BOM)。
推荐阅读
- reactjs - 在 ReactJs 中迭代地图
- python - 如何密码保护我的 mlflow 门户
- google-apps-script - 如何使用脚本将实时(实时)数据从一个选项卡保存到另一个选项卡
- c# - EXCEL的C#OLEDB连接不能循环工作
- angular - 使用角度在 CRUD 表中添加值
- python - 如何使用分段模型库解决问题
- r - wordcloud 编码问题 R shinyapps.io,UTF-8 无法正确呈现
- java - Flux.onErrorContinue() 空对象
- python - sentimental analysis only for one review.. here's the code what supposed to be second argument for classifier.fit(new_X_test, )?
- r - Stringr:从 data.frame 列中的字符串中提取所有匹配项。搜索字符串的 Data.frame 和向量非常大(>10k)