Perbedaan antara file executable yang berdiri sendiri, dan file executable yang diinstal?


17

Saya perhatikan di Windows, paling tidak, bahwa Anda dapat mengunduh file yang dapat dieksekusi yang langsung terhubung secara statis dan meluncurkannya secara langsung, atau menulis program Anda sendiri dan menjalankannya (bahkan secara dinamis) tanpa harus menginstalnya.

Itu membawa saya ke poin utama saya ... apa tujuan dari proses instalasi? Maksud saya selain mungkin Windows Registry . Namun, untuk tujuan kepraktisan dan penggunaan, dimungkinkan untuk memiliki program tunggal, mandiri, mandiri yang dapat dijalankan, disimpan pada penyimpanan non-volatil, dan diakses melalui sistem file dari perangkat apa pun yang dihidupkan, dan dieksekusi pada OS. Jadi apa masalahnya dengan semua bisnis "instal ini" jika banyak program hebat dengan ukuran apa pun dapat bekerja dengan sempurna tanpa melalui konfigurasi instalasi? Ini sedikit membingungkan saya, dan selain dari basis data atau sistem konfigurasi metadata / akses lainnya, apa perbedaan nyata di sini jika yang terakhir (yang dapat dieksekusi) melakukan dan bekerja dengan cara yang sama seperti yang berdiri sendiri?

Apakah ada perbedaan di sini yang tidak saya sadari dengan program yang tidak diinstal versus yang diinstal?

PS: Ini tidak hanya harus diterapkan ke OS Windows, tetapi yang menerapkan fungsi serupa.

Jawaban:


16

Ada beberapa alasan mengapa program datang sebagai installer daripada executable mandiri:

Masalah Ukuran File

  • Program dengan banyak, dependensi besar dapat membundel installer berbasis web yang mengunduh dependensi dan menempatkannya di lokasi yang sama, sehingga mereka dapat dibagi oleh banyak program. Sebagai contoh, DirectX adalah perpustakaan yang sangat besar. Jika setiap program pada sistem Anda yang bergantung pada DirectX hanya membundel seluruh runtime DirectX dengan itu, itu akan menghabiskan sedikit ruang. Hal ini mungkin tampaknya tidak menjadi masalah pada usia 4 TB hard disk, tetapi pertimbangkan bahwa SSD memiliki kapasitas yang jauh lebih kecil, dan mereka mulai umum digunakan pada ultrabook, beberapa di antaranya hanya memiliki penyimpanan 64 GB. Dan tentu saja ada banyak pustaka bersama selain dari DirectX.

  • Program yang keduanya sangat besar dan terus diperbarui paling baik didistribusikan sebagai kumpulan banyak file kecil, bersama dengan program peluncur atau pembaruan yang memeriksa Internet untuk pembaruan, dan jika ada pembaruan, hanya unduh perubahan yang diperlukan. Jika semua program besar dikirim sebagai satu executable monolithic, sangat mungkin bahwa proses patch akan perlu mengunduh ulang seluruh executable, karena menambal menjalankan file executable pada disk hampir mustahil karena kunci file. Selain itu, karena pembaru perlu mengetahui di mana file-file tersebut berada, ia sering menyimpan jalur direktori tersebut di lokasi yang terkenal di registri.

Masalah Kenyamanan Pengguna

  • Pemasang untuk program yang sangat besar, seperti Visual Studio dan Microsoft Office, memungkinkan pengguna untuk tidak memilih instalasi fitur tertentu, jika pengguna tahu mereka tidak akan pernah membutuhkannya. Ini memiliki 3 manfaat potensial: mengurangi konsumsi ruang disk; ini dapat mengurangi waktu pengunduhan dan konsumsi bandwidth jika penginstalnya adalah pengunduh web; dan itu dapat mengurangi "kekacauan" dan "mengasapi" pada mesin pengguna, lebih sedikit pintasan menu awal / desktop, lebih sedikit program startup, dll.

  • Pemasang untuk program yang rumit sering kali disertai dengan opsi konfigurasi yang dapat diatur pengguna dengan menggunakan antarmuka grafis yang ramah pengguna sebagai bagian dari pemasang. Lihat misalnya penginstal MySQL atau SQL Server, yang dapat membawa Anda melalui seluruh proses membuat server database Anda berjalan dan bahkan sebelum Anda mengklik "Selesai" pada penginstal.

  • Pemasang dapat meminta pengguna untuk informasi yang diperlukan, seperti kunci lisensi, yang hanya perlu dimasukkan satu kali. Ini dapat menyederhanakan desain program itu sendiri, dan mengurangi jumlah hal yang harus dilakukan dan memeriksa kapan program itu dijalankan. Ini juga menghasilkan pengguna memiliki keyakinan bahwa, setelah program berhasil diinstal, itu harus "hanya bekerja" - tidak ada lagi "gotcha" dalam program yang dapat menahan mereka dari menggunakannya.

Masalah Kompatibilitas

  • Beberapa program bertentangan dengan program lain. Ini adalah fakta sederhana dan tidak menguntungkan dari rekayasa perangkat lunak. Sebelum menginstal program yang diketahui memiliki konflik dengan program lain, sering kali bermanfaat untuk memeriksa sistem terlebih dahulu untuk melihat apakah suatu program yang tidak kompatibel diinstal. Pengguna kemudian dapat diperingatkan jika demikian. Misalnya, ada potensi ketidakcocokan yang sangat berbahaya dalam versi VMware dan VirtualBox yang lebih lama, yang menghasilkan Blue Screen of Death, karena satu program akan mencoba menggunakan instruksi prosesor virtualisasi khusus setelah sudah disediakan untuk pengguna oleh produk lain. . Jika Anda hanya menyediakan produk akhir kepada pengguna tanpa installer, Anda harus memeriksa keberadaan produk yang tidak kompatibel di setiap mulai dari program Anda, yang bisa memperlambat startup program.

  • Program mungkin memiliki dependensi pada komponen sistem lain yang hanya dapat diinstal pada level seluruh sistem, bukan pada level per pengguna. Untuk menginstal komponen sistem khusus ini, hak administratif biasanya diperlukan, dan installer biasanya harus dijalankan.

Hak istimewa yang ditingkatkan dan layanan khusus

  • Beberapa program bergantung pada perubahan pada sistem operasi untuk fungsionalitasnya, dan perubahan ini tidak dapat dengan mudah diimplementasikan tanpa semacam penginstal untuk menjaganya dengan hak administratif. Misalnya, program yang menginstal driver atau modul kernel, seperti Wireshark, tidak bisa begitu sajadijalankan, karena Anda benar-benar harus mengirimkan komponen mode kernel dalam file yang terpisah. Dalam kasus terbaik mutlak, Anda masih harus memiliki pengguna secara manual membuka ritsleting arsip, dan kemudian menjalankan beberapa jenis installer untuk driver perangkat. Layanan adalah contoh lain dari sesuatu yang membutuhkan hak administratif untuk menginstal. Perangkat lunak penginstal sangat bagus dalam mendapatkan hak admin dengan cara yang elegan, tanpa mengharuskan program utama itu sendiri meminta hak admin setiap kali berjalan (ini akan menjadi paparan keamanan yang tidak perlu dalam banyak kasus).

Setelah memberikan semua alasan mengapa installer bermanfaat, berikut adalah beberapa pengamatan dari sisi lain:

  • Banyak program, bahkan yang hanya tersedia untuk diunduh sebagai penginstal yang memerlukan hak admin, dapat secara paksa "dibongkar" dari penginstalnya dan dijalankan langsung tanpa menginstalnya. Program lain, terutama yang open source, dikemas ulang menjadi executable mandiri oleh PortableApps . Perlu dicatat bahwa beberapa program, ketika dibongkar dari instalaturnya, akan mengurangi fungsionalitasnya, menunjukkan kesalahan, atau masalah lain.

  • Pada sistem operasi selain Windows, hampir selalu memungkinkan untuk hanya mengunduh (atau mengompilasi) program dan menjalankannya sebagai pengguna biasa, tanpa memperoleh root. Ada beberapa pengecualian sehubungan dengan paket yang merupakan bagian inti dari sistem operasi, tetapi untuk sebagian besar aplikasi pengguna, Anda dapat menjalankannya di direktori home Anda tanpa menginstalnya di seluruh sistem menggunakan manajer paket. Windows adalah sedikit kasus khusus karena sebagian besar program desktop pada Windows memiliki installer, dan biasanya tidak dapat diinstal dengan cara lain.

  • Bahkan pada platform non-Windows, program yang membutuhkan kemampuan untuk memuat modul kernel datang dengan semacam installer, yang mengkompilasi modul kernel dan menginstalnya di direktori yang benar. Anda juga dapat berharap melihat penginstal jika program tersebut adalah daemon yang akan mulai menggunakan skrip layanan sistem, mis /etc/init.d. Dalam . Jenis "biner shrinkwrapped" adalah metode distribusi yang kurang umum pada GNU / Linux, tetapi sebagian besar distribusi Linux masih menyediakan sebagian besar perangkat lunak dalam bentuk paket yang dapat diinstal, yang masing-masing memerlukan akses root (akses admin) untuk menginstal.


Kesimpulan

Anda bertanya mengapa kami membutuhkan installer. Jawaban singkatnya adalah bahwa kita tidak - toh tidak berbicara dengan tegas. Ada beberapa contoh aplikasi yang tidak dapat , pada prinsipnya, dapat digabungkan menjadi satu yang dapat dieksekusi yang dapat dieksekusi tanpa sumber daya, tanpa penginstal, dll. Bahkan sesuatu yang rumit seperti VMware Workstation dapat secara otomatis mendapatkan hak istimewa admin, menulis modul kernel hypervisor keluar ke file pada disk, dan instal secara dinamis pada startup program, dan kirimkan semua sumber dayanya (gambar, suara, dll.) yang dibundel di dalam bagian data yang dapat dieksekusi.

Menggunakan penginstal atau tidak adalah pilihan yang harus dibuat oleh produsen perangkat lunak. Ada kelebihan dan kekurangan menggunakan installer. Banyak vendor memilih untuk mendistribusikan perangkat lunak mereka baik sebagai installer, dan sebagai biner mandiri, atau setidaknya sebagai file ZIP yang dapat dibongkar dan dijalankan. Untuk perangkat lunak yang tidak sepenuhnya membutuhkan penginstal, ini adalah cara yang sangat pragmatis untuk dilakukan, dan membuat semua orang senang. Biasanya, perangkat lunak yang tidak dikirimkan dalam bentuk apa pun selain dengan penginstal adalah perangkat lunak yang memerlukan hak administratif untuk menginstal beberapa komponen itu sendiri, karena penginstal adalah cara paling elegan untuk mendapatkan hak istimewa yang diperlukan.

Secara pribadi, saya menemukan installer sangat mengganggu dalam pekerjaan saya sehari-hari, karena kadang-kadang saya ingin menjalankan program ketika saya tidak memiliki hak administratif pada komputer yang saya gunakan. Saya memiliki sedikit pengalaman secara manual membongkar installer untuk mengekstrak file program di dalam, dan kemudian membuat file-file tersebut berjalan dengan benar. Namun, pada PC pribadi saya di rumah di mana saya selalu memiliki akses administratif, saya menemukan installer menguntungkan dan nyaman, karena sebagian besar installer memberi saya opsi yang bermanfaat, seperti apakah akan membuat pintasan desktop, yang harus saya lakukan secara manual bukan tanpa itu.


Jawaban bagus, tetapi pembukaan Anda dengan DirectX dan runtime tidak masuk akal. Pertama, satu-satunya runtime DirectX adalah dalam bahasa yang ditulisnya sendiri, yaitu C.

@ TomTurkey Um ... apa? Mengapa penting bahasa apa itu ditulis? Tentu, Anda dapat secara statis menautkan komponen DirectX apa pun yang Anda perlukan langsung ke executable Anda, tetapi seperti saya katakan, itu menyajikan masalah ukuran file jika banyak program mulai melakukan ini dengan perpustakaan besar (Qt 4.x, misalnya, berjalan sekitar 40 MB ). Kode harus berada di suatu tempat, dan Anda tidak bisa hanya berasumsi bahwa versi DirectX yang Anda butuhkan sudah diinstal pada sistem, atau Anda akan mendapatkan kesalahan ketika seseorang membuka program Anda pada Windows XP SP2 yang belum ditambal di usia.
allquixotic

4
Oh, saya pikir Anda salah paham - dalam jawaban saya, saya tidak berbicara tentang menginstal DirectX sendiri ; Saya berbicara tentang menginstal program yang bergantung pada DirectX. Untuk memenuhi ketergantungan itu, Anda dapat mengkompilasi DirectX langsung ke dalam aplikasi Anda, sehingga meningkatkan konsumsi ruang disk yang terbuang, atau Anda dapat menggabungkan sedikit aplikasi di installer Anda yang memeriksa apakah Anda memiliki runtime DirectX yang sesuai diinstal, dan jika tidak, unduh mereka dan menempatkan mereka di lokasi sistem terpusat. Yang terakhir ini jauh lebih efisien dalam hal ruang disk dan ukuran unduhan.
allquixotic

3
@ allquixotic Juga, lisensi. Terkadang, perpustakaan mungkin tidak memiliki lisensi untuk reditribusi terlepas dari penginstalnya. DirectX mungkin termasuk dalam kategori ini, saya tidak yakin. Kerangka NET. Tidak, saya pikir. Ini bukan batasan teknis, tetapi hukum. (Kerangka. NET memiliki batasan teknis tambahan, meskipun. Ini cukup terintegrasi ke dalam OS.)
Bob

1
boop . Suara komentar yang dibalik. Di kepala saya.
allquixotic

3

Proses instalasi mempertimbangkan item-item ini:

  1. apakah Anda telah meminta pustaka (api) diinstal, seperti versi .net framework, atau langsung X.

  2. Instal beberapa file DLL sistem tambahan ke folder sistem. Jika folder sistem sudah berisi file-file ini (versi yang sama), abaikan langkah ini. Dengan cara ini Anda tidak perlu beberapa salinan file DLL yang sama.

  3. Instal pintasan ke menu Start atau Desktop untuk membantu Anda memulai aplikasi dengan cepat.

  4. Seperti yang Anda katakan, modifikasi Registry. Langkah ini sebenarnya bisa dilakukan ketika aplikasi pertama kali dieksekusi di komputer ini, sehingga tidak terlalu penting.

  5. sangat penting: apakah akan menggabungkan perangkat lunak (seperti bilah desktop Google atau bilah Yahoo! ke IE Anda). Ini adalah cara banyak perangkat lunak independen menghasilkan pendapatan bagi pengembang. Jangan lupa itu, jika Anda menggunakan perangkat lunak gratis.

Karena kami sedang mempertimbangkan aplikasi "yang dapat dieksekusi", kami tidak perlu membahas langkah-langkah yang dapat menginstal add-on IE atau hal-hal terkait.


3

Program yang berdiri sendiri tidak memiliki ketergantungan eksternal.

Tidak harus berupa file .exe saja, ini dapat memiliki pustaka dan file data yang menyertainya: Buka paket arsip ke folder dan jalankan file yang dapat dieksekusi. Jika Anda hanya membongkar arsip, tidak ada jalan pintas yang ditambahkan ke menu Start, maka Anda harus menavigasi ke folder tempat aplikasi yang dibongkar terletak dan memulainya dari sana, atau secara manual membuat pintasan untuk itu di menu Start. Banyak pengguna komputer merasa kesulitan.

Lebih Mudah Digunakan

Pemasang memandu pengguna melalui proses instalasi. Anda mengunduh penginstal, .exe atau .msi (yang pertama lebih disukai untuk pengguna yang tidak mahir), dan jalankan. Itu mengambil folder instalasi, biasanya dalam Program Files, menyalin file, membuat jalan pintas di menu Start. Anda selesai: dalam sebagian besar kasus, Anda cukup mengklik Berikutnya beberapa kali.

Lalu pergi ke menu Start dan jalankan aplikasi. Beberapa installer memberikan opsi untuk memulai aplikasi ketika instalasi selesai.

Jika aplikasi membuka file atau dokumen jenis tertentu, penginstal mendaftarkannya ke shell. Sehingga Anda bisa mengklik file untuk membukanya.

Perjanjian lisensi

Banyak aplikasi, baik yang komersial maupun yang gratis, mengharuskan Anda untuk menerima perjanjian lisensi sebelum Anda dapat menggunakan aplikasi mereka. Instalasi tidak dilanjutkan sampai Anda mengakui Anda menyetujui persyaratan lisensi. Bahkan jika Anda tidak membaca lisensi, Anda telah menyetujuinya.

Ketergantungan

Terkadang tidak cukup hanya menyalin file yang dapat dieksekusi. Aplikasi sering menggunakan komponen bersama atau pustaka runtime khusus. Sebagai contoh, .Net framework runtime harus diinstal untuk menjalankan aplikasi yang ditulis untuk .Net; bahkan runtime Visual C ++, jika tidak terhubung secara statis, harus diinstal. Pemasang menangani memastikan semua dependensi puas.

Jika suatu aplikasi terdiri dari beberapa file .exe dan / atau .dll, penautan dinamis dengan runtime Visual C ++ mengurangi ruang disk. Jika .exe dan .dll ditautkan secara statis, maka runtime diduplikasi di setiap file.

Persyaratan lisensi perpustakaan mungkin tidak mengizinkan tautan statis.

Keamanan

Jika kerentanan ditemukan di runtime, itu dapat diperbarui secara terpisah dari aplikasi. Pembaruan untuk. Net dan Visual C ++ runtime diinstal secara otomatis melalui Pembaruan Windows.

Jika executable dan pustaka terkait secara statis, maka vendor aplikasi harus mengkompilasi ulang aplikasi dan merilis versi yang diperbarui. Jadi menggunakan runtime bersama mengurangi biaya pemeliharaan aplikasi untuk pengembang dan vendor.

Menginstal ke Program Filesjuga memberikan lingkungan yang lebih aman: file di sana tidak dapat dimodifikasi atau dihapus tanpa hak administrator.

Daftar

Banyak aplikasi Windows mengandalkan entri dalam registri. Jika aplikasi menggunakan COM, semua objek harus didaftarkan, jika tidak aplikasi akan gagal membuat objek yang diperlukan dan tidak akan memulai.


1
+1 untuk pembaruan keamanan untuk komponen yang dibagikan - Saya tidak berpikir untuk menuliskannya dalam jawaban saya.
allquixotic

0

Jawaban singkat: exe yang berdiri sendiri tidak memerlukan pustaka yang diinstal pada komputer untuk dijalankan, dan tidak memerlukan entri registri atau komponen lainnya.

File yang diinstal dapat berdiri sendiri dalam paket pemasang, tetapi umumnya tergantung pada berbagai komponen dan pustaka yang dipasang di sampingnya.

Dalam banyak kasus, melalui Universal Extractor (pembaruan tidak resmi: di sini ), Anda dapat mengekstraksi konten installer dan menjalankan program tanpa hak administratif di windows. Pemasang MSI dapat dibongkar dengan lessmsi .

Di sebagian besar sistem operasi lain, semua program dapat dijalankan tanpa hak akses root / administrator, melalui 'bin' khusus pengguna, 'lib', dan direktori lain di direktori home. Secara pribadi, saya sangat membenci instalatir, karena mereka mempersulit saya untuk menggunakan program tanpa hak administratif ketika saya tidak memilikinya. Tetapi mereka dikemas seperti itu oleh perusahaan besar untuk menyederhanakan proses bagi pengguna akhir rata-rata.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.