Эта секция является необязательной и определяет какие-либо ключи/значения реестра Windows, которые программа установки должна создать, изменить или удалить на системе пользователя.
По умолчанию ключи и значения реестра, созданные программой установки, не удаляются во время деинсталляции приложения. Если необходимо, чтобы деинсталлятор выполнял их удаление, используйте флаг uninsdelete*, который описывается ниже.
Ниже представлен пример секции [Registry].
[Registry] Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
Ниже приведен список поддерживаемых параметров:
Определяет имя корневого раздела реестра. Допустимые значения:
HKCU |
(HKEY_CURRENT_USER) |
HKLM |
(HKEY_LOCAL_MACHINE) |
HKCR |
(HKEY_CLASSES_ROOT) |
HKU |
(HKEY_USERS) |
HKCC |
(HKEY_CURRENT_CONFIG) |
Ещё одно специальное значение:
HKA |
(в режиме административной установки равен HKLM, иначе HKCU) |
Значения HKCU и HKA следует использовать только для настроек, совместимых с перемещаемыми профилями.
Использовать HKCR не рекомендуется. Вместо него используйте HKA с параметром Subkey и значением "Software\Classes".
Значения (включая HKA) могут иметь суффикс 32 или 64. Имена разделов с суффиксом 32 (например, HKLM32) сопоставляются с 32-разрядным представлением реестра; имена разделов с суффиксом 64 (например, HKLM64) сопоставляются с 64-разрядным представлением реестра.
Имя раздела с суффиксом 64 можно использовать только при работе программы установки в 64-разрядной системе Windows, иначе произойдёт ошибка. При создании инсталлятора, поддерживающего обе архитектуры, 32-бит и 64-бит, ошибки можно избежать, добавив параметр Check: IsWin64, который приведет к тому, что при работе в 32-разрядной системе Windows данная запись будет пропущена.
Имя раздела без суффикса (например, HKLM) эквивалентно значению с суффиксом 32 (например, HKLM32), пока инсталлятор не работает в 64-разрядном режиме установки, иначе эквивалентно значению с суффиксом 64 (например, HKLM64).
Root: HKLM
Определяет имя подраздела реестра; может содержать константы.
Subkey: "Software\My Company\My Program"
Определяет тип данных значения. Поддерживаются следующие типы данных:
none |
(по умолчанию) параметр реестра без
значения. В этом случае параметр ValueData игнорируется. |
string |
строковое значение (REG_SZ). |
expandsz |
расширяемое строковое значение (REG_EXPAND_SZ). |
multisz |
многостроковое значение (REG_MULTI_SZ). |
dword |
32-разрядное числовое значение (REG_DWORD). |
qword |
64-разрядное числовое значение (REG_QWORD). |
binary |
двоичное значение (REG_BINARY). |
ValueType: string
Определяет имя параметра; может содержать константы. Если имя является пустой строкой, будет использоваться параметр с именем "Default".
ValueName: "Version"
Определяет значение параметра. Если параметр ValueType имеет значение string, expandsz или multisz, то строка может содержать константы. Если типом данных является dword или qword, это значение может быть десятичным целым числом (например, "123"), шестнадцатеричным целым числом (например, "$7B") или константой, которая преобразуется в целое число. Если тип данных binary, то значение представляет собой последовательность шестнадцатеричных байтов в формате: "00 ff 12 34". Если же тип данных none, этот параметр игнорируется.
Если типом данных является string, expandsz или multisz, в этом параметре можно использовать специальную константу с именем {olddata}. Константа {olddata} заменяется предыдущими данными значения реестра, что удобно использовать в случае необходимости дополнить существующее значение новыми данными, например, {olddata};{app}. Если значение не существует или не является строковым типом данных, константа {olddata} автоматически удаляется. Также она будет автоматически удалена, если создаваемое значение относится к типу multisz, но существующее значение не является многострочным (т.е. это REG_SZ или REG_EXPAND_SZ), и наоборот.
При значении с типом данных multisz в этом параметре можно использовать специальную константу с именем {break} для вставки разрыва строк (нулей).
ValueData: "1.0"
Определяет дополнительные разрешения для получения доступа в раздел реестра, защищенного ACL (списки управления доступом). Не рекомендуется использовать этот параметр, если вы не знакомы с ACL или почему их следует изменять, поскольку его неправильное использование может негативно повлиять на безопасность системы.
Чтобы этот параметр имел эффект, текущий пользователь должен иметь возможность изменять разрешения для раздела реестра. Если эти условия не выполняются, сообщение об ошибке не выводится, и разрешения не устанавливаются.
Этот параметр следует использовать только для частных разделов реестра вашего приложения. Никогда не изменяйте ACL для раздела верхнего уровня, подобно HKEY_LOCAL_MACHINE\SOFTWARE, иначе безопасность пользовательских систем будет нарушена.
Указанные разрешения устанавливаются независимо от того, существовал ли раздел реестра ранее. Разрешения не устанавливаются, если параметр ValueType имеет значение none и используется флаг deletekey или deletevalue.
Параметр может содержать один или более значений, разделённых пробелами, в следующем формате:
<идентификатор пользователя или группы>-<тип доступа>
Для секции [Registry] поддерживаются следующие типы доступа:
Предоставляет разрешение "Полный доступ", аналогичное типу modify (см. ниже), но дополнительно позволяет указанному пользователю/группе стать владельцем раздела реестра и изменить его разрешения. Используется редко; как правило modify вполне достаточно.
Предоставляет разрешение "Модификация", которое позволяет указанному пользователю/группе читать, создавать, изменять и удалять значения и подразделы реестра.
Предоставляет разрешение "Чтение", которое позволяет указанному пользователю/группе читать значения и подразделы реестра.
Permissions: users-modify
Этот параметр представляет собой набор дополнительных опций. Допускается использовать несколько опций, разделяя их пробелами. Поддерживаются следующие опции:
Если указан этот флаг, программа установки создаст параметр только тогда, когда параметра с таким же именем ещё не существует. Этот флаг не работает, если тип данных none или указан флаг deletevalue.
Если указан этот флаг, программа установки сначала попытается удалить весь раздел реестра, если он существует, включая все параметры и подразделы в нём. Затем, если параметр ValueType не имеет значения none, будет создан новый раздел и параметр.
Во избежание сбоев, в процессе установки этот флаг игнорируется, если параметр Subkey является пустым или содержит только символы обратной косой черты.
Если указан этот флаг, программа установки сначала попытается удалить параметр, если он существует. Затем, если параметр ValueType не имеет значения none, будет создан новый раздел, если он ещё не существует, а после новый параметр.
Если указан этот флаг, программа установки не будет пытаться создать раздел или какой-либо параметр, если раздел в системе пользователя уже отсутствует. Никаких сообщений об ошибках показано не будет, если раздел не существует.
Как правило, этот флаг используется в сочетании с флагом uninsdeletekey для удаления разделов в процессе деинсталляции, но не их создания во время установки.
Этот флаг отключает сообщение об ошибке, если программе установке по каким-либо причинам не удаётся создать раздел или параметр.
Применяется только в том случае, если параметр ValueType имеет значение string или expandsz. Если указан этот флаг и параметр ещё не существует или существует, но его значение не является строковым (REG_SZ или REG_EXPAND_SZ), он будет создан с типом данных, указанным в параметре ValueType. Если же параметр существует и является строковым, он будет заменён значением с тем же типом данных, что и предыдущее значение.
После деинсталляции программы, устанавливает для данных параметра пустую строку (тип REG_SZ). Этот флаг нельзя использовать вместе с флагом uninsdeletekey.
После деинсталляции программы, выполняет удаление всего раздела, включая все параметры и подразделы в нём. Очевидно, что использовать его для разделов реестра, к которым обращается Windows, довольно безрассудно. Рекомендуется использовать этот флаг только для частных разделов реестра вашего приложения.
Во избежание сбоев, в процессе установки этот флаг игнорируется, если параметр Subkey является пустым или содержит только символы обратной косой черты.
После деинсталляции программы выполняет удаление раздела реестра, если в нём больше не осталось никаких параметров или подразделов. Этот флаг нельзя использовать вместе с флагом uninsdeletevalue.
Во избежание сбоев, в процессе установки этот флаг игнорируется, если параметр Subkey является пустым или содержит только символы обратной косой черты.
После деинсталляции программы выполняет удаление параметра. Этот флаг нельзя использовать вместе с флагом uninsdeletekeyifempty.
ВНИМАНИЕ: в ранних версиях Inno Setup (до версии 1.1) этот флаг можно использовать типом данных none и он будет работать как флаг "удалить раздел, если он пуст". Этот метод больше не поддерживается. Теперь для этого необходимо использовать флаг uninsdeletekeyifempty.
Flags: uninsdeletevalue