Inno Setup:删除另一个程序留下的有问题的注册表项



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

我的一些查询需要超过 10 秒的时间,我在朋友的电脑上注意到他有一个 Internet Explorer 的注册表项"RequestTimeout",将超时设置为 10 秒。此密钥在Internet Explorer上并不自然存在,它显然是由第三方安装程序添加的。但从我在网上读到的内容来看,很多人最终会得到它。

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

我已经用谷歌搜索过,我能找到的有关Inno安装程序和注册表项的所有资源都与卸载选项有关。

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

[Registry]
Root: HKLM; Subkey: "SoftwareMy CompanyMy ProgramSettings"; ValueName: "Value"; ValueType: none; Flags: deletevalue;

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

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

详细信息:在安装结束时写入 32/64 位特定注册表项

在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;;

您可以在初始化向导或初始化设置Mehod时执行此操作,在那里您可以检查值并修改它们。对您的问题的评论也是正确的。

最新更新