Заголовок первого раздела в файле .ini дублируется программой Inno Setup. - PullRequest
0 голосов
/ 24 декабря 2018

Я не могу понять, почему строка ниже создает секунду дублирующую секцию frmR в .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

A дои после версии файла test.ini здесь: https://drive.google.com/open?id=1vamZxgTvYpAQcOwOnrTpGG63_Bg7i0Js

Ниже приведен файл barebones .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

Приведенное выше обнаружение не решает проблему, поскольку у меня нет простого способа убедиться, что раздел I 'Запись не является первым разделом в файле.

1 Ответ

0 голосов
/ 24 декабря 2018

Как уже прокомментировал @Sertac, это, конечно, спецификация.Я не думаю, что Inno Setup создает INI-файлы с BOM.Спецификация находится непосредственно перед именем первого раздела.Функции чтения / записи файла INI считают первую строку вашего файла недействительной - не идентифицируют ее как начало раздела.Снимите спецификацию.

...