From a7fa6a69328daa1cb0947fda4b218aa931f5649d Mon Sep 17 00:00:00 2001 From: mbirth Date: Fri, 5 Oct 2007 18:10:14 +0000 Subject: [PATCH] + added RegDeleteX() to also delete empty parental registry branches * raised version to 2.3 (Issue: 24) --- U3H_hostCleanUp.ahk | 20 ++++++++++---------- U3Helper.ahk | 3 ++- U3Helper.rc | 8 ++++---- mb_RegTools.ahk | 24 ++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 15 deletions(-) create mode 100644 mb_RegTools.ahk diff --git a/U3H_hostCleanUp.ahk b/U3H_hostCleanUp.ahk index 388413c..9878a43 100644 --- a/U3H_hostCleanUp.ahk +++ b/U3H_hostCleanUp.ahk @@ -183,7 +183,7 @@ Else { ; file still exists on host Skipped++ - Continue + Continue } ; target directory or file doesn't exist anymore, delete on U3 FileSetAttrib -RSH, %CurFile% @@ -206,7 +206,7 @@ Else Errors++ Else Deleted++ - } + } } } SetWorkingDir %A_ScriptDir% @@ -246,7 +246,7 @@ Else FileAppend % EnvUnparseStr(A_LoopReadLine) . "`n" } IfExist %U3_APP_DATA_PATH%\%CurFile% - { + { FileDelete %U3_APP_DATA_PATH%\%TmpFile% } Else @@ -295,7 +295,7 @@ If (KeepSettings = "0" or RevertSettings = "1") Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/regbak0, Removing registry settings #%A_Index% from host ... CurBranch := regbak%A_Index% SplitFirst(RegRoot, RegSub, CurBranch, "\") - RegDelete %RegRoot%, %RegSub% + RegDeleteX(RegRoot, RegSub) If (RevertSettings = "1") { Progress % StepsPos*StepsStep+StepsStep*(A_Index-0.5)/regbak0, Restoring registry settings #%A_Index% from backup ... @@ -319,11 +319,11 @@ If (KeepSettings = "0" or Unattended = "1") Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/regdel0, Removing add. registry settings #%A_Index% from host ... CurBranch := regdel%A_Index% SplitFirst(RegRoot, RegSub, CurBranch, "\") - RegDelete %RegRoot%, %RegSub% + RegDeleteX(RegRoot, RegSub) If ErrorLevel { SplitLast(RegSub, RegKey, RegSub, "\") - RegDelete %RegRoot%, %RegSub%, %RegKey% + RegDelete %RegRoot%, %RegSub%, %RegKey% } } @@ -372,13 +372,13 @@ If (KeepSettings = "0" or Unattended = "1") IfNotExist %CurFile% { Skipped++ - Continue + Continue } FileSetAttrib -RSH, %CurFile% FileGetAttrib FAttr, %CurFile% IfInString FAttr, D { - ; target is a directory + ; target is a directory FileSetAttrib -RSH, %CurFile%\*.*, 1, 1 FileRemoveDir %CurFile%, 1 If ErrorLevel @@ -393,7 +393,7 @@ If (KeepSettings = "0" or Unattended = "1") If ErrorLevel Errors++ Else - Deleted++ + Deleted++ } } } @@ -411,7 +411,7 @@ Else If regsvr0 > 0 StepsPos++ If fildel0 > 0 - StepsPos++ + StepsPos++ } ;****************************************************************************** diff --git a/U3Helper.ahk b/U3Helper.ahk index 259902b..7cb7abd 100644 --- a/U3Helper.ahk +++ b/U3Helper.ahk @@ -2,8 +2,9 @@ #NoEnv #Include mb_EnvTools.ahk #Include mb_IniTools.ahk +#Include mb_RegTools.ahk #Include mb_TextTools.ahk -U3HVer = 2.2 +U3HVer = 2.3 U3HUUID = 0f90f88c-5e05-4cab-8c3a-e1c0112b06fd U3_APP_DATA_PATH := EnvValue("U3_APP_DATA_PATH") diff --git a/U3Helper.rc b/U3Helper.rc index 1a6f551..4d95439 100644 --- a/U3Helper.rc +++ b/U3Helper.rc @@ -1,7 +1,7 @@ 1 VERSIONINFO -FILEVERSION 2,2,0,0 -PRODUCTVERSION 2,2,0,0 +FILEVERSION 2,3,0,0 +PRODUCTVERSION 2,3,0,0 FILEOS 0x4 FILETYPE 0x1 { @@ -10,12 +10,12 @@ BLOCK "StringFileInfo" BLOCK "040904b0" { VALUE "FileDescription", "U3Helper manages registry settings and data files of ordinary applications to make them U3-compatible. (see http://www.u3.com/ for more info)" - VALUE "FileVersion", "2, 2, 0, 0" + VALUE "FileVersion", "2, 3, 0, 0" VALUE "InternalName", "U3H" VALUE "LegalCopyright", "(c)2007 Markus Birth " VALUE "OriginalFilename", "U3Helper.exe" VALUE "ProductName", "U3Helper" - VALUE "ProductVersion", "2, 2, 0, 0" + VALUE "ProductVersion", "2, 3, 0, 0" } } diff --git a/mb_RegTools.ahk b/mb_RegTools.ahk new file mode 100644 index 0000000..3fe9276 --- /dev/null +++ b/mb_RegTools.ahk @@ -0,0 +1,24 @@ +#Include mb_TextTools.ahk + +RegDeleteX(RegRoot, RegSub) +{ + RegDelete %RegRoot%, %RegSub% + StartRDX: + SplitLast(RegSub, RegKey, RegSub, "\") + if (RegCount(RegRoot, RegSub) = 0 and InStr(RegSub, "\") != 0) + { + RegDelete %RegRoot%, %RegSub% + Goto StartRDX + } + Return true +} + +RegCount(RegRoot, RegSub) +{ + Ct = 0 + Loop %RegRoot%, %RegSub%, 1, 0 + { + Ct++ + } + Return Ct +}