Question

msiexec est un logiciel d'invite de commande qui installe un programme MSI . Mais j’ai trouvé que vous pouvez installer un fichier MSI à partir de la ligne de commande en tapant simplement le nom du fichier MSI sur la ligne de commande.

Mais pour désinstaller le fichier MSI, il semble que vous deviez appeler le programme /x et lui attribuer un /uninstall ou <=>.

.

Comment désinstaller un MSI à partir de la ligne de commande sans utiliser la <=> routine?

Était-ce utile?

La solution

Réponse courte: vous ne pouvez pas. Utilisez MSIEXEC / x

Réponse longue: lorsque vous exécutez le fichier MSI directement sur la ligne de commande, il ne fait que lancer MSIEXEC à votre place. Cette association est stockée dans le registre. Vous pouvez voir une liste d’associations en (dans l’Explorateur Windows) dans Outils / Options des dossiers / Types de fichiers.

Par exemple, vous pouvez exécuter un fichier .DOC à partir de la ligne de commande et WordPad ou WinWord l'ouvrira pour vous.

Si vous regardez dans le registre sous HKEY_CLASSES_ROOT\.msi, vous verrez que les fichiers .MSI sont associés au ProgID & "Msi.Package &". Si vous regardez dans HKEY_CLASSES_ROOT\Msi.Package\shell\Open\command, vous verrez la ligne de commande que Windows utilise réellement lorsque vous & "Exécutez &"; un fichier .MSI.

Autres conseils

  

Il existe de nombreuses façons de désinstaller un package MSI. Ceci est conçu comme une & "Référence &";.

En résumé , vous pouvez désinstaller à l'aide de: msiexec.exe , ARP , WMI , PowerShell. , systèmes de déploiement tels que SCCM , VBScript / COM Automation, DTF ou via un dossier de cache Windows masqué et quelques autres options présentées ci-dessous.

Les premiers paragraphes contiennent des informations importantes sur les MSI, puis 14 sections contenant différentes manières de désinstaller un fichier MSI. Puh.

  

& "Babble, Babble - Over &";: Sections 1 , 2 et 3 sont les méthodes de désinstallation normales (et donc recommandées). Personally I use option 3 or 5 from section 3 (les deux options avec la consignation, mais l'option 5 s'exécute en mode silencieux   ainsi que). Si vous êtes très occupé , ignorez tout le babillage et optez pour un   de ceux-ci - il fera le travail.

Si vous rencontrez des problèmes de désinstallation et recherchez une alternative à MsiZap.exe et à l'utilitaire désapprouvé et / ou à l'utilitaire Windows Installer CleanUp ( MSICUU2.exe ), vous pouvez essayer le nouveau outil FixIt de Microsoft ( ou la page internationale ). Peut apparemment fonctionner pour d’autres problèmes d’installation.

Si vous pensez que MSI et Windows Installer sont une source de problèmes, nous vous invitons à consulter la section les avantages pour l'entreprise de l'utilisation de fichiers MSI .

Les configurations

MSI d’Installcript sont généralement intégrées à un fichier setup.exe . Pour en savoir plus sur les paramètres à utiliser pour désinstaller de telles configurations, veuillez consulter les liens suivants: . Fichier de référence au format pdf , Configuration. Paramètres de ligne de commande exe et Update.exe .

Certains fichiers MSI sont installés dans le cadre de bundles via un mécanisme tel que Graver (WiX Toolkit) ou InstallShield Suite . Cela peut rendre la désinstallation légèrement différente de ce qui est vu ci-dessous. Voici un exemple pour les projets InstallShield Suite .

Notez que l'exécution de la désinstallation en mode silencieux ou en mode interactif peut entraîner des résultats différents (!) . Pour une description assez détaillée de la raison pour laquelle c'est le cas, veuillez lire le message suivant: La désinstallation à partir du Panneau de configuration est différente de la suppression de .msi

Si, inopinément, vous êtes invité à spécifier le support d'installation d'origine lors de la désinstallation, lisez la réponse suivante: Pourquoi MSI exige-t-il que le fichier .msi d'origine procède à une désinstallation? et peut-être aussi section 12 ci-dessous pour quelques détails techniques importants.

Si vous avez installé CCleaner ou des outils de nettoyage similaires, passez directement à la section . 11 .

Si la désinstallation échoue complètement (exécution impossible), voir les sections 12 & amp; 13 ci-dessous pour un moyen potentiel de & Quot; annuler & "; l'installation à l'aide des restauration du système et / ou des outils de nettoyage.

1. Using the original MSI

  • Si vous avez accès au fichier MSI d'origine utilisé pour l'installation, vous pouvez simplement cliquer avec le bouton droit de la souris dans l'Explorateur Windows et sélectionner Désinstaller .
  • Vous pouvez également désinstaller via la ligne de commande, comme expliqué à la section 3.

2. Using the old ARP Applet OR new Windows 8/10 Settings Interface

  • Je dois juste mentionner la (les) approche (s) normale (s) bien que ce soit évident

    • ARP = Add / Remove Programs Applet ( appwiz.cpl )
    • Windows 10 Settings Interface = > Nouveau shell pour la même opération
  • ARP :

    • Partir démarrer & # 8594; exécuter & # 8594; Appwiz .cpl & # 8594; ENTER pour ouvrir l'applet Ajout / Suppression de programmes (ou cliquez sur Ajouter / Supprimer des programmes dans le panneau de configuration)
    • Cliquez sur " Supprimer " pour le produit que vous souhaitez désinstaller
  • Interface de paramètres (Windows 8/10):

    • Utiliser la nouvelle interface graphique de configuration dans Windows 8/10
    • Clé Windows + Tap I = > Apps & Features . Sélectionnez l'entrée et désinstallez.
    • Certains rapports d'erreurs lors de l'invocation de la désinstallation de cette manière. S'il vous plaît ajouter des commentaires ci-dessous si vu.

3. Using msiexec.exe command line (directly or via a batch file)

  • Vous pouvez désinstaller via une invite de commande ( cmd.exe ), fichier de traitement par lots ou même à partir d'un fichier exécutable sous la forme opération du shell .
  • Pour ce faire, transmettez le GUID du produit (consultez la section ci-dessous pour savoir comment trouver ce GUID ) ou chemin d'accès au fichier MSI d'origine, si disponible, vers msiexec.exe .
  • Pour toutes les lignes de commande ci-dessous, vous pouvez ajouter /qn à effectuer la désinstallation en mode silencieux . Voici comment une désinstallation s’exécute lorsqu’elle est déclenchée à partir de l’applet Ajout / Suppression.

    • Option 1: désinstallation interactive de base (accès au fichier MSI d'origine):

       msiexec.exe /x "c:\filename.msi"
      
    • Option 2: désinstallation interactive de base via le GUID du produit (aucun accès au fichier MSI d'origine - voici comment trouver le GUID du produit - même lien que ci-dessous):

       msiexec.exe /x {11111111-1111-1111-1111-11111111111X}
      
    • Option 3: désinstallation interactive avec fichier journal détaillé :

       msiexec.exe /x "c:\filename.msi" /L*V "C:\msilog.log"
       msiexec.exe /x {11111111-1111-1111-1111-11111111111X} /L*V "C:\msilog.log"
      
    • Option 4: désinstallation interactive avec fichier journal détaillé et détaillé ( prolixe, option de vidage du journal - écrit le journal de manière continue, peut être très lent):

       msiexec.exe /x "c:\filename.msi" /L*V! "C:\msilog.log"
       msiexec.exe /x {11111111-1111-1111-1111-11111111111X} /L*V! "C:\msilog.log"
      
      • Le flush à consignerCette option ralentit la désinstallation car le fichier journal est écrit en continu et non par lots. Cela garantit qu'aucune mémoire tampon de journal n'est perdue en cas de blocage de l'installation.

      • En d'autres termes, activez cette option si votre configuration plante et que votre fichier journal détaillé ne contient aucune information utile . Supprimez le point d'exclamation pour désactiver l'option vider dans le journal et la désinstallation sera beaucoup plus rapide. Vous obtenez toujours une journalisation détaillée, mais comme indiqué, certains tampons de journal pourraient être perdus.

    • Option 5 (recommandée): désinstallation en mode silencieux avec un fichier journal détaillé - suppression des redémarrages (pas de vidage dans le journal - voir l'option précédente pour connaître la signification de cela):

       msiexec.exe /x "c:\filename.msi" /QN /L*V "C:\msilog.log" REBOOT=R
       msiexec.exe /x {11111111-1111-1111-1111-11111111111X} /QN /L*V "C:\msilog.log" REBOOT=R
      

      Explication rapide du paramètre (depuis que je recommande cette option):

       /X = run uninstall sequence
       /QN = run completely silently
       /L*V "C:\msilog.log"= verbose logging at path specified
       {11111111-1111-1111-1111-11111111111X} = product guid of app to uninstall
       REBOOT=R = prevent unexpected reboot of computer
      

      Encore une fois, comment trouver le guide de produit: Comment puis-je trouver le produit GUID d'une configuration MSI installée? (à désinstaller si vous n'avez pas le MSI d'origine à spécifier dans la commande de désinstallation).

  • Conseil supérieur : si vous créez un fichier journal pour votre désinstallation, vous pouvez localiser les problèmes dans le journal en recherche de la & Valeur 3 &"; . Ceci est particulièrement utile pour les fichiers commentés, car ils le sont: -).

  • Comment trouver le GUID du produit pour un MSI installé ?

  • Plus d'informations sur la journalisation à partir de installsite.org : Comment créer un fichier journal de mon installation ? - Un excellent aperçu des différentes options et des spécificités de la journalisation InstallShield.

  • Msiexec (options de ligne de commande) : présentation de la ligne de commande de msiexec.exe à partir de MSDN . Voici la version de Technet . / li>

4. Using the cached MSI database in the super hidden cache folder

    get-wmiobject Win32_Product | Format-Table Name, LocalPackage -AutoSize

Entrez la description de l'image ici>

5. Using PowerShell

6. Using the .NET DTF Class Library (élément de la boîte à outils WiX )

    using Microsoft.Deployment.WindowsInstaller;

    public static void Uninstall( string productCode)
    {
      Installer.ConfigureProduct(productCode, 0, InstallState.Absent, "REBOOT=\"R\"");
    }

7. Using the Windows Installer Automation API

8. Using a Windows Installer major upgrade

  • Une mise à niveau majeure de Windows Installer peut avoir lieu lors de l'installation d'un autre fichier MSI.
  • Une mise à niveau majeure est créée en identifiant les produits connexes dans les " Tableau de mise à niveau &" ;. Ces configurations associées sont ensuite traitées comme spécifié dans le tableau. Cela signifie généralement qu'elles sont désinstallées, mais la configuration principale peut également être abandonnée (généralement utilisée pour détecter les versions les plus récentes de votre propre application présente sur la boîte).

9. Using Deployment Systems / Remote Administration Systems

  • SCCM , CA Unicenter , IBM Tivoli , Altiris , une suite client de gestion, ainsi que plusieurs autres
  • Ces outils proposent une gestion avancée des PC clients, notamment l'installation et la désinstallation de fichiers MSI
  • Ces outils semblent utiliser une combinaison de msiexec.exe, d’automatisation, de WMI , etc. ... et même leur propre façon d'invoquer les installs et uninstalls.
  • D'après mon expérience, ces outils utilisent beaucoup de & "; personnalité &"; et vous devez vous adapter à leurs différentes façons de faire les choses.

10. Using WMI - Windows Management Instrumentation

11. Using a third-party tool such as ccleaner or similar

  • Plusieurs applications Windows disposent de leur propre interface pour désinstaller non seulement les packages MSI, mais également les programmes d'installation hérités.
  • Je ne souhaite pas faire ici de recommandations sur des outils spécifiques (en particulier commerciaux), mais sur le bien connu CCleaner. propose une interface de désinstallation (et une version gratuite). Je devrais également ajouter que cet outil a subi un attaque de logiciels malveillants récemment .
  • Je suppose que nous devrions tous nous rappeler que même les logiciels inoffensifs peuvent recevoir des logiciels malveillants à leurs emplacements de téléchargement (attaque FTP).
    • J'utilise virustotal.com pour consulter mes téléchargements et Explorateur de processus Sysinternals pour vérifier les processus en cours après l'installation, avec une sécurité régulière logiciel (selon ce qui est disponible).
    • Une quantité surprenante de " zone grise " les logiciels sont généralement utilisés avec cette approche (barres d'outils, smileys, adwares, etc.), ainsi que plusieurs faux positifs (ils peuvent également causer des problèmes lorsque les logiciels de sécurité bloquent leur accès ou les mettent en quarantaine en faisant beaucoup de fuzz). Et certainement aussi de vrais logiciels malveillants.
    • Vous trouverez des conseils d'utilisation pour Process Explorer ici - une série de tweets - ceci L'outil Process Explorer se connecte à VirusTotal.com pour vérifier tous les processus en cours de manière interactive: il vous suffit de quelques étapes de configuration. .
    • Je dois noter que Process Explorer fournit une vérification de la signature du fichier, mais pas d'heuristique - pour autant que je sache (aucune vérification d'opérations suspectes, juste une vérification avec plus de 60 suites de sécurité pour les fichiers marqués). Vous avez besoin d'un outil de sécurité régulier pour la protection heuristique interactive en ligne.ection.
    • Pour ce qui en vaut la peine, je pense que certains logiciels de sécurité peuvent causer plus de problèmes faux positifs que de logiciels malveillants. Derniers mots célèbres à l'ère de la rançon ...
    • C’est une digression suffisante. Je ne veux tout simplement pas voir les gens télécharger des logiciels malveillants. Effectuez au moins votre vérification virustotal.com .
  • La désinstallation de cette manière devrait fonctionner correctement. Je pense que ces outils gâchent trop de choses lorsque vous essayez leurs & "Fonctionnalités de nettoyage &"; bien que. Utiliser avec précaution. Si vous utilisez uniquement la fonctionnalité de désinstallation, vous devriez être OK.

12. Using a cleanup tool such as msizap system restore

  • Pour être complet, msizap.exe doit être mentionné bien qu'il soit obsolète , non pris en charge et obsolète . Il ne doit être utilisé sur aucune version Windows plus récente
  • Cet outil de ligne de commande ( msizap.exe ) dispose également d'une interface utilisateur graphique ( MSICUU2.exe ). Les deux outils sont dépréciés.
  • Ces outils étaient destinés à nettoyer les désinstallations échouant :
  • Généralement, dans les rares cas où le fichier MSI mis en cache avec le nom aléatoire est manquant par erreur et que la désinstallation échoue pour cette raison tout en demandant le fichier MSI d'origine. C'est un problème rare, mais je l'ai vu moi-même. Quelques causes possibles: déplacé vers cette réponse .
    • Mots clés: interférence de restauration du système, applications de nettoyage défectueuses, crash de msiexec.exe, panne de courant, interférence des logiciels de sécurité, erreurs de débogage du développement MSI (codes de paquetages identiques, etc.), bricolage et piratage utilisateur (contenu ici). ? économiser de l'espace?), etc ...
    • Il pourrait également être utilisé pour supprimer toute installation MSI, bien que cela ne soit évidemment pas conseillé.
    • Plus d'informations: Pourquoi MSI a-t-il besoin du fichier .msi d'origine pour procéder à la désinstallation?
  • Cet outil de support plus récent (cet outil est maintenant également obsolète) peut être essayé sur les versions récentes de Windows si vous avez des packages MSI obsolètes nécessitant une désinstallation.
  • Certains ont suggéré d'utiliser l'outil lié à saschabeaumont: Désinstaller sans fichier MSI . Si vous l'essayez et que cela fonctionne, assurez-vous de nous le faire savoir.
  • Si vous avez accès au fichier MSI d'origine utilisé pour installer le produit, vous pouvez l'utiliser pour exécuter la désinstallation. Ce doit être le MSI exact qui a été utilisé, et pas seulement un similaire.

13. ("installation undo" - last resort IMHO) Windows Installer Functions (C++) Orca, 10.1.17134.12

  • À proprement parler, cela ne constitue pas un moyen de " désinstaller " mais pour " annuler " la dernière installation, ou plusieurs installations d'ailleurs.
  • La restauration via un point de restauration ramène le système à un état d'installation précédent (vous pouvez trouver des vidéos de démonstration sur YouTube ou sur un site similaire).
  • Notez que cette fonctionnalité peut être désactivée entièrement ou partiellement. Il est possible de la désactiver de manière permanente pour l’ensemble de la machine ou de procéder au cas par cas.
  • J'ai constaté de nouveaux problèmes d'installation insolubles résultant d'une restauration du système, mais cela fonctionne normalement . Évidemment, n'utilisez pas cette fonctionnalité pour le plaisir. En dernier recours, il vaut mieux utiliser l'annulation de nouveaux pilotes ou de configurations qui viennent d'être installées et qui posent des problèmes immédiats ( écran bleu , redémarrage, instabilité, etc.).
  • Plus vous remonterez longtemps, plus vous ferez de nouvelles retouches et plus le risque sera grand. La plupart des systèmes ne disposent que de quelques points de restauration, et la plupart d’entre eux remontent à un mois ou deux, je crois.
  • Sachez que la restauration du système peut affecter les mises à jour Windows qui doivent ensuite être réappliquées, ainsi que de nombreux autres paramètres système. Au-delà des simples inconvénients, cela peut également provoquer des problèmes de sécurité et faire en sorte que vous souhaitiez exécuter un contrôle de sécurité spécifique sur la ou les zones cibles à l'aide de Microsoft Baseline Security Analyzer ou des outils similaires.
  • Depuis que j'ai mentionné la restauration du système, je suppose que je devrais mentionner la dernière fonctionnalité de bonne configuration connue . Cette fonctionnalité n'a rien à voir avec la désinstallation ou la restauration du système, mais il s'agit de la dernière configuration de démarrage qui a fonctionné ou qui a abouti à un système en cours d'exécution. Il peut être utilisé pour remettre votre système en marche s'il bleuscreen ou s’arrête pendant le démarrage. Cela se produit souvent après l’installation du pilote.

14. prodcode

Pour être complet, je suppose que nous devrions mentionner le cœur de tout cela - la manière la plus simple: les fonctions de Win32 Windows Installer API . Ce sont probablement les fonctions utilisées par la plupart, sinon toutes les autres approches énumérées ci-dessus & "Sous le capot &"; Ils sont principalement utilisés par les applications ou les solutions traitant directement de MSI en tant que technologie.

Il existe une réponse sur serverfault.com qui pourrait être intéressante, sous la forme est un résumé des différentes méthodes de désinstallation par programme (fonctions d’installation COM Automation, .NET, Win32).

Vous trouverez ci-dessous un extrait de code C ++ indiquant comment désinstaller <=> par code de produit à l'aide d'un appel à Fonction MsiConfigureProductEx . Pour désinstaller un autre produit, remplacez le GUID spécifié pour <=> par celui de votre produit. Pour trouver le code produit, consultez la réponse suivante: Comment puis-je trouver le GUID du produit d'une configuration MSI installée?

La désinstallation aura lieu en mode graphique complet. Pour fonctionner en mode silencieux ou en un autre mode graphique (réduit, basique, etc.), veuillez consulter la: Fonction MsiSetInternalUI .

#include "pch.h"

#define WIN32_LEAN_AND_MEAN //Minimize includes from Windows.h
#include <windows.h>
#include <msi.h> // Windows Installer
#include <tchar.h> 

#pragma comment(lib, "msi.lib") // To make code link

int main()
{
    const TCHAR noreboot[] = _T("REBOOT=ReallySuppress");
    const TCHAR prodcode[39] = _T("{D7B80ABC-1950-37B8-F851-C3783EED9C93}"); // Orca, 10.1.17134.12

    UINT res = MsiConfigureProductEx(prodcode, INSTALLLEVEL_DEFAULT, INSTALLSTATE_ABSENT, noreboot);

    return res; // Error Codes: https://msdn.microsoft.com/en-us/library/windows/desktop/aa376931(v=vs.85).aspx
}

L'extrait de code a été créé et testé avec la dernière version de Visual Studio 2017 de septembre 2018:

  1. Créer une nouvelle & application console Windows " à partir de Visual C ++ = > Bureau Windows.
  2. Copiez et collez le code ci-dessus dans votre fichier CPP principal (en remplaçant tout ce qui se trouve là-bas).
  3. Cela devrait être cela pour pouvoir exécuter le code. Peut-être définir un point d'arrêt, construire et exécuter.

    • Prenez garde aux modifications apportées aux modèles par défaut dans VS2017 et aux erreurs étranges pouvant en résulter: Il y a trop d'erreurs pour que le moteur IntelliSense fonctionne correctement .
    • UPDATE de septembre 2018 : les modèles ont à nouveau été modifiés. Je ne vois plus le problème ci-dessus.
    • Le MSLe lien DN dans le code répertorie les messages d'erreur possibles renvoyés par msiexec.exe.

N'oubliez pas non plus qu'une désinstallation peut être lancée à l'aide de la commande WMIC:

wmic product get name - > Ceci listera les noms de toutes les applications installées

wmic product where name='myappsname' call uninstall - > cela désinstallera l'application.

L'extension de fichier msi est mappée à msiexec (de la même manière, taper un nom de fichier .txt sur une invite de commande lance le gestionnaire de fichiers Notepad / default .txt pour afficher le fichier).

Ainsi, la saisie d’un nom de fichier avec une extension .msi exécute réellement msiexec avec le fichier MSI en tant qu’argument et prend l’action par défaut, install. Pour cette raison, la désinstallation nécessite que vous appeliez msiexec avec le commutateur de désinstallation pour le désinstaller.

wmic product get name

Obtient simplement le cmd ... toujours clignotant _ après quelques minutes

dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, si vous trouvez le dossier portant le nom du logiciel que vous essayez d'installer (et non celui nommé avec ProductCode), la chaîne UninstallString pointe sur le propre programme de désinstallation de l'application C:\Program Files\Zune\ZuneSetup.exe /x

Je voudrais essayer la syntaxe suivante - cela fonctionne pour moi.

msiexec /x filename.msi /q 

Je suppose que lorsque vous tapez int file.msi dans la ligne de commande, Windows appelle automatiquement msiexec file.msi pour vous. Je suppose cela parce que lorsque vous tapez picture.png, la visionneuse d'images par défaut apparaît.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top