Проблема: Рекурсивное открытие окна настроек при попытке их сохранения

Актуальность проблемы: актуальна

Версия ОС: любая

Версия ABTool: любая выше 0.5.2

Исходные случаи:

  1. ABTool запускается. Происходит приостановка загрузки и в левом верхнем углу экрана отображается окно настроек.
  2. ABTool запущена. Окно настроек открыто. На вкладке «Пакеты» имя одного из пакетов было убрано.

Поведение:

  1. Нажатие на кнопку «Сохранить» открывает всё новое и новое окно настроек на вкладке «Пакеты».
  2. Нажатие на кнопку «Закрыть» приводит к закрытию всех окон настроек.

Причина: в одной или обеих секциях пользовательских пакетов файла настроек abtool.ini неверно указан номер последнего использованного пакета. Этот номер ссылается на неуказанный файл пакета.

Описание проблемы:

Случай 1.

Работа с настройками разделена на несколько фаз. При открытии окна настроек из файла abtool.ini они считываются. На данный момент всегда выбран какой-то пакет, например, сейчас это третий пакет софта. Окно открывается, считанные настройки отобразились.

Например, теперь третий пакет программ стал не нужен и мы убираем его название из соответствующей строки.

Нажимаем на кнопку «Сохранить». Настройки сохранились, после чего они снова считываются из файла в память, обнуляя прежние, и применяются.

Когда применяются настройки, происходит и считывание пакетов. Но последний использованный (выбранный и отображённый в главном окне) пакет у нас был как раз третьим. В этом и заключается проблема.

В самом файле настроек творится следующее:

...
[UserSoftPackages]
UserSoftPkg1=soft.package1.ini
UserSoftPkg2=soft.package2.ini
UserSoftPkg3=
LastUserSoftPkg=3
...

Фактически происходит попытка загрузить неуказанный пакет. В этот момент и открывается очередное окно настроек, как раз после программного выбора третьего пакета (как если бы его выбрали через выпадающее меню на вкладке «Программы»). Если бы в нашем случае LastUserSoftPkg был = 1, то первый пакет успешно бы и загрузился.

Случай 2.

Если закрыть все окна настроек, то отобразится главное окно с какой-то белибердой в списке:

В случае с пакетом программ
Пример в случае с пакетом программ
В случае с пакетом утилит
Пример в случае с пакетом утилит

Временное решение:

  • нажать на кнопку «Закрыть» ИЛИ нажать на кнопку «Сброс», после чего — «Сохранить» (настройки будут утеряны!);
  • исправить ABTool.ini вручную:
    • значения параметров LastUserSoftPkg или LastUserToolPkg выставить =0;
    • обязательно проверить верность значений параметров UserSoftPkgX или UserToolPkgX;
  • проверить существование и корректность всех файлов пакетов.

    Ссылка на этот пост добавлена в раздел «Известные ошибки».