Відповіді:
Було б дуже складно гарантувати правильність, коли відбуваються паралельні установки - якщо припустити, що вони діляться деякими файлами. Для цього знадобиться певна форма транзакцій.
Ці поняття відомі з транзакційних баз даних, але тема не є тривіальною, і ви зазвичай не знаходите повністю транзакційної інфраструктури у файлових системах (навіть якщо файлові системи журналів є частиною цього). Одна проблема полягає в тому, що кілька блокувань можуть призвести до тупикової ситуації - тоді вам потрібно виявити тупиковий стан (або обидва інсталятори будуть висіти назавжди), і спосіб їх вирішити. Можна уникнути тупикових ситуацій (наприклад, завжди блокуючи файли в одному порядку), але є й інші проблеми:
Якщо ви заблокуєте всі необхідні файли вперед, ви отримаєте ефективно те, що у вас є: Один інсталятор повинен дочекатися, поки інший закінчиться. Якщо ви не заблокуєте всі необхідні файли вперед і продовжуєте продовжувати, ви ризикуєте, що "транзакція" вийде з ладу. Це означало б, що одного з встановників доведеться перезапустити.
Тоді вам, можливо, доведеться подумати про рівень ізоляції транзакцій - щоб бути повністю коректним, ваші транзакції повинні бути "серіалізаційними" - але це непросто навіть для багатьох баз даних.
Можливо, навіть існують альтернативні стратегії вирішення проблем, які обходять повну ізоляцію, але довести їх правильність, як правило, буде ще важче.
Я вважаю, що при одночасному встановленні у нас виникли б набагато більш важкі проблеми після встановлення - тим більше, що я не думаю, що постачальник ОС (або дистрибутив) пережив би всі проблеми, щоб зробити його на 100% чистим. Тому я вважаю за краще не використовувати його, навіть якщо це запропонувала ОС.
Примітка
Але, можливо, те, що ви насправді хочете, це навіть не встановлювати «одночасно». Можливо, цього буде достатньо, якби ви могли встановити чергу з установками, які потім виконуються одна за одною (в ідеалі, не задаючи між ними жодних питань). І це дійсно щось, деякі інші ОС (дистрибутиви) справляються набагато краще.
Це задумано, щоб уникнути того, щоб дві установки маніпулювали одними і тими ж файлами / папками / ключами реєстру / тощо; можливо, це можна було зробити по-різному, але Microsoft зробила цей вибір.
Ви можете натиснути кілька файлів MSI, щоб встановити їх у швидкій послідовності один за одним, використовуючи пакетний файл. Не можна одночасно запускати два файли MSI у тому сенсі, що вони обидва записують на диск одночасно.
Причина полягає в тому, що частина інсталяції MSI запускається як "транзакція" - послідовність змін, які здійснюються або відкочуються залежно від того, чи завершуються дії в списку транзакцій без помилок. Усі повинні завершитись без помилок, і тоді транзакція буде здійснена, інакше відбувається повний відкат усіх змін. Звідси випливає, що лише одна така транзакція може бути активною в будь-який момент часу.
На технічному рівні MSI лише дії між стандартними діями InstallInitialize та InstallFinalize у InstallExecuteSequence виконуються як транзакції. Ніякі системні зміни не повинні відбуватися поза цими діями, але іноді файли MSI помилково призначені для внесення змін в інші послідовності.