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


Por que o Windows não permite que você desinstale ou remova vários programas de uma só vez? Qual é o raciocínio por trás disso? Será que vai atrapalhar um sistema interno?

Eu 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.


95


origem


Para evitar que as pessoas desinstalem tudo de uma vez ... talvez. - M.Bennett
@ M.Bennett Eu estava pensando nisso também, mas não há uma maneira de selecionar vários programas para que os usuários não possam realmente desinstalar tudo por acidente de qualquer maneira. - Jeroen Bollen
Na verdade, você pode remover vários programas de uma vez, seu único Windows Installer que impede a desinstalação de vários programas, isso porque permite apenas uma única instância de si mesmo. Fácil o suficiente para excluir os arquivos de programas, você pode excluir todo o conteúdo dos Arquivos de Programas, se quiser, que os desinstalará de forma pouco eficaz. - Ramhound
@Ramhound: Você parece ser o único aqui que entendeu corretamente a intenção do solicitante: ele quer que o sistema desinstale os programas dentro  seqüência. Os respondentes aqui entenderam sua pergunta de forma diferente: se é possível simultaneamente desinstalar vários programas. Escusado será dizer que, no Linux, é facilmente possível: basta digitar apt-get -y uninstall prog1 prog2 prog3. - Niccolo M.
@NiccoloM Minha pergunta foi, na verdade, por que você não pode simultaneamente. : P - Jeroen Bollen


Respostas:


Se você ler alguma coisa 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 o .msi os próprios arquivos são um banco de dados.

Há sempre a questão em projetar 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 poderia deixar o sistema inoperável, a segurança recebeu prioridade sobre a velocidade. Uma das razões pelas quais .msi os instaladores são tão lentos porque os arquivos de reversão são feitos para cada arquivo, etc., que serão modificados e depois excluídos depois - permitindo que quaisquer alterações sejam "revertidas" se algo der errado no meio das coisas (como falta de energia) ou falha do sistema).

Agora, acredito que o próprio mecanismo MSI impõe a instalação, modificação ou remoção de apenas um programa por vez - se você tentar executar um .msi enquanto outro está desinstalando, por exemplo, ele não será executado ou aguardará a conclusão da desinstalação em execução no momento. Os instaladores não-MSI podem não se comportar dessa maneira, pois não usam o mecanismo MSI. Mas por causa dessa decisão de projeto de segurança, provavelmente é por isso appwiz.cpl insiste em apenas permitir que um desinstalador seja chamado de uma só vez.

O CCleaner permite que você inicie desinstaladores sem esperar que os executores anteriores sejam concluídos. Os instaladores da MSI provavelmente ainda não funcionarão em paralelo devido ao acima.


100



Uma coisa a notar é que os gerenciadores de pacotes em sistemas Unix-like também não tentarão remover vários pacotes de uma vez pela mesma razão. 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 excelente resposta! Uma coisa a notar. Se você tiver vários executáveis ​​independentes, como CPU-Z, em uma pasta, sinta-se à vontade para desinstalá-los (excluir) todos de uma vez. - MonkeyZeus
@Joey Isso é verdade, mas você pode pelo menos instruir os gerentes de pacotes * nix a fazerem isso e eles vão resolver o pedido. Eu acho que o maior problema é que o Windows não entende o conceito de dependência no nível de gerenciamento de pacotes. - tudor
@tudor: Eu acho que é apenas uma diferença em como os aplicativos são gerenciados nos diferentes sistemas operacionais. O Windows gerencia aplicações, enquanto em gerenciadores de pacotes do tipo Unix gerenciam, bem, pacotes, que podem ser bibliotecas, aplicativos e coisas semelhantes. janelas posso gerenciar tais coisas (faz isso internamente com certeza, por exemplo, quando você ativa ou desativa componentes do Windows), mas ter bibliotecas de terceiros em todo o sistema não foi tão bem no final dos anos 90, então os aplicativos são encorajados a agrupar todos suas dependências. - Joey
@Joey eu tomo seu ponto, mas culpando o usuário (ou desenvolvedor) não vai chegar longe em um espaço aberto tão aberto. Os usuários só veem aplicativos, mas os aplicativos são apenas um subconjunto de pacotes. Várias bibliotecas, mesmo com diferentes versões e fornecedores, precisam ser gerenciou. A exigência do desenvolvedor para gerenciá-lo era otimista, na melhor das hipóteses, IMHO, e resultou em um inchaço pesado. A Windows Store faz algumas incursões nisso, mas ainda está longe da resolução de dependência automagic, o que torna o * nixes muito mais simples a esse respeito. - tudor


Isso só se aplica realmente a programas que usam o instalador do Windows sistema.

Se um programa usa seus próprios sistemas de desinstalação, não há nada que o impeça de executar outro desinstalador ao mesmo tempo.

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

A maioria dos desinstaladores rastreia o que eles estão alterando para que possam reverter com êxito se houver uma falha. Se alguém não está ciente de todas as alterações que estão sendo feitas (por outros desinstaladores), então pode realmente tornar as coisas PIOR se ele tentar reverter uma instalação com falha.

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


19





As tarefas de desinstalação freqüentemente modificam arquivos que são compartilhados por vários programas ou arquivos do sistema \ o Registro (uma razão parcial para a necessidade de poder administrativo para fazê-lo). Se várias tarefas de desinstalação fossem executadas ao mesmo tempo, elas poderiam entrar em conflito. Se você já teve uma corrida com "Hell DLL", seria o mesmo. Outros programas ou o próprio Windows podem ser deixados em um estado inconsistente.


9



Isso é mais do que a resposta certa é sobre. Se o programa "A" instala o Windows "X" não-núcleo do Windows, então o programa "B" requer que ele seja instalado pelo instalador, e provavelmente fará parte do desinstalador. Mas a desinstalação da DLL "X" interromperia o programa "A". Portanto, o desinstalador geralmente perguntará sobre DLLs compartilhadas e outros arquivos SE eles devem ser excluídos. Se executado simultaneamente, esse tipo de aviso não funcionaria corretamente. Por fim, e talvez mais importante, todos esqueceram o Registro do Windows - que é um componente principal do banco de dados que é freqüentemente atualizado em instaladores / desinstaladores. - Darrell Teague


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


-1



Isso é irrelevante como resposta. Tudo o que envolve E / S de disco tem o potencial de diminuir a velocidade se você fizer muitas coisas ao mesmo tempo, mas a única coisa que o Windows realmente impede você faz é simultânea (un) instala. E há uma boa razão para querer ser capaz de fazer (un) instalações simultâneas - seria muito mais fácil para os usuários fazer fila em um monte de operações e deixá-los correr juntos, em vez de ter que sentar e esperar para cada um completar por sua vez. Além disso, o problema de contenção é obsoleto com SSDs. - Andrew Medico