Pergunta

msiexec é software prompt de comando que instala programa de um MSI . Mas eu descobri que você pode instalar um arquivo MSI a partir da linha de comando por apenas digitando o nome do arquivo MSI na linha de comando.

Mas, para desinstalar o arquivo MSI, parece que você tem que chamar o programa msiexec e dar-lhe um /x ou /uninstall.

Como posso desinstalar um MSI a partir da linha de comando sem usar a rotina msiexec?

Foi útil?

Solução

Resposta curta: você não pode. Use MSIEXEC / x

Resposta longa: Quando você executa o arquivo MSI diretamente na linha de comando, tudo o que está acontecendo é que ele roda MSIEXEC para você. Esta associação é armazenado no Registro. Você pode ver uma lista de associações de (no Windows Explorer) em Ferramentas / Opções de Pasta / Tipos de arquivo.

Por exemplo, você pode executar um arquivo .DOC a partir da linha de comando, e WordPad ou WinWord irá abri-lo para você.

Se você olhar no registro em HKEY_CLASSES_ROOT\.msi, você vai ver que arquivos .msi estão associados com o ProgID "Msi.Package". Se você olhar no HKEY_CLASSES_ROOT\Msi.Package\shell\Open\command, você verá a linha de comando que o Windows realmente usa quando você "correr" um arquivo .msi.

Outras dicas

Há muitas maneiras de desinstalar um pacote MSI. Este destina-se como uma "referência".

Em resumo você pode desinstalar via: msiexec.exe , ARP , WMI , PowerShell , implantação de Sistemas como SCCM , VBScript / COM Automation, DTF , ou através de escondido do Windows cache de pasta , e algumas outras opções apresentadas a seguir.

Os primeiros parágrafos oferecem petiscos importantes MSI, então há 14 seções com diferentes maneiras para desinstalar um arquivo MSI. Puh.

"Babble, Babble - Over": Secções 1 , 2 e 3 é o desinstalação normais aproxima (e, portanto, recomendado). Personally I use option 3 or 5 from section 3 (ambas as opções com o registo, mas a opção 5 é executado silenciosamente também). Se você é muito ocupado , ignore toda a tagarelice e ir para um destes - que vai começar o trabalho feito

.

Se você tem problemas para desinstalar completamente e estão à procura de uma alternativa para a obsoleta MSIZap.exe e / ou Windows Installer CleanUp Utility ( MSICUU2.exe ), você pode experimentar o novo ferramenta FixIt da Microsoft ( ou a página internacional). Pode aparentemente trabalho para outro problemas de instalação também.


Se você acha que MSI e Windows Installer é mais problema do que vale a pena, você pode querer ler sobre os benefícios corporativos de usar arquivos MSI .


InstallScript MSI configurações geralmente vêm embrulhados em um arquivo setup.exe . Para ler mais sobre os parâmetros a utilizar para desinstalar tais configurações consulte estes links: configuração. folha de referência pdf exe , Configuração. exe e Update.exe Command-Line Parameters .


Alguns arquivos MSI são instalados como parte de pacotes via mecanismo como Gravar (WiX Toolkit) ou InstallShield Suíte projetos. Isso pode fazer desinstalação ligeiramente diferente do que é visto abaixo. Aqui está um exemplo para InstallShield Suíte projectos .


Esteja ciente de que a execução de desinstalação silenciosamente ou interativamente pode causar resultados diferentes (!) . Para uma descrição bastante longa de porque este é o caso, por favor leia este post: Desinstalar a partir do Painel de Controle é diferente de Remover de .msi


Se você está inesperadamente solicitado para a mídia de instalação original ao tentar desinstalar, por favor leia esta resposta: Por que a MSI requer o arquivo .msi original para prosseguir com uma desinstalação? e talvez também a seção 12 abaixo para alguns detalhes técnicos importantes.


Se você tem CCleaner ou ferramentas de limpeza semelhantes instalados, talvez saltar para 11 .


Se desinstalação está falhando inteiramente (não é possível executar), ver secções 12 e 13 abaixo para uma forma potencial de " Desfazer " a instalação usando restauração do sistema e / ou ferramentas de limpeza.


1. Using the original MSI

  • Se você tiver acesso ao original MSI usado para a instalação, você pode simplesmente clique direito -lo em Windows Explorer e selecione Desinstalar .
  • Você também pode desinstalar via linha de comando, como explicado na seção 3.

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

  • Só tenho que mencionar a abordagem normal (es) embora seja óbvio

    • ARP = Add / Remove Programs Applet ( appwiz.cpl )
    • Windows 10 Settings Interface => New shell para mesma operação
  • ARP :

    • Ir start ? Executar ? appwiz.cpl ? ENTER , a fim de abrir os programas Adicionar / remover applets (ou clique programas Adicionar / Remover no painel de controle)
    • Clique em " Remover " para o produto que deseja desinstalar
  • Configurações de Interface (Windows 8/10):

    • Use as novas configurações de GUI no Windows 8/10
    • Windows Key + Tap I => Apps & Features . Selecione a entrada e desinstalação.
    • Alguns relatórios de erros ao chamar de desinstalação desta forma. Por favor adicionar comentários abaixo se visto.

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

  • Você pode desinstalar através do prompt de comando ( cmd.exe ), arquivo de lote ou ou até mesmo de dentro de um executável como um operação shell .
  • Você pode fazer isso passando o produto GUID (verificação abaixo para saber como encontrar este GUID ) ou o caminho para o arquivo MSI original, se disponível, para msiexec.exe .
  • Para todas as linhas de comando abaixo você pode adicionar /qn para fazer a desinstalação de execução em modo silencioso . Isto é como uma desinstalação é executado quando acionados a partir do add / applet de remover.

    • Opção 1: desinstalação interativo básico (acesso ao arquivo MSI original):

       msiexec.exe /x "c:\filename.msi"
      
    • Opção 2: desinstalação interativa Básico via produto GUID (sem acesso ao arquivo MSI original - aqui é como encontrar o GUID produto - mesmo link abaixo):

       msiexec.exe /x {11111111-1111-1111-1111-11111111111X}
      
    • Opção 3: desinstalação interativa com detalhado arquivo de log :

       msiexec.exe /x "c:\filename.msi" /L*V "C:\msilog.log"
       msiexec.exe /x {11111111-1111-1111-1111-11111111111X} /L*V "C:\msilog.log"
      
    • Opção 4: desinstalação interativa com corado, detalhado arquivo de log ( detalhado, flush paralog opção - log de gravação contínua, pode ser muito lento):

       msiexec.exe /x "c:\filename.msi" /L*V! "C:\msilog.log"
       msiexec.exe /x {11111111-1111-1111-1111-11111111111X} /L*V! "C:\msilog.log"
      
      • O rubor opção de log faz com que a desinstalação lento porque o arquivo de log é gravado continuamente em vez de em lotes. Isso assegura que não log-tampão é perdido se as falhas de configuração.

      • Em outras palavras, habilitar essa opção se sua configuração está falhando e não há nenhuma informação útil em seu arquivo detalhado de log . Remover o ponto de exclamação para desligar o flush opção para registrar e a desinstalação será muito mais rápido. Você ainda obter log detalhado, mas como afirmado alguns buffer de log podem ser perdidos.

    • Opção 5 (recomendado): Silent desinstalação com detalhado arquivo de log - suprimir reinicializações (sem flush para log - ver opção anterior para o que isso significa):

       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
      

      Quick Parâmetro Explicação (desde que eu recomendo esta opção):

       /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
      

      Mais uma vez, como encontrar o guid do produto: Como posso encontrar o produto GUID de uma instalação MSI instalado? (para desinstalação se você não tiver o MSI original para especificar no comando de desinstalação).

  • Dica : Se você criar um arquivo de log para sua desinstalação, você pode localizar problemas no log por pesquisar "value 3" . Isto é particularmente útil para detalhado arquivos, porque eles são tão, bem, detalhado: -).

  • Como encontrar o GUID do produto para uma instalação MSI ?

  • Mais informações sobre o registo de installsite.org : rel Como faço para criar um arquivo de log da minha instalação -?. grande visão geral de diferentes opções e também detalhes de registro de InstallShield

  • Msiexec (opções de linha de comando) - visão geral da linha de comando para msiexec.exe de MSDN . Aqui está a versão Technet .

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

  • MSI retira todos os táxis (versões mais antigas do Windows) e armazena em cache cada MSI instalado em uma pasta oculta do sistema super em % SystemRoot% \ Installer (você precisa mostrar arquivos ocultos para vê-lo).
  • Nota : Esta pasta oculta-ceia está agora a ser tratados de forma diferente no Windows 7 em diante. arquivos MSI agora são armazenados em cache full-size . Leia o fio ligado para mais detalhes -. Recomendado ler para qualquer pessoa que encontra esta resposta e violinos com configurações perigosas do Windows
  • Toda a MSI arquivos aqui terá um nome aleatório (formato hexadecimal) atribuído, mas você pode obter informações sobre cada MSI, mostrando a barra de status do Windows Explorer (View -> Status Bar) e, em seguida, selecionar um MSI. O fluxo resumo do MSI será visível na parte inferior da janela do Windows Explorer. Ou como Christopher Galpin poinst para fora, ligue a coluna "Comentários" no Windows Explorer e selecione o arquivo MSI ( consulte este artigo para saber como fazer isso ).
  • Depois de encontrar o MSI direita, apenas para a direita clique nele e ir Uninstall.
  • Você também pode usar o PowerShell para mostrar o caminho completo para o pacote em cache local, juntamente com o nome do produto. Esta é a opção mais fácil na minha opinião.
  • Para iniciar PowerShell : , mantenha pressionada a tecla Windows, toque R, solte a tecla Windows, digite "PowerShell" e pressione OK . Em seguida, maximizar a janela PowerShell e execute o comando a seguir:
    get-wmiobject Win32_Product | Format-Table Name, LocalPackage -AutoSize

Digite os detalhes da imagem aqui


5. Using PowerShell


6. Using the .NET DTF Class Library (parte de o conjunto de ferramentas 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

  • A Windows Installer grande atualização pode acontecer como parte da instalação de outro arquivo MSI.
  • Uma grande atualização é de autoria de identificação de produtos relacionados na MSI de " tabela de actualização ". Estas configurações relacionadas são então tratados como especificado na tabela. Geralmente isso significa que eles são desinstalados, mas a configuração principal também pode ser abortado em vez (normalmente usado para detectar versões mais elevados de sua própria aplicação presente na caixa).

9. Using Deployment Systems / Remote Administration Systems

  • SCCM , CA Unicenter , do IBM Tivoli , Altiris Client Management suite, e vários outros
  • Estas ferramentas apresentam avançada de gerenciamento de PC cliente, e isso inclui a instalação e desinstalaçãode MSI arquivos
  • Estas ferramentas parecem usar uma combinação de msiexec.exe, automação, WMI , etc ... e até mesmo a sua própria maneira de invocar instala e desinstala.
  • Na minha experiência, essas ferramentas têm um monte de "personalidade" e você precisa se adaptar às suas diferentes formas de fazer as coisas.

10. Using WMI - Windows Management Instrumentation


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

  • Várias aplicações do Windows apresentam a sua própria interface para a desinstalação não apenas pacotes MSI, mas instaladores legados também.
  • Não quero fazer qualquer recomendação ferramenta específica aqui (especialmente os comerciais), mas o bem conhecido CCleaner apresenta como uma interface de desinstalação (e tem uma versão gratuita). Gostaria também de acrescentar que essa ferramenta sofreu um ataque de malware recentemente .
  • Eu acho que todos nós devemos lembrar que o software ainda inofensiva pode ser injetado com malware em seus locais de download (ataque FTP).
    • virustotal.com para verificar meus downloads, e também Sysinternals Process Explorer para verificar os processos em execução após a instalação - juntamente com a segurança regulares software (o que for disponível).
    • Uma quantidade surpreendente de software "zona cinzenta" é normalmente encontrado com esta abordagem (barras de ferramentas, smileys, adware, etc ...), juntamente com vários falsos positivos (eles também podem causar problemas como software de segurança bloquear o seu acesso ou quarentenas -los fazendo um monte de fuzz). E malware certamente real também.
    • Algumas dicas de uso para Process Explorer pode ser encontrada aqui - uma série de tweets - este ferramenta Process Explorer anzóis até VirusTotal.com para verificar todos os processos em execução de forma interativa - tudovocê precisa está a poucos passos de configuração.
    • Devo observar que Process Explorer gera uma verificação de assinatura de arquivo, mas não heurística - tanto quanto eu entendo (sem cheque de operações suspeitas, apenas uma verificação com mais de 60 suítes de segurança para arquivos sinalizados). Você precisa de uma ferramenta de segurança regular para proteção interativa, heurística online.
    • Para o que vale a pena, acho que alguns fronteira software de segurança em causando problemas mais falso-positivos do que o malware faz dano. últimas palavras famosas na época de resgate-ware ...
    • É uma grande digressão suficiente - Eu só não quero ver as pessoas baixar malware. Faça o seu virustotal.com verificar, pelo menos.
  • A desinstalação como isso deve funcionar OK. Eu acho que essas ferramentas mexer com muitas coisas quando você tentar a "limpeza apresenta" embora. Use com cuidado. Se você só pode usar o recurso de desinstalação, você deve estar OK.

12. Using a cleanup tool such as msizap or similar

  • Para completar msizap.exe deve ser mencionado que seja deprecated , não suportado e ultrapassada . Não deve ser usado em todas as versões mais recentes do Windows
  • Esta ferramenta de linha de comando ( msizap.exe ) também tinha uma GUI disponível ( MSICUU2.exe ). Ambas as ferramentas são deprectated.
  • O uso pretendido dessas ferramentas foi para limpar desinstala falha :
  • Em geral, para o raro caso em que o MSI em cache com o nome aleatório é erroneamente faltando e desinstalação falhar por esta razão, enquanto pedindo a MSI originais. Este é um problema raro, mas eu mesmo já vi isso. Apenas algumas causas possíveis: Mudou-se para esta resposta .
    • Palavras-chave: restauração do sistema de interferência, maus aplicativos de limpeza, deixando de funcionar msiexec.exe, falta de energia, a interferência de software de segurança, desenvolvimento de depuração MSI erros (códigos dos volumes idênticos, etc ...), ajustes do usuário e hacking (o que é aqui ? economizar espaço?), etc ...
    • Também poderia ser usado para zap qualquer instalação MSI, no entanto, que obviamente não é aconselhável.
    • Mais informações: por que a MSI requer o arquivo .msi original para prosseguir com uma desinstalação?
  • Esta nova ferramenta de apoio (esta ferramenta é agora também obsoleto) pode ser julgado em versões recentes do Windows se você tiver pacotes MSI extinta necessitam de desinstalação.
  • Alguns sugeriram usar a ferramenta ligada ao aqui por saschabeaumont: Desinstalar sem um arquivo MSI . Se você tentar isso e ele funciona, por favor não se esqueça de nos avisar.
  • Se você tiver acesso à MSI original que foi realmente utilizado para instalar o produto, você pode usar isso para executar a desinstalação. Deve ser o MSI exato que foi utilizado, e não apenas um similar.

13. Using system restore ("installation undo" - last resort IMHO)

  • Este é, estritamente falando não uma forma de " desinstalação ", mas para " Desfazer " a última instalar, ou várias instalações para esse assunto.
  • Restaurar através de um ponto de restauração traz a volta do sistema para um estado de instalação anterior (você pode encontrar demonstrações em vídeo deste no YouTube ou um site similar).
  • Observe que o recurso pode ser desativado total ou parcialmente - é possível desativar permanentemente para toda a machine, ou adhoc por instalação.
  • Eu vi novas, problemas de instalação insolúveis resultantes de uma restauração do sistema, mas normalmente ele funciona OK . Obviamente não usar o recurso para se divertir. É um último recurso e é melhor usado para reversão de novos drivers ou configurações que acabaram de ser instalados e são encontrados para causar problemas imediatos ( bluescreen , reboots, instabilidade, etc ...).
  • Quanto mais tempo você voltar o mais retrabalho você vai criar para si mesmo, e quanto maior o risco será. A maioria dos sistemas possuem poucos pontos de restauração, ea maioria deles remontam apenas um mês ou dois eu acredito.
  • Esteja ciente de que a restauração do sistema pode afetar Windows Updates que deve, então, ser re-aplicado - bem como muitas outras configurações do sistema. Além aborrecimentos puras, isso também pode causar problemas de segurança para ressurgir e você pode querer executar uma verificação de segurança específica na caixa do alvo (es) usando Microsoft Baseline Security Analyzer ou ferramentas similares.
  • Uma vez que eu mencionei restauração do sistema Acho que eu deveria mencionar o Conhecido recurso Última configuração válida . Este recurso não tem nada a ver com a desinstalação ou restauração do sistema, mas é a última configuração de inicialização que trabalhou ou resultou em um sistema em execução. Ele pode ser usado para obter o sistema funcionando novamente se ele bluescreens ou paradas durante a inicialização. Isso muitas vezes acontece depois instala driver.

14. Windows Installer Functions (C++)

Para completar Eu acho que devemos mencionar o núcleo de tudo isso - o caminho-to-the-metal: as funções da API Win32 Windows Installer . Estas são provavelmente as funções utilizadas pela maioria, se não todas as outras abordagens listados acima "sob a capota". Eles são usados ??principalmente por aplicativos ou soluções que lidam diretamente com MSI como uma tecnologia.

Não há uma resposta sobre serverfault.com, que podem ser de interesse como um resumo das diferentes abordagens programáticas para desinstalar (COM Automation, .NET, Win32 instalador funções).

Abaixo, você vai encontrar um C ++ snippet mostrando como Orca, 10.1.17134.12 desinstalação pelo código do produto utilizando uma chamada para o MsiConfigureProductEx função . Para desinstalar o outro produto substituir o GUID especificado para prodcode com a pessoa certa para o seu produto. Para encontrar o código do produto, consulte esta resposta: Como posso encontrar o GUID produto de uma instalação MSI instalado?

A desinstalação vai acontecer no modo GUI completo. Para executar no modo silencioso ou de algum outro modo de GUI (reduzido, básico, etc ...), consulte o: MsiSetInternalUI função .

#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
}

O trecho foi feito e testado com a versão mais recente de Visual Studio 2017 a partir de setembro de 2018:

  1. Criar um novo "Windows Console Application" a partir do Visual C ++ => Windows Desktop.
  2. Copie e cole o código acima em seu arquivo CPP principal (substituindo tudo o que está lá).
  3. Isso deve ser que ele seja capaz de executar o código. Talvez definir um ponto de interrupção, construir e executar.

Lembre-se também que uma desinstalação pode ser iniciada usando o comando WMIC:

wmic product get name -> Isto irá listar os nomes de todos os aplicativos instalados

wmic product where name='myappsname' call uninstall -.> Isso irá desinstalar o aplicativo

A extensão do arquivo msi é mapeado para msiexec (mesma maneira digitando um nome de arquivo .txt em um manipulador de comando prompt de lançamentos Notepad / arquivo .txt padrão para exibir o arquivo).

Assim digitar um nome de arquivo com uma extensão .msi realmente funciona msiexec com o arquivo MSI como argumento e leva a ação padrão, instale. Por essa razão, a desinstalação requer que você invocar msiexec com interruptor de desinstalação para unstall-lo.

wmic product get name

Apenas recebe o cmd preso ... ainda piscando _ depois de alguns minutos

em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, se você pode encontrar a pasta com o nome do software que você está tentando instalar (não a um chamado com ProductCode), os pontos de UninstallString para próprio desinstalador do aplicativo C:\Program Files\Zune\ZuneSetup.exe /x

Gostaria de tentar a seguinte sintaxe -. Ele trabalha para mim

msiexec /x filename.msi /q 

Estou assumindo que quando você digita file.msi int na linha de comando, o Windows é automaticamente chamando file.msi msiexec para você. Estou assumindo isso porque quando você digita picture.png ele traz o visualizador de imagens padrão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top