Risposte:
Sarebbe molto complesso garantire la correttezza quando si verificano installazioni simultanee, supponendo che condividano alcuni dei file. Ciò richiederebbe una qualche forma di transazione.
Questi concetti sono noti dai database transazionali, ma l'argomento non è banale e di solito non si trova un'infrastruttura completamente transazionale nei file system (anche se i file system di journaling ne forniscono una parte). Un problema è che più blocchi possono portare a un deadlock, quindi è necessario il rilevamento di deadlock (o entrambi gli installer si bloccheranno per sempre) e un modo per gestirlo. I deadlock possono essere evitati (ad esempio bloccando sempre i file nello stesso ordine), ma ci sono altri problemi:
Se blocchi tutti i file richiesti in anticipo, ottieni effettivamente quello che hai: un programma di installazione deve attendere fino al termine dell'altro. Se non si bloccano tutti i file richiesti in anticipo e si continua, si rischia che la "transazione" fallisca. Ciò significherebbe che uno degli installatori dovrebbe essere riavviato.
Quindi potresti dover pensare ai livelli di isolamento delle transazioni - per essere completamente corretti, le tue transazioni dovrebbero essere "serializzabili" - ma non è facile, anche per molti database.
Potrebbero anche esistere strategie alternative per affrontare i problemi, che eludono il completo isolamento, ma di solito sarebbe ancora più difficile dimostrare la loro correttezza.
Credo che, con l'installazione simultanea, avremmo problemi post-installazione molto più intrattabili, soprattutto perché non credo, un fornitore del sistema operativo (o una distribuzione) avrebbe dovuto affrontare tutti i problemi per renderlo pulito al 100%. Quindi preferirei non usarlo, anche se fosse offerto dal sistema operativo.
Nota
Ma forse quello che vuoi davvero non è nemmeno l'installazione "allo stesso tempo". Forse sarebbe sufficiente, se potessi mettere in coda le installazioni, che vengono quindi eseguite una dopo l'altra (idealmente senza fare domande in mezzo). E questo è davvero qualcosa, alcuni altri sistemi operativi (distribuzioni) gestiscono molto meglio.
Questo è di progettazione, al fine di evitare che due installazioni manipolino gli stessi file / cartelle / chiavi di registro / ecc .; probabilmente avrebbe potuto essere fatto in diversi modi, ma Microsoft ha fatto questa scelta.
È possibile eseguire il kicking di più file MSI da installare in rapida sequenza uno dopo l'altro utilizzando un file batch. Non è possibile eseguire due file MSI contemporaneamente, nel senso che entrambi scrivono contemporaneamente su disco.
Il motivo è che parte di un'installazione MSI viene eseguita come una "transazione", una sequenza di modifiche che vengono confermate o ripristinate a seconda che le azioni nell'elenco delle transazioni vengano completate senza errori. Tutto deve essere completato senza errori, quindi la transazione viene impegnata, altrimenti si verifica un rollback completo di tutte le modifiche. Ne consegue che solo una di tali transazioni può essere attiva in un dato momento.
A livello di MSI tecnico, solo le azioni tra le azioni standard InstallInitialize e InstallFinalize in InstallExecuteSequence vengono eseguite come transazione. Nessun cambiamento di sistema dovrebbe avvenire al di fuori di queste azioni, ma a volte i file MSI sono erroneamente progettati per apportare modifiche in altre sequenze.