Akan sangat kompleks untuk menjamin kebenaran, ketika instalasi bersamaan terjadi - dengan asumsi mereka berbagi beberapa file. Ini akan membutuhkan beberapa bentuk transaksi.
- Anda perlu mengunci file
- Seharusnya dimungkinkan untuk membatalkan perubahan menengah, jika instalasi gagal (tidak yakin, apakah itu mungkin sekarang?)
Konsep-konsep ini diketahui dari database transaksional - tetapi topiknya tidak sepele, dan Anda biasanya tidak menemukan infrastruktur transaksional penuh dalam sistem file (meskipun sistem file penjurnalan menyediakan bagian dari itu). Satu masalah adalah, bahwa banyak kunci dapat menyebabkan kebuntuan - maka Anda perlu deteksi kebuntuan (atau kedua penginstal akan menggantung selamanya), dan cara untuk mengatasinya. Deadlock dapat dihindari (mis. Dengan selalu mengunci file dalam urutan yang sama), tetapi ada masalah lain:
Jika Anda mengunci semua file yang diperlukan di depan, Anda mendapatkan secara efektif apa yang Anda miliki: Satu penginstal harus menunggu sampai yang lain selesai. Jika Anda tidak mengunci semua file yang diperlukan di depan, dan terus berjalan, Anda berisiko bahwa "transaksi" akan gagal. Itu berarti, bahwa salah satu installer harus di-restart.
Maka Anda mungkin harus berpikir tentang tingkat isolasi transaksi - untuk sepenuhnya benar, transaksi Anda harus "serializable" - tetapi itu tidak mudah, bahkan untuk banyak basis data.
Bahkan mungkin ada strategi alternatif untuk mengatasi masalah, yang menghindari isolasi penuh, tetapi biasanya akan lebih sulit untuk membuktikan kebenarannya.
Saya percaya, dengan instalasi bersamaan, kami akan memiliki banyak masalah pasca-pemasangan yang lebih sulit - terutama karena saya tidak berpikir, vendor OS (atau distribusi) akan melalui semua masalah untuk membuatnya 100% bersih. Jadi saya lebih suka untuk tidak menggunakannya, bahkan jika itu ditawarkan oleh OS.
Catatan
Tapi mungkin yang Anda inginkan adalah tidak menginstal "pada saat yang sama". Mungkin itu sudah cukup, jika Anda bisa mengantri instalasi, yang kemudian dieksekusi satu demi satu (idealnya tanpa mengajukan pertanyaan di antaranya). Dan itu benar-benar sesuatu, beberapa OS lain (distribusi) menangani jauh lebih baik.
Ini adalah desain, untuk menghindari dua instalasi memanipulasi file / folder / kunci registri yang sama / etc.; mungkin bisa dilakukan dengan cara yang berbeda, tetapi Microsoft membuat pilihan ini.
sumber
Anda dapat menendang beberapa file MSI untuk menginstal dalam urutan cepat satu demi satu menggunakan file batch. Anda tidak dapat menjalankan dua file MSI secara bersamaan dalam arti bahwa mereka berdua menulis ke disk pada saat yang sama.
Alasannya adalah bahwa bagian dari instalasi MSI dijalankan sebagai "transaksi" - urutan perubahan yang dilakukan atau dibatalkan tergantung pada apakah tindakan dalam daftar transaksi selesai tanpa kesalahan. Semua harus diselesaikan tanpa kesalahan, dan kemudian transaksi dilakukan, jika tidak, kembalikan semua perubahan terjadi. Oleh karena itu, hanya satu transaksi yang dapat aktif pada waktu tertentu.
Di tingkat MSI teknis, hanya tindakan antara tindakan standar InstallInitialize dan InstallFinalize di InstallExecuteSequence dijalankan sebagai transaksi. Tidak ada perubahan sistem yang seharusnya terjadi di luar tindakan ini, tetapi kadang-kadang file MSI dirancang secara keliru untuk membuat perubahan dalam urutan lainnya.
sumber