Eu estraguei tudo, como posso desinstalar meu programa?
-
13-12-2019 - |
Pergunta
Meu instalador Wix funcionou ao instalar meu programa, mas está quebrado para desinstalação.Um arquivo é removido muito cedo e será necessário mais adiante.O desinstalador falha e reverte suas alterações.
Isso significa que não posso remover o pacote da minha máquina e, portanto, não posso instalar outras compilações do meu instalador (um inconveniente considerável).Como posso forçar a remoção do pacote?
Solução
Atualização, Stein Åsmul: injetando esta lista mais recente de abordagens de limpeza.
Encontre seu pacote em
C:\Windows\Installer
, onde o Windows mantém cópias dos pacotes MSI instalados.Os nomes são gerados aleatoriamente, então você terá que olhar as datas de criação dos arquivos.Abra o arquivo MSI com orca.(Infelizmente não existe um download simples para o instalador do orca.Você pode obtê-lo instalando o "MSI Tools" do SDK do Windows 10, e, em seguida, pesquisando orca.msi em
C:\Program Files (x86)\Windows Kits
.)Exclua a ação personalizada ofensiva do Tabela CustomAction
Agora você deve conseguir desinstalar o pacote.
editar:de acordo com a resposta de @ darkrock76 abaixo, a pasta da etapa 1 também pode ser C:\ProgramData\Package Cache\
.Eu tenho ambos na minha máquina com Windows 7 SP1.Não consegui encontrar imediatamente documentação sobre isso.
ATUALIZAR:Olá Wim, obrigado pelas boas informações de COM sem registro que você forneceu anteriormente!Algumas atualizações sobre esse problema de desinstalação:A resposta de darkrock76 está incorreta, por favor veja meu comentário para ele abaixo.Além disso, em vez de excluir a ação personalizada na etapa 3 acima, você pode definir sua condição na tabela InstallExecuteSequence como 0 (zero numérico == falso) para evitar que ela seja executada.A exclusão da entrada da tabela de ação personalizada deixa algumas referências de chave estrangeira quebradas (pode falhar em algum momento, eu acho). A ferramenta Microsoft FixIt também pode ser tentado antes de recorrer a este hack.Há algumas ferramentas/editores/visualizadores MSI gratuitos e alternativos (na parte inferior) além do Orca.Talvez o usuário também deva fazer um zip do MSI original antes de editar, mas acho que isso está implícito.Por favor, exclua este comentário confuso assim que obtê-lo - posso escrever um rápido resumo das diferentes maneiras de forçar essas desinstalações se tiver tempo (a ferramenta FixIt MS, usando pequenas atualizações, edite o MSI em cache diretamente, aplique a transformação para o desinstalar e tudo o mais que houver).Continue com a implantação :-).Sua resposta COM sem registro me ajudou bastante (Stein) no passado.Muito obrigado.
E esqueci uma coisa: você pode encontrar o arquivo MSI de cache real usando o Powershell.Isso foi para um pacote, você também pode obter todos os pacotes (role para baixo até a primeira captura de tela).
Outras dicas
Este comando geralmente funciona para mim:
msiexec /fv installer.msi
Ele recupera um pouco o instalador, então você pode tentar novamente com um corrigido.
Uma vez, esse comando não funcionou e tive que usar o Microsoft FixIt.Resolveu o problema (um grande choque para mim).
Dependendo do motivo exato do comportamento descrito, você pode ter pelo menos algumas opções.
Se o motivo da falha for uma ação personalizada executada na desinstalação, e essa ação personalizada estiver condicionada a algumas propriedades que você pode influenciar, você pode tentar passar o valor desejado por meio da linha de comando:
msiexec /x {YOUR-PRODUCTCODE-HERE} RUNMYACTION=false
Nesta amostra RUNMYACTION
é uma propriedade do Windows Installer que participa de uma condição de ação personalizada e, se você passar false
como seu valor, a ação não será executada.
Caso contrário, você pode corrigir a lógica (ou apenas desabilitar explicitamente a ação personalizada) e construir o novo pacote MSI.Em seguida, faça upload para a máquina de destino e execute assim:
msiexec /i YourPackage.msi REINSTALL=ALL REINSTALLMODE=vomus
Aqui YourPackage.msi
é um novo pacote fixo, REINSTALL=ALL
instrui o msiexec
para reinstalar o produto usando este novo pacote e REINSTALLMODE=vomus
(o v
parte dele) irá armazenar novamente em cache o pacote MSI e você poderá removê-lo normalmente depois.
Uma nota lateral:você deve testar sua instalação em uma máquina virtual para não arriscar a sua máquina real.
FYI: No Windows 8.1 Os instaladores foram movidos aqui: C: \ ProgramData \ Package Cache \
Se você estiver realmente desesperado e todas as soluções acima não funcionam, tente
Isso apagará tudo o que seu instalador colocará em uma máquina
Pouco aviso
Geralmente eu apenas procuro <Your Installer's Name>.msi
ou <Your Installer's Company Name>
no registro e exclua algumas das chaves de desinstalação de alguns dos Products
sob as árvores do instalador do Windows e tudo geralmente funciona bem e elegante depois, embora isso SERIA deixe algumas coisas por aí, como instaladores em cache e possivelmente toneladas de outras chaves de registro para cada arquivo instalado, etc.mas é SEMPRE funcionou para mim ao desenvolver instaladores porque, honestamente, quem se importa se um MSI sobrar e for armazenado em cache em algum lugar?Você está usando a máquina para desenvolvimento de qualquer maneira, certo?
Eu usei esta pequena ferramenta também da Microsoft
Basicamente, esta ferramenta pode ser usada para "reparar problemas, incluindo chaves de registro corrompidas que o bloqueiam de instalar ou remover programas"
O que corrige:
- .
-
Chaves de registro corrompidas em sistemas operacionais de 64 bits
-
Chaves de registro corrompidas que controlam os dados de atualização
-
Problemas que impedem que novos programas sejam instalados
-
Problemas que impedem que os programas existentes sejam completamente desinstalados ou atualizados
-
Problemas que o bloqueiam de desinstalar um programa através de adicionar ou remover programas (ou programas e recursos) no painel de controle
- Windows 7
- windows 8
- Windows 8.1
- windows 10
Pode ser usado para: