dontcreatekey
如果指定了此标志,则如果用户的密钥不存在,安装程序将不会尝试创建密钥或任何值 系统。如果密钥不存在,则不会显示错误消息。
通常,此标志与
uninsdeletekey
标志结合使用,用于在卸载期间删除密钥但不创建它们 在安装过程中。
我的程序在“当前用户”自动启动部分下创建一个注册表值(类型为string
),但前提是用户在设置屏幕中明确这样做。
我希望卸载程序清理该条目,因此我将以下内容添加到我的Inno Setup项目中:
[Registry]
Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "this_is_a_test"; Flags: dontcreatekey uninsdeletevalue
然而,这似乎不起作用。我觉得dontcreatekey
标志只适用于“键”¹而不适用于“值”。如果是这样,我怎么能做到这一点?
(1)假设“密钥”为“SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run”(在安装之前始终存在),“value”将是string
类型的条目住在那把钥匙里面。
答案 0 :(得分:2)
使用ValueType: none
或完全省略ValueType
参数:
如果指定了
none
(默认设置),安装程序将创建密钥而不是值。在这种情况下,ValueName
和ValueData
参数将被忽略。
虽然请注意文档不完全正确。与uninsdeletevalue
标志结合使用时,ValueName
不会被忽略。
[Registry]
Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; \
ValueType: none; ValueName: "this_is_a_test"; Flags: dontcreatekey uninsdeletevalue