Por que você não pode desinstalar vários programas ao mesmo tempo no Windows?

99

Por que o Windows não permite desinstalar ou remover vários programas ao mesmo tempo? Qual é o raciocínio por trás disso? Será que vai atrapalhar um sistema interno?

Não estou procurando como desinstalar vários programas ao mesmo tempo, estou simplesmente procurando uma razão pela qual não seria uma opção.

Jeroen Bollen
fonte
9
Para impedir as pessoas de desinstalarem tudo de uma vez ... talvez.
M.Bennett
@ M.Bennett Eu também estava pensando nisso, mas não há como selecionar vários programas para que os usuários não possam desinstalar tudo por acidente.
Jeroen Bollen #
5
Na verdade, você pode remover vários programas ao mesmo tempo, o único Windows Installer que impede a desinstalação de vários programas, isso porque permite apenas uma única instância. Fácil o suficiente para excluir os arquivos de um programa, você pode excluir todo o conteúdo dos Arquivos de Programa, se desejar, que desinstalará esses programas de maneira não eficaz.
Ramhound 19/03/14
@ Ramhound: Você parece ser o único aqui que entendeu corretamente a intenção do autor: ele quer que o sistema desinstale os programas em sequência . Os respondentes aqui entenderam sua pergunta de maneira diferente: se é possível desinstalar simultaneamente vários programas. Escusado será dizer que, no Linux, é facilmente possível: você apenas digita apt-get -y uninstall prog1 prog2 prog3.
precisa
4
@ NiccoloM Minha pergunta era realmente por que você não pode simultaneamente. : P
Jeroen Bollen

Respostas:

101

Se você ler algo sobre como o sistema instalador do Windows funciona, é óbvio que eles aplicaram algumas idéias de bancos de dados transacionais para programar a instalação e manutenção, sem mencionar que os .msipróprios arquivos são um banco de dados.

Sempre existe a pergunta no design de qualquer banco de dados - você quer velocidade ou precisão / segurança? Dado que os instaladores podem modificar a configuração do sistema e que um acidente pode tornar o sistema inoperante, a segurança recebe prioridade sobre a velocidade. Um dos motivos pelos quais os .msiinstaladores são tão lentos é porque os arquivos de reversão são criados para cada arquivo etc. que serão modificados e excluídos posteriormente - permitindo que as alterações sejam "revertidas" se algo der errado no meio das coisas ( como falta de energia ou falha no sistema).

Agora, acredito que o mecanismo MSI impõe a instalação, modificação ou remoção de apenas um programa por vez - se você tentar executar um .msienquanto outro está desinstalando, por exemplo, ele não será executado ou aguardará a desinstalação atualmente em execução terminar. Os instaladores não MSI podem não se comportar dessa maneira - pois eles não usam o mecanismo MSI. Mas, devido a essa decisão de design de segurança, é provavelmente por isso que appwiz.cplinsiste apenas em permitir que um desinstalador seja chamado de uma só vez.

O CCleaner permite que você inicie desinstaladores sem esperar pela conclusão dos que estão sendo executados anteriormente. Os instaladores do MSI provavelmente ainda não funcionarão em paralelo devido ao acima.

LawrenceC
fonte
29
Uma coisa a notar é que os gerenciadores de pacotes em sistemas semelhantes ao Unix também não tentam remover vários pacotes de uma só vez pelo mesmo motivo. Se você remover vários pacotes, eles serão removidos um após o outro, possivelmente cada um em sua própria transação.
Joey
+1 resposta excelente! Uma coisa a notar. Se você tiver vários executáveis ​​independentes, como CPU-Z, em uma pasta, fique à vontade para desinstalar (excluir) todos de uma vez.
MonkeyZeus
4
@ Joey Isso é verdade, mas você pode pelo menos instruir os gerenciadores de pacotes * nix a fazer isso e eles resolverão o pedido. Penso que o maior problema é que o Windows não entende o conceito de dependência no nível de gerenciamento de pacotes.
tudor
4
@tudor: Eu acho que é apenas uma diferença na maneira como os aplicativos são gerenciados nos diferentes sistemas operacionais. O Windows gerencia aplicativos , enquanto no Unix, os gerenciadores de pacotes gerenciam, bem, pacotes , que podem ser bibliotecas, aplicativos e coisas semelhantes. O Windows pode gerenciar essas coisas (isso é feito internamente, com certeza, por exemplo, quando você ativa ou desativa os componentes do Windows), mas ter bibliotecas de terceiros em todo o sistema não se saiu tão bem no final dos anos 90, portanto, os aplicativos são incentivados a apenas agrupar todas as suas dependências.
Joey
@ Joey, eu entendo o seu ponto, mas culpar o usuário (ou desenvolvedor) não vai chegar muito longe em um espaço compartilhado tão aberto. Os usuários veem apenas aplicativos, mas aplicativos são apenas um subconjunto de pacotes. Várias bibliotecas, mesmo com diferentes versões e fornecedores, precisam ser gerenciadas . Exigir que o desenvolvedor o gerencie era otimista, na melhor das hipóteses, IMHO, e resultou em inchaço intenso. A Windows Store faz algumas incursões nisso, mas ainda está muito longe da resolução de dependência automagica, o que torna os * nixes muito mais simples nesse sentido.
tudor
19

Isso realmente se aplica apenas a programas que usam o sistema Windows Installer .

Se um programa usa seus próprios sistemas (des) instaladores, nada impede que você execute outro desinstalador ao mesmo tempo.

O Windows Installer limita o número de instâncias para evitar conflitos por vários programas enquanto eles estão alterando configurações e arquivos do sistema (geralmente compartilhados).

A maioria dos desinstaladores controla o que está mudando, para que possam reverter com êxito se houver uma falha. Se alguém não estiver ciente de todas as alterações que estão sendo feitas (por outros desinstaladores), poderá realmente piorar as coisas se tentar reverter uma instalação com falha.

O sistema Windows Installer foi criado com a intenção de ser um sistema unificado para uso de todos os desenvolvedores de aplicativos (no Windows), para ajudar a evitar problemas como esses.

Ƭᴇcʜιᴇ007
fonte
9

As tarefas de desinstalação freqüentemente modificam os arquivos compartilhados por vários programas ou arquivos de sistema \ the Registry (um motivo parcial para a necessidade de poder administrativo para fazê-lo). Se várias tarefas de desinstalação forem executadas ao mesmo tempo, elas poderão entrar em conflito. Se você já se deparou com "DLL Hell", seria o mesmo. Outros programas ou o próprio Windows podem ser deixados em um estado inconsistente.

KA
fonte
É disso que se trata a resposta certa. Se o programa "A" instalar a DLL do Windows não essencial "X" e o programa "B" exigirem seu instalador, provavelmente fará parte do desinstalador. Mas desinstalar a DLL "X" interromperia o programa "A". Portanto, o desinstalador geralmente pergunta sobre DLLs compartilhadas e outros arquivos, se eles devem ser excluídos. Se executado simultaneamente, esse tipo de solicitação não funcionará corretamente. Por fim, e talvez mais importante, todos esqueceram o Registro do Windows - que é um componente principal do banco de dados, atualizado com freqüência nos instaladores / desinstaladores.
Darrell Teague
-1

Desinstalar programas simultaneamente, além de ter os possíveis problemas mencionados, tem muito pouco benefício: não será muito mais rápido que desinstalar os programas sequencialmente. Desinstalar um programa é uma tarefa que envolve E / S de disco. A execução de vários programas que executam E / S não é mais rápida do que executá-los sequencialmente (a menos que os programas estejam instalados em dois discos físicos separados). De fato, é provável que seja mais lento porque as duas tarefas de E / S concorrentes tornarão o cache do disco menos eficiente e as cabeças físicas do disco precisarão pular de um lugar para outro.

Niccolo M.
fonte
Isso é irrelevante como resposta. Tudo o que envolve a E / S do disco pode desacelerar se você fizer muitas coisas ao mesmo tempo, mas a única coisa que o Windows realmente impede que você faça é a instalação (des) simultânea. E há um bom motivo para querer fazer instalações (des) simultâneas - seria muito mais fácil para os usuários conseguirem enfileirar várias operações e permitir que todos corressem juntos, em vez de ficarem sentados e esperar para cada um concluir por sua vez. Além disso, o problema de contenção é obsoleto com SSDs.
Andrew Medico 21/03