Câu trả lời:
Sẽ rất phức tạp để đảm bảo tính chính xác, khi cài đặt đồng thời diễn ra - giả sử rằng chúng chia sẻ một số tệp. Điều này sẽ cần một số hình thức giao dịch.
Các khái niệm này được biết đến từ cơ sở dữ liệu giao dịch - nhưng chủ đề không tầm thường và bạn thường không tìm thấy cơ sở hạ tầng giao dịch đầy đủ trong các hệ thống tệp (mặc dù hệ thống tệp nhật ký cung cấp một phần trong đó). Một vấn đề là, nhiều khóa có thể dẫn đến bế tắc - sau đó bạn cần phát hiện khóa chết (hoặc cả hai trình cài đặt sẽ bị treo vĩnh viễn) và một cách để xử lý điều đó. Bế tắc có thể tránh được (ví dụ bằng cách luôn khóa các tệp theo cùng một thứ tự), nhưng có một số vấn đề khác:
Nếu bạn khóa tất cả các tệp cần thiết lên phía trước, bạn sẽ có được hiệu quả những gì bạn có: Một trình cài đặt phải đợi cho đến khi tệp kia kết thúc. Nếu bạn không khóa tất cả các tệp yêu cầu lên phía trước và tiếp tục, bạn có nguy cơ "giao dịch" sẽ thất bại. Điều đó có nghĩa là, một trong những trình cài đặt sẽ phải được khởi động lại.
Sau đó, bạn có thể phải suy nghĩ về các mức cô lập giao dịch - để hoàn toàn chính xác, các giao dịch của bạn sẽ phải "tuần tự hóa" - nhưng điều đó không dễ dàng, ngay cả đối với nhiều cơ sở dữ liệu.
Thậm chí có thể có các chiến lược thay thế để giải quyết các vấn đề, giúp tránh sự cô lập hoàn toàn, nhưng thường sẽ khó khăn hơn để chứng minh tính đúng đắn của chúng.
Tôi tin rằng, với việc cài đặt đồng thời, chúng tôi sẽ gặp nhiều vấn đề sau khi cài đặt khó hiểu hơn - đặc biệt là vì tôi không nghĩ, một nhà cung cấp hệ điều hành (hoặc một bản phân phối) sẽ gặp phải tất cả các vấn đề để làm cho nó sạch 100%. Vì vậy, tôi không muốn sử dụng nó, ngay cả khi nó được cung cấp bởi HĐH.
Ghi chú
Nhưng có lẽ những gì bạn thực sự muốn thậm chí không cài đặt "cùng một lúc". Có lẽ nó là đủ, nếu bạn có thể xếp hàng các cài đặt, sau đó được thực hiện lần lượt từng cái một (lý tưởng mà không hỏi bất kỳ câu hỏi nào ở giữa). Và đó thực sự là một cái gì đó, một số hệ điều hành (phân phối) khác xử lý tốt hơn rất nhiều.
Đây là theo thiết kế, để tránh việc hai cài đặt thao tác cùng các tệp / thư mục / khóa đăng ký / v.v.; nó có thể đã được thực hiện theo những cách khác nhau, nhưng Microsoft đã đưa ra lựa chọn này.
Bạn có thể khởi động một số tệp MSI để cài đặt theo thứ tự nhanh chóng lần lượt từng tệp khác bằng tệp bó. Bạn không thể chạy hai tệp MSI cùng một lúc theo nghĩa là cả hai đều ghi vào đĩa cùng một lúc.
Lý do là một phần của bản cài đặt MSI được chạy dưới dạng "giao dịch" - một chuỗi các thay đổi được cam kết hoặc được khôi phục tùy thuộc vào việc các hành động trong danh sách giao dịch có hoàn thành không có lỗi hay không. Tất cả phải hoàn thành mà không có lỗi, và sau đó giao dịch được cam kết, nếu không, tất cả các thay đổi sẽ xảy ra. Theo sau, chỉ một giao dịch như vậy có thể được kích hoạt tại bất kỳ thời điểm nào.
Ở cấp độ MSI kỹ thuật, chỉ các hành động giữa các hành động tiêu chuẩn InstallInitialize và InstallFinalize trong InstallExecuteSequence được chạy như một giao dịch. Không có thay đổi hệ thống nào được cho là xảy ra bên ngoài những hành động này, nhưng đôi khi các tệp MSI được thiết kế rõ ràng để thực hiện các thay đổi trong các chuỗi khác.