Es wäre sehr komplex, die Korrektheit zu gewährleisten, wenn gleichzeitig Installationen stattfinden - vorausgesetzt, sie teilen einige der Dateien. Dies würde irgendeine Form von Transaktionen erfordern.
- Sie müssen Dateien sperren
- Es sollte möglich sein, Zwischenänderungen rückgängig zu machen, wenn die Installation fehlschlägt (nicht sicher, ob dies jetzt möglich ist?).
Diese Konzepte sind aus Transaktionsdatenbanken bekannt - aber das Thema ist nicht trivial, und in Dateisystemen finden Sie normalerweise keine vollständige Transaktionsinfrastruktur (obwohl Journaling-Dateisysteme einen Teil davon bereitstellen). Ein Problem ist, dass mehrere Sperren zu einem Deadlock führen können. Dann benötigen Sie eine Deadlock-Erkennung (oder beide Installationsprogramme hängen für immer) und eine Möglichkeit, dies zu behandeln. Deadlocks können vermieden werden (z. B. indem Dateien immer in derselben Reihenfolge gesperrt werden), es gibt jedoch andere Probleme:
Wenn Sie alle erforderlichen Dateien im Voraus sperren, erhalten Sie effektiv das, was Sie haben: Ein Installationsprogramm muss warten, bis das andere fertig ist. Wenn Sie nicht alle erforderlichen Dateien im Voraus sperren und weitermachen, besteht das Risiko, dass die "Transaktion" fehlschlägt. Das würde bedeuten, dass einer der Installer neu gestartet werden müsste.
Dann müssen Sie möglicherweise über Transaktionsisolationsstufen nachdenken - um vollständig korrekt zu sein, müssten Ihre Transaktionen "serialisierbar" sein -, aber das ist selbst für viele Datenbanken nicht einfach.
Es mag sogar alternative Strategien geben, um mit den Problemen umzugehen, die eine vollständige Isolation umgehen, aber es wäre normalerweise noch schwieriger, ihre Richtigkeit zu beweisen.
Ich glaube, dass wir bei gleichzeitiger Installation viel schwer zu lösende Probleme nach der Installation haben würden - insbesondere, weil ich nicht glaube, dass ein Betriebssystemanbieter (oder eine Distribution) alle Probleme haben würde, um es 100% sauber zu machen. Daher würde ich es vorziehen, es nicht zu verwenden, selbst wenn es vom Betriebssystem angeboten würde.
Hinweis
Aber vielleicht wollen Sie wirklich nicht einmal "zur gleichen Zeit" installieren. Vielleicht wäre es ausreichend, wenn Sie die Installationen in die Warteschlange stellen könnten, die dann nacheinander ausgeführt werden (idealerweise ohne dazwischen Fragen zu stellen). Und das ist wirklich etwas, einige andere Betriebssysteme (Distributionen) funktionieren viel besser.
Dies ist beabsichtigt, um zu vermeiden, dass zwei Installationen dieselben Dateien / Ordner / Registrierungsschlüssel / etc manipulieren. Es hätte wahrscheinlich auf verschiedene Arten geschehen können, aber Microsoft hat diese Wahl getroffen.
quelle
Sie können mehrere MSI-Dateien loslegen, um sie mithilfe einer Batch-Datei schnell hintereinander zu installieren. Sie können nicht zwei MSI-Dateien gleichzeitig ausführen, da beide gleichzeitig auf die Festplatte schreiben.
Der Grund dafür ist, dass ein Teil einer MSI-Installation als "Transaktion" ausgeführt wird - eine Folge von Änderungen, die entweder festgeschrieben oder zurückgesetzt werden, je nachdem, ob die Aktionen in der Transaktionsliste fehlerfrei abgeschlossen werden. Alle müssen fehlerfrei abgeschlossen werden, und dann wird die Transaktion festgeschrieben. Andernfalls erfolgt ein vollständiger Rollback aller Änderungen. Daraus folgt, dass jeweils nur eine solche Transaktion aktiv sein kann.
Auf der technischen MSI-Ebene werden nur die Aktionen zwischen den Standardaktionen InstallInitialize und InstallFinalize in der InstallExecuteSequence als Transaktion ausgeführt. Außerhalb dieser Aktionen dürfen keine Systemänderungen vorgenommen werden, aber manchmal sind MSI-Dateien fälschlicherweise so konzipiert, dass Änderungen in anderen Sequenzen vorgenommen werden.
quelle