Inno Setup区段之Registry篇

简述

创建,修改或删除注册表键/值

[Registry]

  • Root: 必需的 【HKCU、HKLM、HKCR、HKU、HKCC】

  • Subkey: 必需的 键值key

  • valueType 值类型 [
    none
    string REG_SZ
    expandsz REG_EXPAND_SZ
    multisz REG_MULTI_SZ
    dword REG_DWORD
    qword REG_QDWORD
    binary REG_BINARY ]

  • valueName key

  • valueData 值

  • Permissions 访问控制权限列表 添加权限

  • Flags
    此参数是一组额外选项。可以通过用空格分隔它们来使用多个选项。支持以下选项:

    createvalueifdoesntexist
    当指定了该标志,安装程序只在如果没有相同名称的值存在时创建值。如果值类型是 none,或如果你指定了 deletevalue 标志,该标志无效。

    deletekey
    当指定了该标志,安装程序在如果条目存在的情况下,先将尝试删除它,包括其中的所有值和子键。如果 ValueType 不是 none,那么它将创建一个新的键和值。

    为防止意外,安装期间如果 Subkey 是空白或只包含反斜杠符号,该标志被忽略。

    deletevalue
    当指定了该标志,安装程序在如果值存在的情况下,先将尝试删除值,如果 ValueType 是 none,那么在键不存在的情况下,它将创建键以及新值。

    dontcreatekey
    当指定了该标志,如果键已经在用户系统中不存在,安装程序将不尝试创建键或值。如果键不存在,不显示错误消息。

    一般来说,这个键与 uninsdeletekey 标志组合使用,在卸载时删除键,但安装时不创建键。

    noerror
    如果安装程序因任何原因创建键或值失败,不显示错误消息。

    preservestringtype
    这只在当 ValueType 参数是 string 或 expandsz 时适用。当指定该标志,并且值不存在或现有的值不是 string 类型(REG_SZ 或 REG_EXPAND_SZ),它将用 ValueType 指定的类型创建。如果值存在,并且是 string 类型,它将用先存在值的相同值类型替换。

    uninsclearvalue
    当卸载程序时,设置值数据为 null 字串(类型 REG_SZ)。该标志不能与 uninsdeletekey 标志组合使用。

    uninsdeletekey
    当卸载程序时,删除整个键,包含其中的所有值和子键。这对于 Windows 自身使用的键明显不是一个好方法。你只能用于你的应用程序特有的键中。

    为防止意外,安装期间如果 Subkey 是空白或只包含反斜杠符号,该标志被忽略。

    uninsdeletekeyifempty
    当程序卸载时,如果这个键的内部没有值或子键,则删除这个键。该标志可以与 uninsdeletevalue 组合使用

    为防止意外,安装期间如果 Subkey 是空白或只包含反斜杠符号,该标志被忽略。

    uninsdeletevalue
    当程序卸载时删除该值。该标志不能与 uninsdeletekeyifempty 组合使用

    注意: 在早于 1.1 的 Inno Setup 版本中,你可以使用该标志连同数据类型 none,那么它的功能与“如果空则删除键”标志一样。这个方法已经不支持了。你必须使用 uninsdeletekeyifempty 标志实现。

code

[Registry]
Root: HKLM; Subkey: "SoftwareMy Company"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "SoftwareMy CompanyMy Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SoftwareMy CompanyMy ProgramSettings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
原文地址:https://www.cnblogs.com/pengsn/p/13344531.html