Решил свою проблему, вот листинг скрипта (правда, помимо решения описанной в предыдущем посте задачи, решены и другие):
Удаление Tortoise SVN и Visual SVN любой версии (установленных только как MSI пакеты)
[more]
Dim strValue
Dim strNewValue
Dim strA
strA = 2
Const HKEY_LOCAL_MACHINE = &H80000002
Public WShell
WScript.Echo "Перед удалением Tortoise SVN и Visual SVN закройте, пожалуйста, все программы."
strComputer = "."
Set WShell = Wscript.CreateObject("Wscript.Shell")
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
strValueName = "DisplayName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
If Left(strValue,11) = "TortoiseSVN" Then
strValueName = "UninstallString"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
strNewValue = Mid(strValue,15,200)
End If
Next
Set WshShell = CreateObject("WScript.Shell")
Return = WshShell.Run ("%windir%\system32\msiexec.exe /qb /norestart /x" & strNewValue, 1, True)
If Return = 3010 OR Return = 1641 OR Return = 0 Then
Return = WshShell.Run ("cmd /k RD /S /Q ""%USERPROFILE%\Application Data\Subversion\"" & Exit", 1, True)
Return = WshShell.Run ("cmd /k RD /S /Q ""%USERPROFILE%\Application Data\TortoiseSVN\"" & Exit")
Return = WshShell.Run ("cmd /k RD /S /Q ""%USERPROFILE%\Local Settings\Application Data\TSVNCache\"" & Exit", 1, True)
Return = WshShell.Run ("cmd /k RD /S /Q ""%ALLUSERSPROFILE%\Application Data\Subversion\"" & Exit", 1, True)
Return = WshShell.Run ("cmd /k RD /S /Q ""%ProgramFiles%\TortoiseSVN\"" & Exit", 1, True)
Else
strA = (strA - 1)
Call ExitWithErrorTortoise
End If
For Each subkey In arrSubKeys
strValueName = "DisplayName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
If Left(strValue,9) = "VisualSVN" Then
strValueName = "UninstallString"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
strNewValue = Mid(strValue,15,200)
End If
Next
Set WshShell = CreateObject("WScript.Shell")
Return = WshShell.Run ("%windir%\system32\msiexec.exe /qb /norestart /x" & strNewValue, 1, True)
If Return = 3010 OR Return = 1641 OR Return = 0 Then
Return = WshShell.Run ("cmd /k RD /S /Q ""%ProgramFiles%\VisualSVN\"" & Exit", 1, True)
Else
strA = (strA - 1)
Call ExitWithErrorVisual
End If
If strA > 0 Then
areYousure = MsgBox("Пожалуйста, перезагрузитесь. Перезагрузить компьютер?", vbYesNo + vbQuestion,"Перезагрузка")
If areYouSure = "7" Then
Call SQuit
Else
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next
End If
Else call SQuit
End If
sub SQuit
Wscript.quit
End Sub
sub ExitWithErrorTortoise
Wscript.Echo "Ошибка при удалении Tortoise SVN. Удалите Tortoise SVN вручную. Переход к удалению Visual SVN."
End Sub
sub ExitWithErrorVisual
Wscript.Echo "Ошибка при удалении Visual SVN. Удалите Visual SVN вручную. Завершение работы скрипта."
Call SQuit
End Sub
[/more]
Удаление Tortoise SVN и Visual SVN любой версии (установленных только как MSI пакеты)
[more]
Dim strValue
Dim strNewValue
Dim strA
strA = 2
Const HKEY_LOCAL_MACHINE = &H80000002
Public WShell
WScript.Echo "Перед удалением Tortoise SVN и Visual SVN закройте, пожалуйста, все программы."
strComputer = "."
Set WShell = Wscript.CreateObject("Wscript.Shell")
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
strValueName = "DisplayName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
If Left(strValue,11) = "TortoiseSVN" Then
strValueName = "UninstallString"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
strNewValue = Mid(strValue,15,200)
End If
Next
Set WshShell = CreateObject("WScript.Shell")
Return = WshShell.Run ("%windir%\system32\msiexec.exe /qb /norestart /x" & strNewValue, 1, True)
If Return = 3010 OR Return = 1641 OR Return = 0 Then
Return = WshShell.Run ("cmd /k RD /S /Q ""%USERPROFILE%\Application Data\Subversion\"" & Exit", 1, True)
Return = WshShell.Run ("cmd /k RD /S /Q ""%USERPROFILE%\Application Data\TortoiseSVN\"" & Exit")
Return = WshShell.Run ("cmd /k RD /S /Q ""%USERPROFILE%\Local Settings\Application Data\TSVNCache\"" & Exit", 1, True)
Return = WshShell.Run ("cmd /k RD /S /Q ""%ALLUSERSPROFILE%\Application Data\Subversion\"" & Exit", 1, True)
Return = WshShell.Run ("cmd /k RD /S /Q ""%ProgramFiles%\TortoiseSVN\"" & Exit", 1, True)
Else
strA = (strA - 1)
Call ExitWithErrorTortoise
End If
For Each subkey In arrSubKeys
strValueName = "DisplayName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
If Left(strValue,9) = "VisualSVN" Then
strValueName = "UninstallString"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
strNewValue = Mid(strValue,15,200)
End If
Next
Set WshShell = CreateObject("WScript.Shell")
Return = WshShell.Run ("%windir%\system32\msiexec.exe /qb /norestart /x" & strNewValue, 1, True)
If Return = 3010 OR Return = 1641 OR Return = 0 Then
Return = WshShell.Run ("cmd /k RD /S /Q ""%ProgramFiles%\VisualSVN\"" & Exit", 1, True)
Else
strA = (strA - 1)
Call ExitWithErrorVisual
End If
If strA > 0 Then
areYousure = MsgBox("Пожалуйста, перезагрузитесь. Перезагрузить компьютер?", vbYesNo + vbQuestion,"Перезагрузка")
If areYouSure = "7" Then
Call SQuit
Else
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next
End If
Else call SQuit
End If
sub SQuit
Wscript.quit
End Sub
sub ExitWithErrorTortoise
Wscript.Echo "Ошибка при удалении Tortoise SVN. Удалите Tortoise SVN вручную. Переход к удалению Visual SVN."
End Sub
sub ExitWithErrorVisual
Wscript.Echo "Ошибка при удалении Visual SVN. Удалите Visual SVN вручную. Завершение работы скрипта."
Call SQuit
End Sub
[/more]