卸载期间删除注册表项(安装程序不创建)(Inno安装程序)

时间:2016-03-02 21:39:34

标签: installation registry inno-setup setup-project

来自Inno Setup Help

  

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类型的条目住在那把钥匙里面。

1 个答案:

答案 0 :(得分:2)

使用ValueType: none或完全省略ValueType参数:

  

如果指定了none(默认设置),安装程序将创建密钥而不是值。在这种情况下,ValueNameValueData参数将被忽略。

虽然请注意文档不完全正确。与uninsdeletevalue标志结合使用时,ValueName不会被忽略。

[Registry]
Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; \
    ValueType: none; ValueName: "this_is_a_test"; Flags: dontcreatekey uninsdeletevalue