2013-06-10 3 views
1

J'essaie de désinstaller un programme d'ajouter ou de supprimer des programmes via un script AutoIt.comment automatiser la désinstallation d'un programme via autoit?

* Je ne veux pas désinstaller en supprimant les clés de registre. * Je ne veux pas désinstaller en exécutant un programme de désinstallation.

Je peux ouvrir « ajouter supprimer des programmes » par une commande appwiz.cpl

Cependant, je suis à défaut de reconnaître le nom du programme correct dans la liste et invoquer une désinstallation.

Tout ce que je veux faire est de reconnaître mon programme dans la liste, par exemple "Helloworld" et d'appeler une désinstallation.

Répondre

3

Vous pouvez simplement parcourir toutes vos valeurs de registre correspondantes dont est faite votre liste de désinstallation dans votre "Ajouter ou supprimer des programmes" ... Et ensuite extraire directement la commande que vous voulez exécuter. Je l'afficher dans une boîte de message dans cet exemple, mais vous pouvez directement comparer les DisplayName à « Helloworld » puis exécutez le UninstallString avec Run(...). C'est exactement la même chose que votre "Ajouter ou supprimer des programmes" invoquerait. Cela ne signifie pas simplement supprimer les clés de registre. Et cela ne signifie pas simplement exécuter "aucun" programme de désinstallation, mais le bon, nécessaire pour désinstaller exactement ce programme même comme en cliquant sur le bouton "Désinstaller" dans appwiz.cpl va invoquer. Donc, pour effectuer ce que vous avez demandé en conséquence, cette solution fonctionne très bien. Il ne gère pas acutally le appwiz.cpl et faire défiler la liste des programmes ...

$uninstall_path1 = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall" 
searchUninstallStrings($uninstall_path1) 
$uninstall_path2 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" 
searchUninstallStrings($uninstall_path2) 

Func searchUninstallStrings($uninstall_path) 
    $i = 0 
    While True 
     $i += 1 
     Local $entry = RegEnumKey($uninstall_path, $i) 
     If @error <> 0 Then ExitLoop 
     $regPath = $uninstall_path & "\" & $entry 
     $DisplayName = RegRead($regPath, "DisplayName") 
     If $DisplayName <> "" Then 
      $message = $DisplayName & @CR 
      $UninstallString = RegRead($regPath, "UninstallString") 
      If $UninstallString <> "" Then 
       $message &= "Uninstall: '" & $UninstallString & "'" 
       MsgBox(4096, "SubKey #" & $i & ": " & $entry, $message) 
      EndIf 
     EndIf 
    WEnd 
EndFunc 

Bonne chance!

+1

Je trouve également ce artical qui fait exactement ce que je voulais à faire ... http://www.tech-recipes.com/rx/2947/windows_uninstall_application_command_line/ – RON12345

-1

j'ai pu automatiser programme désinstalle avec succès avec la commande suivante pour ouvrir le menu du panneau de commande Programmes et fonctionnalités suivi d'une série de touches:

Run("C:\Windows\System32\control.exe appwiz.cpl") 
WinWait("Programs and Features") 
WinActivate("Programs and Features") 
Send("ProgramNameHere") 
Send("{Enter}") 
Questions connexes