.ini文件中的第一节标题由Inno Setup复制

时间:2018-12-23 23:38:24

标签: inno-setup ini

我不知道为什么下面的行在frmR文件中创建一个 second 重复节.ini,该文件已经包含具有该名称的节。

SetIniString('frmR', 'update', 'true', 'C:\junk\test.ini');

运行安装程序后test.ini文件 的内容:

enter image description here

我们认为这可能是编码问题(我们正在使用5.6.1(u)版本)。但是十六进制查看器中的节名称也相同:

test.ini文件的内容以十六进制表示:

enter image description here

test.ini文件之前和之后的版本在这里:https://drive.google.com/open?id=1vamZxgTvYpAQcOwOnrTpGG63_Bg7i0Js

下面是演示此问题的准系统.iss文件。在运行之前,将test.ini(来自上面的Google云端硬盘链接)放在名为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

上面的发现不能解决问题,因为我没有简单的方法来确保要写入的部分不是文件的第一部分。

1 个答案:

答案 0 :(得分:1)

正如@Sertac所说,肯定是BOM。我认为Inno Setup不会使用BOM创建INI文件。 BOM表位于第一个部分名称的前面。 INI文件读取/写入功能认为文件的第一行无效-不会将其标识为节开头。删除物料清单。