我正在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时执行此操作,在那里您可以检查值并修改它们。对您的问题的评论也是正确的。