Por que o Windows Installer só pode instalar um único programa por vez?

9

Sempre me perguntei por que o Windows Installer permite que você instale apenas um programa por vez. É muito frustrante não poder iniciar várias instalações, especialmente ao configurar uma nova instalação do Windows. Qual é a razão para isso?

    
por Rytis 27.08.2010 / 11:57

3 respostas

6

Seria muito complexo garantir a correção, quando ocorrem instalações simultâneas - assumindo que elas compartilham alguns dos arquivos. Isso precisaria de alguma forma de transações.

  • Você precisa bloquear arquivos
  • Deve ser possível desfazer as alterações intermediárias, se a instalação falhar (não tenho certeza se isso é possível agora?)

Esses conceitos são conhecidos a partir de bancos de dados transacionais - mas o tópico não é trivial e, normalmente, você não encontra uma infraestrutura totalmente transacional em sistemas de arquivos (embora os sistemas de arquivos de registro em diário forneçam parte disso). Um problema é que vários bloqueios podem levar a um impasse - então você precisa de detecção de deadlock (ou ambos os instaladores ficarão suspensos para sempre) e uma maneira de tratar isso. Os deadlocks podem ser evitados (por exemplo, sempre bloqueando arquivos na mesma ordem), mas há outros problemas:

Se você bloquear todos os arquivos necessários na frente, você obtém efetivamente o que você tem: Um instalador deve esperar até que o outro seja concluído. Se você não bloquear todos os arquivos necessários e continuar, corre o risco de a "transação" falhar. Isso significaria que um dos instaladores teria que ser reiniciado.

Depois disso, talvez você tenha que pensar nos níveis de isolamento da transação. Para que as transações sejam totalmente corretas, elas devem ser "serializável" - mas isso não é fácil, mesmo para muitos bancos de dados.

Pode até haver estratégias alternativas para lidar com os problemas, que evitam o isolamento total, mas normalmente seria ainda mais difícil provar sua correção.

Acredito que, com a instalação simultânea, teríamos problemas de pós-instalação muito mais intratáveis - especialmente porque eu não acho que um fornecedor de SO (ou uma distribuição) enfrentaria todos os problemas para torná-lo 100% limpo . Então, eu preferiria não usá-lo, mesmo que fosse oferecido pelo SO.

Nota

Mas talvez o que você realmente queira não seja instalar "ao mesmo tempo". Talvez fosse suficiente, se você pudesse fazer fila nas instalações, que são executadas uma após a outra (idealmente sem fazer nenhuma pergunta entre elas). E isso é realmente algo, alguns outros sistemas operacionais (distribuições) lidam muito melhor.

    
por 27.08.2010 / 12:42
6

Isso ocorre por design, para evitar que duas instalações manipulem os mesmos arquivos / pastas / chaves de registro / etc .; provavelmente poderia ter sido feito de maneiras diferentes, mas a Microsoft fez essa escolha.

    
por 27.08.2010 / 12:19
1

Você pode chutar de vários arquivos MSI para instalar em sequência rápida um após o outro usando um arquivo em lotes. Você não pode executar dois arquivos MSI simultaneamente no sentido em que ambos gravam no disco ao mesmo tempo.

O motivo é que parte de uma instalação MSI é executada como uma "transação" - uma sequência de alterações que são confirmadas ou revertidas, dependendo de as ações na lista de transações serem concluídas sem erro. Todos devem ser concluídos sem erro e, em seguida, a transação é confirmada, caso contrário, ocorrerá uma reversão completa de todas as alterações. Segue-se que apenas uma dessas transações pode estar ativa a qualquer momento.

No nível do MSI técnico, apenas as ações entre as ações padrão InstallInitialize e InstallFinalize no InstallExecuteSequence são executadas como uma transação. Nenhuma mudança de sistema deve acontecer fora dessas ações, mas às vezes os arquivos MSI são erroneamente projetados para fazer alterações em outras seqüências.

    
por 27.05.2011 / 23:01