卸载时注册表不能完全删除

时间:2015-06-13 04:25:17

标签: registry inno-setup

Inno Setup不会删除完整的注册表项。这就是我所做的:

[Registry]
Root: HKLM; SubKey: SOFTWARE\EA Games\Need for Speed Most Wanted-2012; ValueType: string; ValueName: GDFBinary; ValueData: {app}\GDFBinary_en_US.dll; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\EA Games\Need for Speed Most Wanted-2012; ValueType: string; ValueName: DisplayName; ValueData: Need for Speed Most Wanted-2012; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\EA Games\Need for Speed Most Wanted-2012; ValueType: string; ValueName: Locale; ValueData: en_US; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\EA Games\Need for Speed Most Wanted-2012; ValueType: string; ValueName: Install Dir; ValueData: {app}; Flags: uninsdeletekey

在卸载注册表中的\EA Games\Need for Speed Most Wanted-2012文件夹

时,这些部分无法删除
Root: HKLM; SubKey: SOFTWARE\EA Games\Need for Speed Most Wanted-2012 

Need for Speed Most Wanted-2012游戏仅用于提示)。

任何人请帮忙。

2 个答案:

答案 0 :(得分:3)

您的代码会自动删除HKLM\SOFTWARE\EA Games\Need for Speed Most Wanted-2012。 {@ 1}}不会被删除。

如果您想要删除HKLM\SOFTWARE\EA Games,您必须为其添加显式代码:

HKLM\SOFTWARE\EA Games

(这应该放在之前你的其他条目)。

该条目将仅删除空密钥Root: HKLM; SubKey: SOFTWARE\EA Games; Flags: uninsdeletekeyifempty 。如果创建了其他子键(不是由安装程序创建),则不会删除该键。如果您要无条件删除SOFTWARE\EA Games密钥,请将EA Games替换为uninsdeletekeyifempty

答案 1 :(得分:0)

安装软件后的一段时间,如果我们在这种情况下应用任何脱机补丁,则以前的安装程序被new替换。因此,在这种情况下,我们必须手动删除这些注册表项,如下所示:

usDone: 
   begin
       if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{078ABE12-583D-43e6-96D6-5D092883DC82}_is1') then
       begin
         RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{078ABE12-583D-43e6-96D6-5D092883DC82}_is1');
      end;