Ну, кому свежих багов отсыпать? К автору сего "творения" обращаться бесполезно - парень на баг-репорты отвечает просто "Не вижу необходимости исправлять!". Пары месяцев бодания с ним и в итоге
не исправленного бага ( не просто так он там до сих пор висит!) хватило.
На сей раз баг снова в старом месте, Reg2Nsis. Только поковарнее будет. Проявляется он просто - при конвертации автомат убирает ведущие нули сдвигая строку вывода в NSH-файле влево. Итог - например сбитые параметры запуска программы, на что я в Far Manager SE2 нарвался. Причём доказать себе, что это именно баг конвертера, а не моя собственная ошибка стоило времени и сил. Вот какие параметры имеет конвертер:
Цитата: Reg2Nsis version 0.14 (C) Artem Zankovich <aarrtteemm@nm.ru>
Converts registry informarion into NSIS-script commands
Usage:
Reg2Nsis (reg-file | reg-key) [-r] [(-o nsis-file | -O)]
Parameters:
reg-file -- take values from the specified REG-file
reg-key -- take values from the specified registry key
-r -- iterate through registry subkeys recurrently (if
source is registry key)
-o nsis-file -- send output to the specified file
-O -- send output to the file with the same name as
inputed REG-file but with the .nsh file extention
-s -- disable special folder substitution
параметра управления удалением/усечением символов в них нет, следовательно мы вправе ожидать получения не искажённой информации, но....
Вот вам пример:
test1.reg:
Цитата: REGEDIT4
[HKEY_CURRENT_USER\Software\Far2\System]
"ElevationMode"=dword:ffffffff
test2.reg:
Цитата: REGEDIT4
[HKEY_CURRENT_USER\Software\Far2\System]
"ElevationMode"=dword:0fffffff
Обратите внимание на значение и размер строки:
размер строки 4 байта, 8 hex-цифр, и значения:
в первом случае "ElevationMode"=dword:
ffffffff , а во втором "ElevationMode"=dword:
0fffffff
И вот результат конверсии:
первый случай:
WriteRegDWORD HKEY_CURRENT_USER "Software\Far2\System" "ElevationMode" 0xffffffff
значение содержит 8 цифр
И второй случай:
WriteRegDWORD HKEY_CURRENT_USER "Software\Far2\System" "ElevationMode" 0xfffffff
значение содержит 7 цифр - это что за фортеля
внешне, на первый взгляд всё выглядит правильно,
но! посчитайте во первых число цифр, и во во вторых сравните значения на входе конвертера и его выходе. На лицо потеря данных и их искажение.
В итоге параметры запуска программы сбиваются, и как проявление этого видим такой диалог на ровном месте:
получается, что мне по милости этого халтурщика придётся в том же Far Manager SE2 перелопачивать вручную почти 170 Кб реестровый скрипт, не говоря уже о других проектах - видимо не менее 1/3 баг-репортов по ним были заложены этим его решением "убирать ведущие нули". Да, это допустимо в некоторых случаях, но если это цифровые значения такой фортель не допустим абсолютно. А если по его милости будет изменён код запуска ядерной ракеты? И что потом говорить что из-за его художеств мы получили вторую Хиросиму? Да за такие вещи надо башку отрывать вместе со всем что выступает за пределы корпуса ещё в роддоме.