Inno Setup使用

功能需要,出一个安装包并写入相关的注册表,在此整理了注册表启动项相关的参考文档。多个资料整合在了一起。

[Registry]
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: ""

[Registry]段下可用来定义安装程序在目标系统中需要创建、修改或者删除的注册表的键/值。

相关参数如下表:

|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 参数 | 说明 | 备注 |
| Root | 根键,必须是下列中的一个: HKCR(HKEY_CLASSES_ROOT) HKCU(HKEY_CURRENT_USER) HKLM(HKEY_LOCAL_MACHINE) HKU(HKEY_USERS) HKCC(HKEY_CURRENT_CONFIG) | 值可带有32或64的后缀,带32后缀的根键值(例:HKCR32)会映射到32位系统注册表,带64后缀的根键值(例:HKCR63)会映射到64位系统注册表。 不带后缀的根键值等于带后缀32的值,除非安装运行在64位系统下,该值等于带后缀64的值。 PS(官方文档):不推荐使用HKCR,可以使用HKA来代替,Subkey设置为"Software\Classes"即可。 |
| Subkey | 子键名,可以包含常量 | |
| ValueType | 值类型,必须是下列中的一个: none string expandsz multisz dword binary | 1、如果指定了:none (默认设置),安装程序将创建一个没有键值的键,在这种情况下,ValueName 和ValueData 参数将被忽略。 2、如果指定了:string,安装程序将创建一个字符串(REG_SZ)值。 3、如果指定了:expandsz,安装程序将创建一个扩展字符串(REG_EXPAND_SZ)值。 4、如果指定了:multisz,安装程序将创建一个多行文本 (REG_MULTI_SZ) 值。 5、如果指定了:dword,安装程序将创建一个32位整数 (REG_DWORD) 值。 6、如果指定了:qdword,安装程序将创建一个64位整数 (REG_QDWORD) 值。 7、如果指定了:binary,安装程序将创建一个二进制 (REG_BINARY) 值。 |
| ValueName | 要创建的值名,可以包含常量,如果是空白的,将写入到"默认"值 | 如果ValueType参数设置为none,这个参数会被忽略。 |
| ValueData | 值的数据 | 如果ValueType参数是string,expandsz或 multisz,这是这一个可以包含常量的字符串。如果数据类型是dword或qdword,这可以是一个十进制整数 (例如"123"),一个十六进制整数 (例如"$7B") 或解析为整数的常量。如果数据类型是binary,这可以是下列形式的十六进制字节序列: "00 ff 12 34"。如果数据类型是none,将被忽略。 在string,expandsz或multisz类型值中,你可以在这个参数中使用一个特殊的常量调用 {olddata}。{olddata} 用先前的注册表值数据替换。如果你想添加一个字串到现有的值中,{olddata} 常量非常有用。例如,{olddata};{app}。如果该值不存在或现有的值不是一个字符串类型,{olddata} 常量将被删除。如果创建的值是一个multisz类型,但现有的值不是多行字符类型(例如,它是REG_SZ或 REG_EXPAND_SZ),{olddata} 常量也将被删除。反这亦然。 在multisz类型值中,你可以在参数中使用一个特殊常量调用 {break} 以插入换行符。 |
| Permissions | 指定登录注册表键ACL (访问控制列表) 的附加权限,该参数只在Windows 2000 或更 高版本中有效,可用的参数是full、modify和read。 如果你不熟悉 ACL 或你不知道为什么要列改,不推荐你使用这个参数,因为误用会导致重大的系统安全问题。 | full:同意"完全控制"许可,与modify相同 (看下面),但又加上允许指定的用户/用户组获取注册表键所有权,并改变它的许可。通常保守的使用modify就足够了。 modify:同意"修改"许可,允许指定的用户/用户组读取、修改和删除注册表值或子键。 read:同意"读取和执行"许可,允许指定的用户/用户组读取注册表值或子键。 |
| Flags | 是额外选项设置。多个选项可以使用空格隔开。支持下面的选项: createvalueifdoesntexist deletekey deletevalue dontcreatekey noerror preservestringtype uninsclearvalue uninsdeletekey uninsdeletekeyifempty uninsdeletevalue | 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:当卸载程序时,设置值数据为空字符 (类型REG_SZ)。这个标记不能与 uninsdeletekey标记组合使用。 uninsdeletekey:当卸载程序时,删除整个键,包含其中的所有值和子键。这对于Windows自身使用的键明显不是一个好方法。你只能用于你的应用程序特有的键中。 为防止意外,安装期间如果Subkey空白或只包含反斜框符号,这个标记被忽略。 uninsdeletekeyifempty:当程序卸载时,如果这个键的内部没有值或子键,则删除这个键。这个标记可以与uninsdeletevalue组合使用为防止意外,安装期间如果Subkey空白或只包含反斜框符号,这个标记被忽略。 uninsdeletevalue:当程序卸载时删除该值。这个标记不能与uninsdeletekeyifempty组合使用。 |

原文链接

相关推荐
躺下睡觉~9 小时前
Unity-Transform类-父子关系
java·unity·游戏引擎
躺下睡觉~9 小时前
Unity-Transform类-缩放和看向
unity·游戏引擎
君莫愁。11 小时前
【Unity】检测鼠标点击位置是否有2D对象
unity·c#·游戏引擎
咩咩觉主12 小时前
Unity实战案例全解析:PVZ 植物卡片状态分析
unity·c#·游戏引擎
蓝裕安15 小时前
伪工厂模式制造敌人
开发语言·unity·游戏引擎
谢泽浩19 小时前
Unity 给模型贴上照片
unity·游戏引擎
z2014z19 小时前
Unity Resource System 优化笔记
unity·游戏引擎
王维志19 小时前
Unity 高亮插件HighlightPlus介绍
unity·游戏引擎
zaizai100720 小时前
我的demo保卫萝卜中的技术要点
unity
菌菌巧乐兹21 小时前
Unity 百度AI实现无绿幕拍照抠像功能(详解版)
人工智能·百度·unity