【发布时间】:2018-12-23 23:38:23
【问题描述】:
我不明白为什么下面的行会在已包含具有该名称的部分的 .ini 文件中创建 second 重复部分 frmR。
SetIniString('frmR', 'update', 'true', 'C:\junk\test.ini');
test.ini 文件的内容在安装程序运行后:
我们认为这可能是编码问题(我们使用的是 5.6.1 (u) 版本)。但是十六进制查看器中的部分名称也是相同的:
test.ini 十六进制文件的内容:
test.ini 文件的前后版本在这里:https://drive.google.com/open?id=1vamZxgTvYpAQcOwOnrTpGG63_Bg7i0Js
下面是演示此问题的准系统.iss 文件。在运行之前将test.ini(来自上面的Google Drive 链接)放在一个名为C:\junk 的文件夹中。
[Code]
procedure DeinitializeSetup();
begin
SetIniString('frmR', 'update', 'true', 'C:\junk\test.ini');
end;
我发现只有当该部分是文件中的 first 部分时才会出现此问题。换句话说,下面的文件可以正常工作(没有添加任何重复的部分):
[Test section]
Test=test
[frmR]
Top=28
Left=0
上述发现并没有解决问题,因为我没有简单的方法来确保我正在写入的部分不是文件中的第一部分。
【问题讨论】:
-
您是否在没有 BOM 的情况下进行了测试?
-
@SertacAkyuz 不,我没有在没有 BOM 的情况下进行测试。这些 ini 文件(带有 BOM)由 Inno 创建,因此我认为测试无 BOM 文件不会提供任何额外信息。
-
可能不会。这只是一个想法。
标签: inno-setup ini