回答:
同時インストールが行われる場合、正確性を保証することは非常に複雑です-それらがいくつかのファイルを共有していると仮定します。これには何らかの形のトランザクションが必要になります。
これらの概念はトランザクションデータベースで知られていますが、トピックは簡単ではなく、通常、ファイルシステムに完全なトランザクションインフラストラクチャはありません(ジャーナルファイルシステムがその一部を提供している場合でも)。1つの問題は、複数のロックがデッドロックにつながる可能性があることです。デッドロックの検出(または両方のインストーラーが永久にハングする)と、それを処理する方法が必要です。デッドロックは回避できますが(たとえば、常に同じ順序でファイルをロックすることにより)、他の問題があります。
必要なすべてのファイルを事前にロックすると、所有しているものを効果的に取得できます。一方のインストーラーは、もう一方が完了するまで待機する必要があります。必要なすべてのファイルを事前にロックせずに続行すると、「トランザクション」が失敗する危険があります。つまり、インストーラーの1つを再起動する必要があります。
次に、トランザクション分離レベルについて考える必要があるかもしれません-完全に正しくするには、トランザクションを「シリアライズ可能」にする必要があります-しかし、それは、多くのデータベースであっても簡単ではありません。
完全な分離を回避する問題に対処するための代替戦略もあるかもしれませんが、通常、それらの正当性を証明することはさらに困難です。
同時インストールの場合、インストール後の問題がさらに扱いにくくなると思います。特に、OSベンダー(またはディストリビューション)が100%クリーンにするためにすべてのトラブルを経験することはないと思います。そのため、たとえOSから提供されたとしても、使用しない方がよいと思います。
注意
しかし、おそらくあなたが本当に望んでいるのは、「同時に」インストールすることさえないでしょう。インストールをキューに入れて次々に実行することができれば(理想的には、間に質問をせずに)十分かもしれません。そして、それは本当に何かであり、他のいくつかのOS(ディストリビューション)ははるかによく処理します。
これは、2つのインストールで同じファイル/フォルダ/レジストリキーなどを操作することを避けるための仕様です。それはおそらくさまざまな方法で行われた可能性がありますが、マイクロソフトがこの選択を行いました。
複数のMSIファイルをキックして、バッチファイルを使用して次々にインストールできます。両方が同時にディスクに書き込むという意味で、2つのMSIファイルを同時に実行することはできません。
その理由は、MSIインストールの一部が「トランザクション」として実行されるためです。トランザクションリストのアクションがエラーなしで完了したかどうかに応じて、コミットまたはロールバックされる一連の変更です。すべてがエラーなしで完了する必要があり、その後トランザクションがコミットされます。それ以外の場合は、すべての変更の完全なロールバックが発生します。したがって、一度にアクティブにできるトランザクションは1つだけです。
技術的なMSIレベルでは、InstallExecuteSequenceの標準アクションInstallInitializeとInstallFinalizeの間のアクションのみがトランザクションとして実行されます。これらのアクション以外ではシステムの変更は発生しないはずですが、MSIファイルは誤って他のシーケンスを変更するように設計されている場合があります。