Need a script to uninstall multiple versions of same software execpt one

I have an application with multiple versions I need to uninstall but leave the correct version intact. I need a script that checks for the appp name and app version and unintalls all but the correct version.

tx!
geewizzzAsked:
Who is Participating?
 
rejoinderConnect With a Mentor Commented:
Modify the script below to match your files name and version number.
I recomend you uncomment the echo command in the loop and comment out the uninstallByGuid line so you can double check that all the right files are being targeted.
To tweak, the select statement will have to be modified a little.
strComputer = "."
strSoftName = "Adobe Acrobat"
strVersion  = "9.0"
 
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Product Where Name like '" & strSoftName & "%' AND Version <> '" & strVersion & "'")
For Each objItem in colItems
    'WScript.Echo objItem.IdentifyingNumber
    WScript.Echo UninstallByGuid(objItem.IdentifyingNumber) 
Next
 
Function UninstallByGUID(sGUID)   
    Set oWMIroot = SWBemlocator.ConnectServer(strComputer,"root\CIMV2") 
    Set oWMIColl = oWMIroot.ExecQuery("Select * FROM Win32_Product Where IdentifyingNumber = '" & sGUID & "'") 
    For Each oWMIval In oWMIColl
        oWMIval.Uninstall() 
        UninstallByGUID = "Removal of " & oWMIval.Name & " complete (" & err.number & ")"
    Next 
    If UninstallByGUID = "" Then
        UninstallByGUID = "Application GUID not found."
    end if
End Function
 
msgbox ("All done")

Open in new window

0
 
geewizzzAuthor Commented:
Fantastic, tx for the quick response!
Nice script, very clean. I had figured it out last night but yours way better!
One issue I am having with it is some apps installs(Java) dont have 'Version' info. This uninstalled all versions of Java except the one I entered PLUS the one that doesnt have version info. I assume we would incorporate another line, something like ....
If Version = ""
then....

Any ideas?

FYI, I also have another question open - looking for a script that will delete a locked file???  500 pts and no one has solved it. I figure if a tool like 'Unlocker' can do it- why not a script???
0
 
rejoinderCommented:
Thanks very much.
I will see what can be done about the version number issue.  I will get back to you soon.
Can you post the link to the other question and I will check it out.
0
 
rejoinderCommented:
That might work.  The block of code would look like this...
For Each objItem in colItems
    if objItem.Version <> "" then
        'WScript.Echo objItem.IdentifyingNumber
        WScript.Echo UninstallByGuid(objItem.IdentifyingNumber)
    end if
Next
It would need testing at your end to see if it is giving you the desired results.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.