Por que preciso reiniciar o computador após instalar um novo software?


38

Por que às vezes eu preciso reiniciar o computador após instalar um novo software e outras vezes não?

Existe alguma razão pela qual ele precisa dessa reinicialização ou por que nem sempre é uma maneira ou de outra?


2
É basicamente para atualizar o registro
Dwayne Samuels

4
Em alguns casos, você pode simplesmente reiniciar um serviço em vez de reiniciar.
Ccook


8
@dwayne A maioria dos problemas está no arquivo bloqueado (dlls), não no registro. O registro está sendo usado para informar ao Windows os arquivos a serem substituídos na reinicialização, mas não é o motivo pelo qual a reinicialização é necessária.
Ian Ringrose

Respostas:


38

Depende.

Se o software que está sendo instalado afeta uma parte integrante do sistema operacional, é necessário reiniciar. Por exemplo, um novo kernel para o sistema operacional.

Nos sistemas Windows, costuma ser usado porque os usuários são considerados estúpidos demais para usar seus computadores corretamente. Como exemplo, a Microsoft publica detalhes de como alterar o "Tipo de nó" usado para a rede em seu site , incluindo as instruções para "reiniciar o computador" quando tudo o que é necessário é a reinicialização de um serviço de rede, conforme detalhado aqui . Como nós, como os usuários somos burros demais para reiniciar um serviço, somos instruídos a reiniciar tudo.

Para alguns softwares, cheguei à conclusão de que é um hábito e muitas vezes não é necessário, mesmo quando solicitado. Se eu não acho que um software deva ter feito algo importante no sistema operacional, costumo não me incomodar e não tive problemas (e se houvesse problemas, seria fácil resolver).


6
Concordo. Atualmente, a menos que atualizem um arquivo ou driver crítico do sistema, não há motivo para reiniciar o sistema. Muitas vezes, são os desenvolvedores que querem ter certeza de que "cobrem todas as bases".
Surfasb

1
Se for um instalador mais antigo, pode ser necessário reiniciar, independentemente. Se for um desenvolvedor ingênuo, pode ser configurado para solicitar a reinicialização, independentemente de ser ou não necessário. Os instaladores mais recentes que aproveitam corretamente os recursos do MSI são capazes de relatar quais aplicativos estão mantendo os arquivos necessários (dlls, etc) abertos e solicitar ao usuário que os pare - é apenas se eles optarem por deixar os aplicativos em execução que serão solicitados. para reiniciar. É uma bagunça desleixada, nada força os desenvolvedores a usar o MSI, muito menos usá-lo corretamente.
21711 Stephanie

15

Às vezes, um software faz uma alteração que não pode entrar em vigor enquanto o computador estiver em uso. Alguns motivos podem ser: um arquivo está em uso, a alteração só pode ocorrer durante a inicialização do computador, pode haver um problema de segurança que só pode ser feito antes que o computador tenha sua rede ativa, talvez o antivírus interfira no instalar.

Às vezes, é apenas uma programação desleixada pelos desenvolvedores.

Tenho certeza que existem muitos mais.


1
Em particular, que alterações não podem entrar em vigor quando o computador está em uso?
Anderson Green

13

Geralmente, quando você instala um novo software, uma dll (arquivo) usada por muitos outros pacotes de software precisa ser atualizada para uma nova versão. (É muito mais provável que isso aconteça ao atualizar um aplicativo que você já instalou.)

Se a dll estiver sendo usada por um aplicativo em execução, parte dele será carregada na memória e o restante será lido do disco quando necessário. Portanto, a dll será bloqueada no disco. (Pense nos problemas se não estiver bloqueado!)

Uma DLL bloqueada não pode ser atualizada; portanto, o instalador solicitará que o Windows substitua a DLL pela nova versão na próxima vez que a máquina for reiniciada. Daí a necessidade de reiniciar.

Alguns instaladores melhores informarão os aplicativos que devem ser fechados antes da execução do instalador, permitindo que a DLL seja atualizada sem reiniciar. No entanto, isso torna a interface do usuário do instalador mais complexa e gera mais chamadas de suporte.

Um instalador de um aplicativo também pode fazer com que o aplicativo salve seu estado, desligue-se e reinicie após a atualização da DLL. Isso só pode ser feito se a DLL for usada por um único aplicativo. A maioria dos aplicativos de atualização automática faz isso - essa deve ser a norma para aplicativos de mercado de massa quando há muitos usuários.

Tudo isso pode levar a uma lógica complexa que é difícil de testar. O teste dos instaladores leva muito tempo, pois você precisa tentar adivinhar todos os estados em que a máquina do usuário pode estar. Por isso, geralmente é melhor para um instalador ser simples e sempre funcionar, mesmo que isso leve a mais reinicializações para o usuário. .

Não é sempre que um usuário decide comprar um aplicativo diferente devido à reinicialização do instalador; portanto, o vendedor gasta o tempo (dinheiro) trabalhando no que é necessário para que o usuário compre seus aplicativos.

Quantas vezes você teve um problema após instalar um aplicativo que se resolveu quando você reinicia? Pense nos custos de suporte de muitos usuários que telefonam para problemas resolvidos apenas com uma reinicialização. Como desenvolvedor, ele pode rapidamente se tornar muito tentador para sempre fazer o usuário reiniciar após a instalação do software, mesmo quando você acha que não é necessário.

----------

A maioria dos sistemas operacionais e softwares foram escritos nos dias em que espaço em disco e memória custam muito dinheiro. Agora há uma mudança para os aplicativos terem uma cópia privada de todas as dlls que eles usam, tornando a borracha de atualização mais rápida, mas usando mais espaço de armazenamento.

Nos servidores, isso está sendo feito com "contêineres", no entanto, "contêineres" não funcionam bem para software de desktop, pois você deseja acessar os dados salvos por um aplicativo com outro aplicativo. (Caso contrário, basta usar um iPhone.)


7

O motivo é porque, se você não o fizer: irá falhar. Partida Raymond Chen :

Mesmo se você substituir um arquivo em uso, ainda pode haver código no sistema que deseja usar a versão antiga. Por exemplo, suponha que você tenha dois arquivos que funcionam juntos:

  • A.dll
  • B.dll

Você emite um patch que atualiza os dois arquivos, mas A.dllestá em uso. Sem problemas. Você simplesmente substitui os dois. Como resultado, os programas que ainda estavam usando A.dllcontinuam usando a versão antiga, mas novos programas usarão a nova. E todos os programas recebem a nova versão do B.dll.

Agora, um programa que estava usando o antigo A.dlldecide chamar uma função. Naturalmente, espera a versão antiga do B.dll, mas obtém a nova versão. Dependendo do tipo de alteração que você fez B.dll, essa chamada pode funcionar - ou pode falhar. Ambas as DLLs assumem que seu parceiro é do mesmo conjunto correspondente.


Existem maneiras de contornar o que você descreve, mas elas requerem reflexão.
Daniel R Hicks

2

Para ser completamente honesto, é menos trabalho (e, portanto, menos $$) por parte dos desenvolvedores de software assumir que as atualizações sempre resultarão em uma reinicialização. Provavelmente, essa é uma decisão dos contadores de bean e dos desenvolvedores.

Por fim, existem muito poucas atualizações que, em um mundo ideal, não poderiam ser feitas sem reinicialização, mas é preciso muito pré-planejamento e existem alguns riscos, dada a grande variedade de configurações possíveis que um sistema pode ter.


0

Isso tem a ver com o fato de que é muito difícil alterar o código, pois está sendo executado sem causar grandes problemas. A solução: pare tudo antes de alterar o código, assim você pode ter certeza de que nada está em execução. É um hack de força bruta que é em grande parte desnecessário muitas vezes supostamente necessário, mas pode ser absolutamente necessário, especialmente se você estiver atualizando um código particularmente importante. Na verdade, existe uma empresa inteira especializada em fazer atualizações que NÃO requerem reinicialização para esse código particularmente importante. A maneira como eles fazem isso é neste artigo http://www.ksplice.com/paper .


-1

Você deve reiniciar quando arquivos importantes do sistema para Windows estiverem sendo modificados, porque o Windows não permite que esses arquivos sejam modificados enquanto estão em uso. Portanto, a maioria das atualizações do Windows Update requer reinicialização, assim como os programas que se integram ao Windows (como antivírus). Até a reinicialização, o Windows não pode executar as últimas etapas necessárias para "instalar" o programa.

Você pode comparar isso com o Linux, que raramente requer a reinicialização. Mesmo quando você é solicitado a reiniciar, geralmente é necessário fazer logoff e logon novamente. Isso ocorre porque um ambiente Linux típico é composto por muitos programas separados diferentes que trabalham juntos para criar um sistema operacional completo. Se um arquivo importante for modificado durante uma instalação, você geralmente precisará apenas reiniciar o programa específico que usa o arquivo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.