5

我正在为 Inno Setup 中的程序编写安装程序。我的程序使用网页和 Internet Explorer 与之交互。

我的一些查询需要超过 10 秒,我注意到在我朋友的计算机上,他有一个用于 Internet Explorer 的注册表项“RequestTimeout”,它设置了 10 秒的超时。此密钥并非自然存在于 Internet Explorer 上,它显然是由第三方安装程序添加的。但从我在网上看到的内容来看,很多人最终都接受了它。

我的问题是,如果在安装过程中存在这个键,我可以告诉 Inno Setup 删除或修改它吗?

我用谷歌搜索,我能找到的关于 Inno 设置和注册表项的所有资源都与卸载选项有关。

4

3 回答 3

10

忽略有关是否应该删除不是“您的”值的要点,您可以通过将类型设置为none并添加deletevalue标志来轻松地在安装时删除注册表值:

[Registry]
Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueName: "Value"; ValueType: none; Flags: deletevalue;

您还可以添加Check:参数和其他条件语句。

于 2013-11-13T10:38:31.987 回答
3

为了完整起见:Inno Setup 默认为 32 位应用程序。因此,默认情况下,即使在 64 位架构上,它也会删除 32 位注册表项。要删除 64 位密钥,您必须使用 64 位常量(例如Root: HKLM64HKey_Local_Machine)。

此处的更多信息:在安装结束时编写 32/64 位特定注册表项

于 2017-05-29T21:11:38.017 回答
2

在 inno 设置帮助中列出了一些您可以使用的功能

function RegDeleteKeyIncludingSubkeys(const RootKey: Integer; const SubkeyName: String): Boolean;
function RegDeleteKeyIfEmpty(const RootKey: Integer; const SubkeyName: String): Boolean;
function RegDeleteValue(const RootKey: Integer; const SubKeyName, ValueName: String): Boolean;;

您可以在 initializeWizard 或 initializeSetup 方法中执行此操作,在那里您可以检查值并修改它们。对您的问题的评论也是正确的。

于 2013-10-25T23:09:55.147 回答