我不知道为什么下面的行在已经包含该名称的节的文件中创建第二个重复节。frmR
.ini
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
(从上面的谷歌云端硬盘链接)命名的文件夹中C:\junk
运行前。
[Code]
procedure DeinitializeSetup();
begin
SetIniString('frmR', 'update', 'true', 'C:\junk\test.ini');
end;
我发现仅当该部分是文件中的第一部分时,才会出现此问题。换句话说,下面的文件可以正常工作(不添加任何重复的部分):
[Test section]
Test=test
[frmR]
Top=28
Left=0
上面的发现不能解决问题,因为我没有简单的方法来确保要写入的部分不是文件的第一部分。
正如@Sertac所说,肯定是BOM。我认为Inno Setup不会使用BOM创建INI文件。BOM表位于第一个部分名称的前面。INI文件读取/写入功能认为文件的第一行无效-不会将其标识为节开头。删除物料清单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句