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

Jui*_*icy 4 registry inno-setup

我在Inno Setup中为我的程序编写了一个安装程序.我的程序使用网页和Internet Explorer与它进行交互.

我的一些查询需要超过10秒,我在朋友的计算机上发现他有一个注册表项"RequestTimeout",用于Internet Explorer,设置超时为10秒.此密钥在Internet Explorer中自然不存在,显然是由第三方安装程序添加的.但是从我在网上看到的内容中,有不少人最终得到它.

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

我用谷歌搜索了所有关于Inno Setup和Registry Keys的资源都与卸载选项有关.

Dea*_*nna 9

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

[Registry]
Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueName: "Value"; ValueType: none; Flags: deletevalue;
Run Code Online (Sandbox Code Playgroud)

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


Al *_*aba 2

在 inno setup 帮助中列出了一些您可以使用的函数

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;;
Run Code Online (Sandbox Code Playgroud)

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