2016-03-02 515 views
1

Inno Setup Help删除注册表项(这不是由安装程序创建)(Inno Setup的)

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)假设“key”是“SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run”(它将在安装之前始终存在),并且“value”将是类型为string的条目,该条目驻留在键。

回答

1

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

如果指定none(默认设置),安装程序将创建的关键,但不是一个值。在这种情况下,ValueNameValueData参数将被忽略。

虽然说明文档is not completely correct。当与uninsdeletevalue标志相结合时,ValueName不会被忽略。

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

所以......改变'ValueType'为'因为我打算none'作品...但由于或错误之类的? –

+0

这不是一个错误。这只是说明文件没有涵盖所有可能性。 –

+1

完美。谢谢。 –

相关问题