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 disso?
fonte
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 disso?
Seria muito complexo garantir a correção quando ocorrerem instalações simultâneas - supondo que eles compartilhem alguns dos arquivos. Isso precisaria de alguma forma de transações.
Esses conceitos são conhecidos nos bancos de dados transacionais - mas o tópico não é trivial e você geralmente não encontra uma infraestrutura totalmente transacional nos sistemas de arquivos (mesmo que os sistemas de arquivos de registro em diário façam parte disso). Um problema é que vários bloqueios podem levar a um impasse - então você precisa de uma detecção de impasse (ou ambos os instaladores serão interrompidos para sempre) e uma maneira de tratar isso. Os bloqueios podem ser evitados (por exemplo, sempre bloqueando arquivos na mesma ordem), mas existem outros problemas:
Se você bloquear todos os arquivos necessários com antecedência, obterá efetivamente o que possui: Um instalador deve esperar até que o outro termine. Se você não bloquear todos os arquivos necessários com antecedência e continuar, corre o risco de a "transação" falhar. Isso significaria que um dos instaladores teria que ser reiniciado.
Talvez você precise pensar nos níveis de isolamento de transação - para estar totalmente correto, suas transações teriam que ser "serializáveis" - mas isso não é fácil, mesmo para muitos bancos de dados.
Pode até haver estratégias alternativas para lidar com os problemas, que contornam o isolamento total, mas geralmente seria ainda mais difícil provar sua correção.
Acredito que, com a instalação simultânea, teríamos muito mais problemas pós-instalação intratáveis - especialmente porque não acho que um fornecedor de SO (ou uma distribuição) passaria por todos os problemas para torná-lo 100% limpo. Então, eu preferiria não usá-lo, mesmo que fosse oferecido pelo sistema operacional.
Nota
Mas talvez o que você realmente queira nem esteja instalando "ao mesmo tempo". Talvez seja suficiente, se você puder enfileirar as instalações, que são executadas uma após a outra (idealmente sem fazer perguntas no meio). E isso é realmente algo, alguns outros sistemas operacionais (distribuições) lidam muito melhor.
Isso ocorre por design, para evitar que duas instalações manipulem os mesmos arquivos / pastas / chaves do registro / etc .; provavelmente poderia ter sido feito de maneiras diferentes, mas a Microsoft fez essa escolha.
fonte
Você pode chutar 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 de 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 confirmadas ou revertidas, dependendo se as ações na lista de transações são concluídas sem erro. Todos devem ser concluídos sem erro e, em seguida, a transação é confirmada, caso contrário, ocorre uma reversão completa de todas as alterações. Daqui resulta que apenas uma dessas transações pode estar ativa a qualquer momento.
No nível técnico do MSI, apenas as ações entre as ações padrão InstallInitialize e InstallFinalize no InstallExecuteSequence são executadas como uma transação. Nenhuma alteração do sistema deve ocorrer fora dessas ações, mas às vezes os arquivos MSI são projetados erroneamente para fazer alterações em outras seqüências.
fonte