As promised, here is part 2 of my previous post about removing AutoCAD 2011 products using System Center Configuration Manager (SCCM). I use a script to herd all the 3-legged cats together and remove them at once, silently. Kind of like stealth kitty extraction. Or something like that.
BEGIN VBSCRIPT…
'****************************************************************
' Filename..: uninstall_2011_civil3d.vbs
' Author....: David M. Stein
' Date......: 08/16/2010
' Purpose...: uninstall autocad civil 3d 2011
' SQL.......: N/A
'****************************************************************
Option Explicit
wscript.echo "info: initialized " & Now
wscript.echo "info: script executed from " & wscript.ScriptFullName
Dim oShell, oFSO, progfiles, sysdrive, counter : counter = 0
Set oShell = CreateObject("Wscript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
progfiles = oShell.ExpandEnvironmentStrings("%programfiles%")
sysdrive = oShell.ExpandEnvironmentStrings("%systemdrive%")
wscript.echo "info: product installation was found."
CleanApp "DirectX 9.0c for Civil 3D 2011", "{0B8F69E3-5983-4B2B-B464-5D833C76773D}"
CleanApp "Autodesk Material Library 2011", "{9DEABCB6-B759-4D52-92F8-51B34A2B4D40}"
CleanApp "Autodesk Material Library 2011 Base Image library", "{CD1E078C-A6B9-47DA-B035-6365C85C7832}"
CleanApp "AutoCAD Civil 3D 2011", "{5783F2D7-9000-0409-0002-0060B0CE6BBA}"
CleanApp "AutoCAD Civil 3D 2011 Language Pack - English", "{5783F2D7-9000-0409-1002-0060B0CE6BBA}"
CleanApp "Autodesk Design Review 2011", "{8D20B4D7-3422-4099-9332-39F27E617A6F}"
CleanApp "FARO LS 1.1.406.58", "{951B0F30-9F1A-4BF6-B3DA-99EB0E917B1C}"
If counter > 0 Then
CleanFolder progfiles & "\Autodesk\AutoCAD Civil 3D 2011"
CleanFolder progfiles & "\Autodesk\LandXML Reporting 8"
CleanFolder sysdrive & "\Civil 3D Project Templates"
CleanFolder sysdrive & "\Civil 3D Projects"
End If
wscript.echo "info: " & counter & " applications removed"
wscript.echo "info: completed at " & Now
'----------------------------------------------------------------
' function: check if reg key exists under Uninstall tree
'----------------------------------------------------------------
Function IsInstalled(keyname)
Dim basekey
basekey = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
If RegKeyExists(basekey & keyname & "\") Then
IsInstalled = True
End If
End Function
'----------------------------------------------------------------
' function: return True if registry key exists
' EXAMPLE: If RegKeyExists("HKLM\Sofwtare\ACME\TestKey\Value1") Then
'----------------------------------------------------------------
Function RegKeyExists(key)
Dim bKey
On Error Resume Next
bKey = oShell.RegRead(key)
If err.Number = 0 Then
RegKeyExists = True
End If
End Function
'----------------------------------------------------------------
' function: run MSIEXEC to uninstall a GUID-based app
'----------------------------------------------------------------
Sub Uninstall(key)
oShell.Run "msiexec.exe /x " & key & " /qn", 7, True
End Sub
'----------------------------------------------------------------
' function: macro to check for app and remove it
'----------------------------------------------------------------
Sub CleanApp(name, keyname)
wscript.echo "info: searching for " & name
If IsInstalled(keyname) Then
wscript.echo "info: removing " & name
Uninstall keyname
counter = counter + 1
Else
wscript.echo "info: " & name & " is not installed"
End If
End Sub
'----------------------------------------------------------------
' function:
'----------------------------------------------------------------
Sub CleanFolder(path)
Dim retval
If oFSO.FolderExists(path) Then
On Error Resume Next
retval = oFSO.DeleteFolder(path, True)
If err.Number = 0 Then
wscript.echo "info: folder deleted = " & path
Else
wscript.echo "warn: folder not deleted = " & path
End If
Else
wscript.echo "warn: folder not found = " & path
End If
End Sub
'----------------------------------------------------------------
' function:
'----------------------------------------------------------------
Function ScriptPath()
ScriptPath = Replace(wscript.ScriptFullName, _
"\" & wscript.ScriptName, "")
End Function
No comments:
Post a Comment