diff --git a/U3H_hostCleanUp.ahk b/U3H_hostCleanUp.ahk index c3f3621..f931058 100644 --- a/U3H_hostCleanUp.ahk +++ b/U3H_hostCleanUp.ahk @@ -4,10 +4,33 @@ ; ### ### ; ########################################################################## +StepsAll = 0 +If regsvr0 > 0 + StepsAll++ +If datexe0 > 0 + StepsAll++ +If regbak0 > 0 + StepsAll += 2 +IfExist %U3_APP_DATA_PATH%\regdataX.reg + StepsAll++ +If regdel0 > 0 + StepsAll++ +If fildel0 > 0 + StepsAll++ +StepsStep := 100/StepsAll +StepsPos = 0 + +Progress b2 x%PL% y%PT% w%PW% m FM%PFM% FS%PFS%, U3Helper %U3HVer% - (c)2006-2007 Markus Birth , Cleaning up %AppName% ..., AHKProgress-%AppName% +WinSet Transparent, %PTrans%, AHKProgress-%AppName% + If (U3_IS_DEVICE_AVAILABLE <> "true") { ; U3 stick not plugged in!! MsgBox 4112, U3 Device Not Available (%U3_IS_DEVICE_AVAILABLE%), Your U3 Device seems to be disconnected. The settings cannot be saved!`n`nAll your changes made since plugging in the U3 Device are likely to be lost. Try to manually save them now.`n`n%U3_HOST_EXEC_PATH%`n`nAfter pressing OK, registry entries will be removed. + If regbak0 > 0 + StepsPos++ + If datexe0 > 0 + StepsPos++ } Else { @@ -26,7 +49,7 @@ Else { Loop %regbak0% { - Status("Translating paths in registry #" . A_Index . " of " . regbak0 . " ... " . Perc(A_Index-1, regbak0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/regbak0, Translating paths in registry #%A_Index% ... CurBranch := regbak%A_Index% SplitFirst(RegRoot, RegSub, CurBranch, "\") Loop %RegRoot%, %RegSub%, 0, 1 @@ -51,14 +74,13 @@ Else } } } - } - Loop %regbak0% - { - CurBranch := regbak%A_Index% - Status("Saving registry settings #" . A_Index . " of " . regbak0 . " ... " . Perc(A_Index-1, regbak0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/regbak0, Saving registry settings #%A_Index% ... RunWait regedit /E "%U3_APP_DATA_PATH%\regdata%A_Index%.reg" "%CurBranch%" } } + + If regbak0 > 0 + StepsPos++ ;Copy data files CopyErrors := "" @@ -82,7 +104,7 @@ Else } Loop *.*, 0, 1 { - Status("Saving data directory " . CurFile . " ... " . Perc(OutIndex-1+(A_Index/FileCount), datexe0) . " CPY:" . Copied . " (SKP:" . Skipped . " / ERR:" . Errors . ")") + Progress % StepsPos*StepsStep+StepsStep*(OutIndex-1.00+(A_Index/FileCount))/datexe0, Saving data directory %CurFile% ... (CPY:%Copied% / SKP:%Skipped% / ERR:%Errors%) FileCopyNewer(A_LoopFileLongPath, U3_APP_DATA_PATH . "\" CurFile . "\" . A_LoopFileFullPath) If ErrorLevel = 2 { @@ -104,7 +126,7 @@ Else Else { ; Folder got deleted in the meantime, remove it from backup - Status("Removing data directory " . CurFile . " ... " . Perc(A_Index-1, datexe0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/datexe0, Removing data directory %CurFile% ... FileRemoveDir %U3_APP_DATA_PATH%\%CurFile%, 1 } } @@ -112,7 +134,7 @@ Else { IfExist %U3_HOST_EXEC_PATH%\%CurFile% { - Status("Saving data file " . CurFile . " ... " . Perc(A_Index-1, datexe0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/datexe0, Saving data file %CurFile% ... FileCopyNewer(U3_HOST_EXEC_PATH . "\" . CurFile, U3_APP_DATA_PATH . "\" . CurFile) If ErrorLevel > 0 CopyErrors .= "File: " . CurFile . "`n" @@ -120,14 +142,18 @@ Else Else { ; File got deleted in the meantime, remove it from backup - Status("Removing data file " . CurFile . " ... " . Perc(A_Index-1, datexe0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/datexe0, Removing data file %CurFile% ... FileSetAttrib -RSH, %U3_APP_DATA_PATH%\%CurFile% FileDelete %U3_APP_DATA_PATH%\%CurFile% } } } + If (CopyErrors <> "") MsgBox 4112, Error while copying, Following files could not be backed up:`n`n%CopyErrors%`n`nTry to manually save them now.`n`n%U3_HOST_EXEC_PATH%`n`nAfter pressing OK, those files will be deleted. + + If datexe0 > 0 + StepsPos++ } IniRead KeepSettings, %INIFile%, U3Helper, KeepSettings, 0 @@ -155,35 +181,45 @@ If (KeepSettings = "0" or RevertSettings = "1") { Loop %regbak0% { - Status("Removing registry settings #" . A_Index . " from host system ... " . Perc(A_Index-1, regbak0)) + 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% If (RevertSettings = "1") { - Status("Restoring registry settings #" . A_Index . " from backup ... " . Perc(A_Index-1, regbak0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-0.5)/regbak0, Restoring registry settings #%A_Index% from backup ... RunWait regedit /S "%U3_HOST_EXEC_PATH%\U3Hregbak%A_Index%.reg" } } } + +If regbak0 > 0 + StepsPos++ + If (KeepSettings = "0" or Unattended = "1") { Loop %regdel0% { - Status("Removing add. registry settings #" . A_Index . " from host system ... " . Perc(A_Index-1, regdel0)) + 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% } + + If regdel0 > 0 + StepsPos++ ; regsvr32 stuff Loop %regsvr0% { CurDLL := regsvr%A_Index% - Status("Unregistering file " . CurDLL . " ... " . Perc(A_Index-1, regsvr0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/regsvr0, Unregistering file %CurDLL% ... RunWait regsvr32 /S /U "%U3_HOST_EXEC_PATH%\%CurDLL%" } + If regsvr0 > 0 + StepsPos++ + ; remove files Loop %fildel0% { @@ -203,18 +239,31 @@ If (KeepSettings = "0" or Unattended = "1") FileGetAttrib FilAttr, %CurFile% IfInString FilAttr, D { - Status("Removing directory #" . A_Index . " from host system ... " . Perc(A_Index-1, fildel0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/fildel0, Removing directory #%A_Index% from host ... FileRemoveDir %CurFile%, 1 } Else { - Status("Removing file #" . A_Index . " from host system ... " . Perc(A_Index-1, fildel0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/fildel0, Removing file #%A_Index% from host ... FileDelete %CurFile% } } + + If fildel0 > 0 + StepsPos++ +} +Else +{ + If regdel0 > 0 + StepsPos++ + If regsvr0 > 0 + StepsPos++ + If fildel0 > 0 + StepsPos++ } -Status("") +Progress 100, hostCleanUp done. + If (U3_IS_DEVICE_AVAILABLE = "true") { IniDelete %INIFile%, U3Helper, ForeignSettings diff --git a/U3H_hostConfigure.ahk b/U3H_hostConfigure.ahk index 7f4834a..7de58e0 100644 --- a/U3H_hostConfigure.ahk +++ b/U3H_hostConfigure.ahk @@ -4,10 +4,22 @@ ; ### ### ; ########################################################################## -Menu Tray, Icon -TrayTip Preparing %AppName% ..., U3Helper %U3HVer%`n(c)2006 Markus Birth`nmbirth@webwriters.de, 3, 1 +StepsAll = 0 +If regsvr0 > 0 + StepsAll++ +If datexe0 > 0 + StepsAll++ +If regbak0 > 0 + StepsAll += 3 +IfExist %U3_APP_DATA_PATH%\regdataX.reg + StepsAll++ +StepsStep := 100/StepsAll +StepsPos = 0 -Status("Checking registry settings...") +Progress b2 x%PL% y%PT% w%PW% m FM%PFM% FS%PFS%, U3Helper %U3HVer% - (c)2006-2007 Markus Birth , Preparing %AppName% ..., AHKProgress-%AppName% +WinSet Transparent, %PTrans%, AHKProgress-%AppName% + +Progress, , Checking registry settings... keycount = 0 ;Registry stuff Loop %regbak0% @@ -20,16 +32,19 @@ Loop %regbak0% } If (keycount > 0) { - Status("Backing up registry settings #" . A_Index . " ... " . Perc(A_Index-1, regbak0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/regbak0, Backing up registry settings #%A_Index% ... RunWait regedit /E "%U3_HOST_EXEC_PATH%\U3Hregbak%A_Index%.reg" "%CurBranch%" - Status("Cleaning registry settings #" . A_Index . " ... " . Perc(A_Index-1, regbak0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-0.5)/regbak0, Cleaning registry settings #%A_Index% ... RegDelete %RegRoot%, %RegSub% } } +If regbak0 > 0 + StepsPos++ + If (keycount > 0) { - Status("") + Progress % StepsPos*StepsStep, Registry settings found! IniWrite 1, %INIFile%, U3Helper, KeepSettings If (Unattended = "0") { @@ -37,6 +52,7 @@ If (keycount > 0) IfMsgBox Yes { IniWrite 1, %INIFile%, U3Helper, ForeignSettings + StepsPos += 2 } } } @@ -45,17 +61,20 @@ If (ForeignSettings = "0") { Loop %regbak0% { - Status("Importing registry settings #" . A_Index . " ... " . Perc(A_Index-1, regbak0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/regbak0, Importing registry settings #%A_Index% ... RunWait regedit /S "%U3_APP_DATA_PATH%\regdata%A_Index%.reg" } + If regbak0 > 0 + StepsPos++ IfExist %U3_APP_DATA_PATH%\regdataX.reg { - Status("Importing special registry settings ...") + Progress % StepsPos*StepsStep, Importing special registry settings ... RunWait regedit /S "%U3_APP_DATA_PATH%\regdataX.reg" + StepsPos++ } Loop %regbak0% { - Status("Translating paths in registry #" . A_Index . " ... " . Perc(A_Index-1, regbak0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/regbak0, Translating paths in registry #%A_Index% ... CurBranch := regbak%A_Index% SplitFirst(RegRoot, RegSub, CurBranch, "\") Loop %RegRoot%, %RegSub%, 0, 1 @@ -82,8 +101,11 @@ If (ForeignSettings = "0") } } } + If regbak0 > 0 + StepsPos++ } + ;Copy data files Loop %datexe0% { @@ -91,16 +113,41 @@ Loop %datexe0% FileGetAttrib FilAttr, %U3_APP_DATA_PATH%\%CurFile% IfInString FilAttr, D { - Status("Copying data directory " . CurFile . " ... " . Perc(A_Index-1, datexe0)) - FileCopyDir %U3_APP_DATA_PATH%\%CurFile%, %U3_HOST_EXEC_PATH%\%CurFile%, 1 + Copied = 0 + Errors = 0 + OutIndex = %A_Index% + FileCount = 0 + SetWorkingDir %U3_APP_DATA_PATH%\%CurFile% + Loop *.*, 0, 1 + { + FileCount++ + } + IfNotExist %U3_HOST_EXEC_PATH%\%CurFile% + FileCreateDir %U3_HOST_EXEC_PATH%\%CurFile% + Loop *.*, 0, 1 + { + Progress % StepsPos*StepsStep+StepsStep*(OutIndex-1.00+(A_Index/FileCount))/datexe0, Copying data directory %CurFile% ... (CPY:%Copied% / ERR:%Errors%) + IfNotExist %U3_HOST_EXEC_PATH%\%CurFile%\%A_LoopFileDir% + FileCreateDir %U3_HOST_EXEC_PATH%\%CurFile%\%A_LoopFileDir% + FileCopy %A_LoopFileLongPath%, %U3_HOST_EXEC_PATH%\%CurFile%\%A_LoopFileFullPath%, 1 + If ErrorLevel + Errors++ + Else + Copied++ + } + SetWorkingDir %A_ScriptDir% + ; FileCopyDir %U3_APP_DATA_PATH%\%CurFile%, %U3_HOST_EXEC_PATH%\%CurFile%, 1 } Else { - Status("Copying data file " . CurFile . " ... " . Perc(A_Index-1, datexe0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/datexe0, Copying data file %CurFile% ... FileCopy %U3_APP_DATA_PATH%\%CurFile%, %U3_HOST_EXEC_PATH%\%CurFile%, 1 } } +If datexe0 > 0 + StepsPos++ + ; regsvr32 stuff IniRead KeepSettings, %INIFile%, U3Helper, KeepSettings, 0 If (KeepSettings = "0") @@ -108,8 +155,12 @@ If (KeepSettings = "0") Loop %regsvr0% { CurDLL := regsvr%A_Index% - Status("Registering file " . CurDLL . " ... " . Perc(A_Index-1, regsvr0)) + Progress % StepsPos*StepsStep+StepsStep*(A_Index-1)/regsvr0, Registering file %CurDLL% ... RunWait regsvr32 /S "%U3_HOST_EXEC_PATH%\%CurDLL%" } } -Status("") + +If regsvr0 > 0 + StepsPos++ + +Progress 100, hostConfigure done. diff --git a/U3Helper.ahk b/U3Helper.ahk index b88a80c..8eb01b5 100644 --- a/U3Helper.ahk +++ b/U3Helper.ahk @@ -2,7 +2,7 @@ #NoEnv #Include mb_IniTools.ahk #Include mb_TextTools.ahk -U3HVer = 1.4 +U3HVer = 1.6 EnvGet U3_DEVICE_SERIAL, U3_DEVICE_SERIAL ; serial number of device (copy protection) EnvGet U3_DEVICE_PATH, U3_DEVICE_PATH ; drive letter to device (F:) @@ -40,35 +40,36 @@ IniGetKeys("regbak", INIFile, "RegBackup") IniGetKeys("regdel", INIFile, "RegDelete") IniGetKeys("fildel", INIFile, "FileDelete") -Perc(pos, all) -{ - perc := Floor(pos*100//all) - str = %perc% - str .= "% [" - lc := perc//10 - Loop %lc% - { - str .= "|" - } - Loop % (109-perc)//10 - { - str .= "." - } - str .= "]" - return str -} +WinGetPos,Tx,Ty,Tw,Th,ahk_class Shell_TrayWnd,,, +; Tw>Th: horizontal taskbar (top or bottom) +; Tw0: right +; Ty>0: bottom +PT := 0 +PL := 0 +PH := 78 +PW := 400 +PFM := 10 +PFS := 8 +PTrans := 204 -Status(msg) -{ - global AppName - if (StrLen(msg) > 0) - { - ToolTip %AppName%`n%msg% - } - Else - { - ToolTip - } +if (Tw>Th and Ty<=0) { + ;taskbar top + PL := A_ScreenWidth - PW + PT := Ty + Th +} else if (Tw>Th and Ty>0) { + ;taskbar bottom + PL := A_ScreenWidth - PW + PT := Ty - PH +} else if (Tw0) { + ;taskbar right + PL := Tx - PW + PT := A_ScreenHeight - PH } FileCopyNewer(srcf, dstf)