Понадобилось тут добавить ключи из REG-файла в код своего инсталлятора на NSIS. Оказывается, все придумано до нас. Имеется утилита Reg2Nsis, которая этим и занимается.
reg2nsis REG-файл [ПАРАМЕТРЫ]
или
reg2nsis ключ_реестра [ПАРАМЕТРЫ]
Т.е. утилита может преобразовать в код NSIS, как содержимое REG-файла, так и данные непосредственно из реестра.
Параметры:
-r
— обработать ключ реестра со всеми подключами, начиная с указанного. Срабатывает только если в качестве источника указан путь в реестре.
-o <файл>
— код будет сохранен в указанный файл
Если вместо -o <файл>
указать ключ -O
, то код будет сохранен в файл с именем, аналогичным указанному REG-файлу, но с расширением .nsh
Без дополнительных параметров, код NSIS будет выведен на консоль (stdout
)
Программа смотрит в настройки системы и автоматически преобразует стандартные системные пути в стандартные переменные NSIS. Например, встретившийся путь C:\Windows\
будет преобразован в $WINDIR\
.
Это можно отключить, добавив в командной строке ключ -s
.
При анализе REG-файла, программа распознает как добавление ключа/значения, что понятно, так и команду на его удаление.
Т.е. запись в REG-файле:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\oem-drv64]
будет преобразована в:
WriteRegStr HKEY_LOCAL_MACHINE "SYSTEM\CurrentControlSet\services\oem-drv64" "" ""
А запись:
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\oem-drv64]
преобразуется в следующий код:
DeleteRegKey HKEY_LOCAL_MACHINE "SYSTEM\CurrentControlSet\services\oem-drv64"