Mengapa Pemasang Windows hanya dapat menginstal satu program pada satu waktu?

10

Saya selalu bertanya-tanya mengapa Penginstal Windows hanya memungkinkan Anda untuk menginstal satu program sekaligus. Sangat menyebalkan untuk tidak dapat meluncurkan banyak instalasi, terutama ketika menyiapkan instalasi baru Windows. Apa alasan untuk itu?

Rytis
sumber

Jawaban:

6

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.

Chris Lercher
sumber
1
Meskipun benar, jawaban ini menurut saya terlalu bertele-tele. Seseorang yang bertanya mengapa layanan penginstal bekerja dengan cara yang tidak memungkinkan untuk memahami jawaban ini.
gWaldo
2
@ gWaldo: Oke, mungkin Anda benar ... Kemudian lagi, saya tidak hanya ingin mengatakan "Ini kompleks, percayalah (titik). Anda toh tidak akan memahaminya". Mungkin OP (atau orang lain yang tersandung pada pertanyaan ini) benar-benar tertarik, dan jawaban yang sampai ke dasar masalah akan membantunya memperkirakan, jika benar - benar ada banyak kerumitan yang terlibat untuk menyelesaikan sesuatu yang terlihat sangat mudah pada pertanyaannya. permukaan. Siapa tahu?
Chris Lercher
Sangat benar. Itu poin yang bagus.
gWaldo
Meskipun semua pembicaraan tentang isolasi terdengar masuk akal, Anda dapat menjalankan beberapa installer jika mereka tidak menggunakan kerangka Pemasang Windows. Saya tidak pernah memiliki salah satu dari mereka istirahat ketika berjalan berdampingan ... Mungkin saya hanya beruntung :) Adapun antrian instalasi, ada alat untuk itu, tetapi diberi CPU multicore (heck, desktop CPU sekarang dapat menjalankan 8 utas ...), sepertinya menjalankan mereka berdampingan akan menjadi jawabannya (walaupun mereka mungkin masih berjuang untuk I / O).
Rytis
2
@Rytis: Saya berharap saya memiliki keberuntungan yang sama :-) - Saya telah menginstal installer secara acak bahkan tanpa menjalankannya secara bersamaan. Tentang multicores: Akan ada cara lain untuk menggunakannya: Dengan menggunakan beberapa inti dalam satu proses instalasi. Itu masih tidak selalu mungkin atau mudah, tetapi dapat dikoordinasikan jauh lebih baik. Secara keseluruhan saya pikir, penghemat waktu terbesar masih, jika seluruh proses instalasi (antrian) hanya mengajukan pertanyaan di awal dan di akhir. Kemudian Anda bisa mendapatkan kopi, atau melakukan sesuatu yang lain saat instalasi berjalan (dan gunakan core yang tersisa untuk apa pun yang ingin Anda lakukan.).
Chris Lercher
6

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.

Massimo
sumber
Adakah referensi untuk mendukung klaim Anda?
Aaron Digulla
1

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.

Stein Åsmul
sumber