Удалить все версии программного обеспечения LogMeIn - PullRequest
0 голосов
/ 09 октября 2019

Я создаю VBScript для удаления всех найденных экземпляров программного обеспечения LogMeIn. Кажется, работает установка, но он оставляет раздел реестра. Если я запускаю строку вручную из командной строки cmd, она полностью удаляется, включая удаление раздела реестра. Что мне нужно сделать, чтобы не только выполнить удаление MSI, но и очистить реестр? Спасибо

On Error Resume Next
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set WshShell = CreateObject("Wscript.Shell")
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
strKeyPath = 
"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
   strDisplayName = WshShell.RegRead ("HKLM\" & strKeyPath & "\" & subkey 
& "\Contact")
   If  InStr(1, strDisplayName, "LogMeIn") > 0 Then
'   msgbox "C:\Windows\system32\msiexec.exe /norestart /X " & SubKey & " 
/qn" ' Just for debugging
   WScript.Sleep 20000
   WshShell.Run "cmd /c C:\Windows\System32\msiexec.exe /X" & SubKey & " 
/qn /L*V msilog.txt", 1, True
   End If
Next

1 Ответ

0 голосов
/ 09 октября 2019

Сколько экземпляров? Они используют один и тот же код обновления? Вы можете удалить все экземпляры по одному коду обновления, если это так. Вот пример: Powershell: удаление приложения с помощью UpgradeCode .

ОБНОВЛЕНИЕ : C # / .NET версия .

Существует также модуль PowerShell для установщика Windows от Хита Стюарта .

Вот предложенный сценарий, встроенный - я не проверял его дляперезагрузка сценариев. Просто оставьте продукт открытым и удалите его, чтобы увидеть, запускает ли он перезагрузку. Вызов через cscript.exe для бесшумной работы:

Const msiUILevelNone = 2
Const msiInstallStateAbsent = 2

Set installer = CreateObject("WindowsInstaller.Installer")
'installer.UILevel = msiUILevelNone ' Disabled to prevent silent uninstall. Now the UAC prompt will show

' Uninstall Orca, replace upgrade code with yours
Set products = installer.RelatedProducts("{UPGRADE-GUID-GOES-HERE-000000000000}")

For Each product In products
   ' MsgBox "Product Code: " & product ' Show the product code found, if you want

   ' The following call when run silently with admin rights may reboot the system without warning!
   ' This is due to badly authored MSI packages - most packages will not trigger this problem.
   installer.ConfigureProduct product, 0,  msiInstallStateAbsent ' Uninstall product

   ' See text above for info on the newer ConfigureProductEx method.
Next

Set installer = Nothing

MsgBox "Finished" ' Just so we know the script ran if nothing found to uninstall
...