Tek başına yürütülebilir bir dosya ile yüklü bir yürütülebilir dosya arasındaki fark nedir?


17

En azından Windows'ta, doğrudan statik olarak bağlı bir yürütülebilir dosya indirip doğrudan başlatabileceğinizi veya kendi programınızı ve hatta (dinamik olarak) yüklemenize gerek kalmadan yazabileceğinizi fark ettim.

Bu beni ana noktama getiriyor ... kurulum sürecinin amacı nedir? Yani Windows Kayıt Defteri'nin yanı sıra . Bununla birlikte, pratiklik ve kullanım amacıyla, çalıştırılabilen, kalıcı depolamada saklanabilen ve hangi aygıtın üzerinde bulunduğu ve işletim sisteminde çalıştırılabilen tek, bağımsız, bağımsız bir programa sahip olmak mümkündür. Peki, hemen hemen her büyüklükte harika bir program bir kurulum yapılandırması yapmadan mükemmel bir şekilde çalışabiliyorsa, tüm bu "bu" işi "ile büyük anlaşma nedir? Beni biraz şaşırttı ve bir veritabanı veya diğer meta veri / erişim yapılandırma sistemlerinin yanı sıra, ikincisi (yüklü bir yürütülebilir dosya) tek başına aynı şekilde çalışır ve çalışırsa burada gerçek fark nedir?

Burada yüklü olmayan bir programın yüklü programa karşı farkında olmadığım bir fark var mı?

Not: Bu sadece Windows işletim sistemleri için geçerli olmakla kalmaz, benzer bir işlevi yerine getiren herhangi bir uygulama için de geçerlidir.

Yanıtlar:


16

Programların bağımsız yürütülebilir dosyalar yerine yükleyici olarak gelmesinin birkaç nedeni vardır:

Dosya Boyutu Endişeleri

  • Çok büyük bağımlılıkları olan programlar, bağımlılıkları indiren ve ortak bir konuma yerleştiren Web tabanlı yükleyicileri bir araya getirebilir, böylece birden çok program tarafından paylaşılabilirler. Örneğin, DirectX çok büyük bir kütüphanedir. Sisteminizde DirectX'e bağlı olan her bir program tüm DirectX çalışma zamanını onunla birlikte paketlediyse, çok az yer kaplardı. Bu, 4 TB'lık sabit diskler çağında önemli görünmeyebilir, ancak SSD'lerin kapasitelerinin oldukça küçük olduğunu ve bazıları 64 GB kadar az depolama alanına sahip ultrabook'larda yaygın olarak kullanıldığını düşünün. Ve elbette DirectX dışında başka birçok kütüphane de var.

  • Hem çok büyük hem de sürekli olarak güncellenen programlar, en iyi şekilde birçok küçük dosyanın bir koleksiyonu olarak dağıtılır, ayrıca Internet'i bir güncelleme olup olmadığını kontrol eden bir başlatıcı veya güncelleyici programı bulunur ve herhangi bir güncelleme varsa, yalnızca gerekli değişiklikleri indirin. Tüm büyük programlar tek bir yekpare yürütülebilir dosya olarak gönderildiyse, dosya kilitleri nedeniyle disk üzerinde çalışan yürütülebilir dosyayı yamalamak neredeyse imkansız olduğundan yama işleminin tüm yürütülebilir dosyanın yeniden indirilmesini gerektirmesi büyük olasılıktır. Ayrıca, güncelleyicinin dosyalarının nerede olduğunu bilmesi gerektiğinden, genellikle bu dizin yolunu kayıt defterinde iyi bilinen bir konumda depolar.

Kullanıcı Kolaylığı Endişeleri

  • Visual Studio ve Microsoft Office gibi çok büyük programlar için yükleyiciler, kullanıcının hiçbir zaman ihtiyaç duymayacağını bildiği takdirde kullanıcının belirli özelliklerin yüklemesini kaldırmasına izin verir. Bunun 3 potansiyel faydası vardır: disk alanı tüketimini azaltır; yükleyici bir web indiricisi ise indirme süresini ve bant genişliği tüketimini azaltabilir; ve kullanıcının makinesindeki "dağınıklığı" ve "şişmeyi" azaltabilir, daha az başlat menüsü / masaüstü kısayolları, daha az başlangıç ​​programı vb.

  • Karmaşık programlar için yükleyiciler genellikle kullanıcının yükleyicinin bir parçası olarak kullanıcı dostu bir grafik arabirimi kullanarak ayarlayabileceği yapılandırma seçenekleriyle birlikte gelir. Örneğin, yükleyicideki "Son" u tıklamadan önce veritabanı sunucunuzu kurup çalışmaya devam etmenizi sağlayacak MySQL veya SQL Server yükleyicilerine bakın.

  • Yükleyiciler kullanıcıdan yalnızca bir kez girilmesi gereken lisans anahtarları gibi gerekli bilgileri isteyebilir. Bu, programın tasarımını basitleştirebilir ve yapması gereken şey sayısını azaltabilir ve ne zaman başladığını kontrol edebilir. Bu aynı zamanda kullanıcının sahip güven sonuçlanır, bu kez programı başarıyla yüklendikten, olması gerektiği "sadece iş" - kullanmasını kadar tutabilir programı kapsamında artık "Sorunlar" vardır.

Uyumluluk Endişeleri

  • Bazı programlar diğer programlarla çakışıyor. Bu, yazılım mühendisliğinin basit ve talihsiz bir gerçeğidir. Diğer programlarla çakıştığı bilinen bir programı yüklemeden önce, genellikle uyumsuz bir programın yüklü olup olmadığını görmek için sistemi kontrol etmek yararlı olur. Daha sonra kullanıcı bu durumda uyarılabilir. Örneğin, VMware ve VirtualBox'ın eski sürümlerinde Mavi Ölümle sonuçlanan çok tehlikeli bir uyumsuzluk potansiyeli vardır, çünkü bir program zaten diğer ürün tarafından kullanıcı için ayrıldıktan sonra özel bir sanallaştırma işlemci talimatı kullanmaya çalışacaktır. . Son ürünü bir yükleyici olmadan kullanıcıya sunacak olsaydınız, her durumda uyumsuz ürünlerin varlığını kontrol etmeniz gerekirdi. programın başlaması, programın başlamasını yavaşlatabilir.

  • Programlar, kullanıcı başına değil, yalnızca sistem genelinde kurulabilen diğer sistem bileşenlerine bağımlı olabilir. Bu özel sistem bileşenlerini kurmak için genellikle yönetici ayrıcalıkları gerekir ve genellikle bir yükleyicinin çalıştırılması gerekir.

Yüksek ayrıcalıklar ve özel hizmetler

  • Bazı programlar, işlevselliklerinden dolayı işletim sistemindeki değişikliklere bağlıdır ve bu değişiklikler, yönetici ayrıcalıklarıyla ilgilenmek için bir tür yükleyici olmadan kolayca uygulanamaz. Örneğin, sürücüleri veya Wireshark gibi çekirdek modüller, yüklemek programları, yapamam sadeceçalıştırılabilir, çünkü çekirdek modu bileşenlerini kesinlikle ayrı dosyalarda göndermelisiniz. En iyi durumda, kullanıcının bir arşivi manuel olarak açıp cihaz sürücüsü için bir tür yükleyici çalıştırması gerekir. Hizmetler, yüklenmesi için yönetici ayrıcalıkları gerektiren bir şeyin başka bir örneğidir. Yükleyici yazılımı, ana programın kendisinin her çalıştığında yönetici hakları talep etmesine gerek kalmadan zarif bir şekilde yönetici haklarını elde etmede iyidir (bu, birçok durumda gereksiz bir güvenlik riski olacaktır).

Kurulumcuların neden faydalı olduğu için tüm bu nedenleri verdikten sonra, diğer taraftan birkaç gözlem var:

  • Yalnızca yönetici ayrıcalıkları gerektiren bir yükleyici olarak indirilebilenler de dahil olmak üzere birçok program, yükleyicilerinden zorla "paketten çıkarılabilir" ve doğrudan yüklemeden çalıştırılabilir. Diğer programlar, özellikle açık kaynaklı olanlar, PortableApps tarafından bağımsız çalıştırılabilir dosyalara yeniden paketlenir . Bazı programların yükleyicilerinden paketinden çıkarıldığında işlevsellikte azalma, hatalar veya diğer sorunların ortaya çıkması dikkat çekicidir .

  • Windows dışındaki işletim sistemlerinde, kökleri almadan programları indirmek (veya derlemek) ve normal bir kullanıcı olarak çalıştırmak neredeyse her zaman mümkündür. İşletim sisteminin temel bir parçası olan paketlerle ilgili birkaç istisna vardır, ancak çoğu kullanıcı uygulaması için paket yöneticisini kullanarak sistem genelinde yüklemeden ana dizininizde çalıştırabilirsiniz. Windows, Windows'taki çoğu masaüstü programının bir yükleyiciye sahip olması ve genellikle başka bir şekilde yüklenememesi nedeniyle özel bir durumdur.

  • Windows dışındaki platformlarda bile, çekirdek modülünü yükleme yeteneğine ihtiyaç duyan programlar, çekirdek modülünü derleyen ve doğru dizine yükleyen bir çeşit yükleyici ile birlikte gelir. Programın bir sistem hizmeti betiği kullanılarak başlatılacak bir daemon olması durumunda, örneğin, bir yükleyici görmeyi bekleyebilirsiniz /etc/init.d. Bu tür "shrinkwrapped binary", GNU / Linux üzerinde daha az yaygın bir dağıtım yöntemidir, ancak çoğu Linux dağıtımı, çoğu yazılımı yüklemek için kök erişim (yönetici erişimi) gerektiren çoğu yüklenebilir paket biçiminde sağlar.


Sonuçlar

Yükleyicilere neden ihtiyacımız olduğunu sordunuz. Kısa cevap olmasıdır biz değil açıkçası değil, neyse -. Uygulamaların yok denecek kadar az örnek vardır edemez otomatik yönetici ayrıcalıkları elde edebilir VMware Workstation gibi karmaşık, prensip olarak, vb tek kendine yeten hiçbir kaynaklarla yürütülebilir, hiçbir yükleyici, bir şey olsa bile içine paketlenmiş olarak dışarı modül, çekirdek hypervisor'u yazma, diskteki bir dosyaya yükleyin ve program başlangıcında dinamik olarak yükleyin ve çalıştırılabilir dosyanın veri bölümünde paketlenmiş olan tüm kaynaklarını (resimler, sesler vb.) gönderin.

Bir yükleyici kullanmak ya da kullanmamak yazılım üreticilerinin yapması gereken bir seçimdir . Bir yükleyici kullanmanın avantajları ve dezavantajları vardır. Birçok satıcı kendi yazılım dağıtmak için tercih hem Yükleyici olarak, ve tek başına bir ikili olarak, ya da sadece ambalajsız ve çalıştırmak olabilir bir ZIP dosyası olarak en azından. Kesinlikle bir yükleyici gerektirmeyen yazılımlar için, bu çok pragmatik bir yol ve herkesi mutlu ediyor. Yükleyici, gerekli ayrıcalıkları elde etmenin en zarif yolu olduğundan, genellikle, bir yükleyiciden başka herhangi bir biçimde gönderilmeyen yazılımlar, kendi bileşenlerini yüklemek için yönetici ayrıcalıkları gerektiren bir yazılımdır.

Şahsen, yükleyicileri günlük işlerimde çok can sıkıcı buluyorum, çünkü bazen kullandığım bilgisayarda yönetici haklarına sahip olmadığımda bir program çalıştırmak istiyorum. Program dosyalarını ayıklamak için elle yükleyicileri açmak ve daha sonra bu dosyaları doğru şekilde çalıştırmak için oldukça deneyimim var. Ancak, her zaman yönetici erişimine sahip olduğum evdeki kişisel bilgisayarımda, yükleyicileri faydalı ve kullanışlı buluyorum, çünkü çoğu yükleyici bana masaüstü kısayolu oluşturup oluşturmama gibi kullanışlı seçenekler veriyor, bunun yerine manuel olarak yapmak zorunda kalacağım.


Harika bir yanıt, ancak DirectX ve çalışma zamanı ile açmanız mantıklı değil. Öncelikle, DirectX'in tek çalışma zamanı kendi içinde yazıldığı

@TomTurkey Um ... ne? Hangi dilde yazıldığı neden önemli? Tabii, olabilir herhangi bir DirectX bileşenleri bağlamak statik düz çalışan kısmına gerekmez, ama bu dediğim gibi, hediyeler eğer bir dosya boyutu sorun olduğunu birçok program 40 MB hakkında, örneğin, Qt 4.x (kitaplığı büyük olan ishal yapıyor başlamadan ). Kod bir yerde olmalı ve ihtiyacınız olan DirectX sürümünün sistemde zaten kurulu olduğunu varsayamazsınız, ya da birisi programınızı yamalanmamış Windows XP SP2'de açtığında bir hata alırsınız. yaşlar.
allquixotic

4
Oh, sanırım beni yanlış anladın - cevabımda DirectX'in kendisini kurmaktan bahsetmiyordum ; DirectX'e bağlı bir program kurmaktan bahsediyordum . Bu bağımlılığı gidermek için DirectX'i doğrudan uygulamanıza derleyebilir, böylece boşa harcanan disk alanı tüketimini artırabilir veya yükleyicinizde uygun DirectX çalışma zamanlarının yüklü olup olmadığını kontrol eden küçük bir uygulamayı paketleyebilirsiniz. onları merkezi bir sistem konumuna yerleştirir. İkincisi, disk alanı ve indirme boyutu açısından çok daha verimlidir.
allquixotic

3
@allquixotic Ayrıca lisanslama. Bazen bir kütüphane, yükleyicisinden bağımsız olarak yeniden dağıtım için lisanslanmayabilir. DirectX kategoriye girebilir, emin değilim. Bence .NET çerçevesi var. Bu teknik bir kısıtlama değil, yasal bir kısıtlamadır. (Bununla birlikte, .NET çerçevesi ek teknik kısıtlamalara sahiptir. İşletim sistemine oldukça sıkı bir şekilde entegre edilmiştir.)
Bob

1
boop . Yükseltilmiş bir yorumun sesi. Kafamın içinde.
allquixotic

3

Yükleme işlemi şu öğeleri dikkate alır:

  1. .net çerçeve sürümü veya doğrudan X gibi gerekli kitaplığın (api) yüklü olup olmadığı.

  2. Bazı ekstra sistem DLL dosyalarını sistem klasörüne yükleyin. Sistem klasörü zaten bu dosyaları içeriyorsa (aynı sürüm), bu adımı atlayın. Bu şekilde, aynı DLL dosyalarının birkaç kopyasına ihtiyacınız yoktur.

  3. Uygulamayı hızlı bir şekilde başlatmanıza yardımcı olması için Başlat menünüze veya Masaüstünüze kısayollar yükleyin.

  4. Dediğiniz gibi, Kayıt Defteri değişikliği. Bu adım, uygulama bu bilgisayarda ilk kez yürütüldüğünde gerçekleştirilebilir, bu nedenle çok önemli değildir.

  5. çok önemli: bir yazılımın (Google masaüstü çubuğu veya Yahoo! çubuğu gibi) IE'nize paketlenip paketlenmeyeceği. Bu, geliştiriciye gelir yaratan birçok bağımsız yazılımın yoludur. Unutmayın, eğer özgür yazılım kullanıyorsanız.

"Yürütülebilir" bir uygulama düşündüğümüz için, IE eklentisi veya ilgili şeyler yükleyebilecek adımları tartışmamız gerekmez.


3

Tek başına programın dış bağımlılıkları yoktur.

Yalnızca .exe dosyası olmak zorunda değildir, eşlik eden kitaplıklara ve veri dosyalarına sahip olabilir: Arşivi bir klasöre açın ve yürütülebilir dosyayı çalıştırın. Bir arşivi paketinden yeni çıkarırsanız, Başlat menüsüne kısayol eklenmez, bu nedenle paketten çıkarılan uygulamanın bulunduğu klasöre gitmeniz ve oradan başlatmanız veya Başlat menüsünde manuel olarak bir kısayol oluşturmanız gerekir. Birçok bilgisayar kullanıcısı bunu zor buluyor.

Kullanımı Daha Kolay

Bir yükleyici, yükleme işlemi boyunca kullanıcılara yol gösterir. Yükleyici, .exe veya .msi dosyasını (eski kullanıcılar ileri düzey kullanıcılar için tercih edilir) indirip çalıştırırsınız. Kurulum klasörünü alır, genellikle içinde Program Filesdosyaları kopyalar, Başlat menüsünde kısayol oluşturur. İşlemi tamamladınız: çoğu durumda birkaç kez İleri'yi tıklamanız yeterlidir.

Ardından Başlat menüsüne gidin ve uygulamayı çalıştırın. Bazı yükleyiciler, yükleme tamamlandığında uygulamayı başlatma seçeneği sunar.

Uygulama belirli türdeki dosyaları veya belgeleri açarsa, yükleyici bunu kabuğa kaydeder. Böylece dosyayı açmak için tıklayabilirsiniz.

Lisans anlaşması

Hem ticari hem de ücretsiz olan birçok uygulama, başvurularını kullanmadan önce lisans sözleşmesini kabul etmenizi gerektirir. Yükleme, lisans koşullarını kabul ettiğinizi onaylayana kadar devam etmez. Lisansı okumasanız bile kabul ettiniz.

Bağımlılıklar

Bazen yürütülebilir dosyaları kopyalamak yeterli değildir. Uygulamalar genellikle paylaşılan bileşenleri veya özel çalışma zamanı kitaplıklarını kullanır. Örneğin, .Net çerçeve çalışma zamanı .Net için yazılmış uygulamayı çalıştırmak için yüklenmelidir; Visual C ++ çalışma zamanı bile statik olarak bağlı değilse kurulmalıdır. Yükleyici tüm bağımlılıkların karşılanmasını sağlar.

Bir uygulama birkaç .exe ve / veya .dll dosyasından oluşuyorsa, Visual C ++ çalışma zamanına dinamik bağlantı disk alanını azaltır. .Exe ve .dll statik olarak bağlıysa, çalışma zamanı her dosyada çoğaltılır.

Kütüphanenin lisans koşulları statik bağlantıya izin vermeyebilir.

Güvenlik

Çalışma zamanında bir güvenlik açığı bulunursa, uygulamadan ayrı olarak güncellenebilir. Net ve Visual C ++ çalışma zamanı güncelleştirmeleri Windows Update aracılığıyla otomatik olarak yüklenir.

Yürütülebilir dosyalar ve kitaplıklar statik olarak bağlıysa, uygulama satıcısının uygulamayı yeniden derlemesi ve güncelleştirilmiş sürümü serbest bırakması gerekir. Bu nedenle, paylaşılan çalışma zamanının kullanılması, geliştiriciler ve satıcılar için uygulama bakım maliyetini azaltır.

Yüklemek Program Filesde daha güvenli bir ortam sağlar: oradaki dosyalar yönetici ayrıcalıkları olmadan değiştirilemez veya silinemez.

Kayıt

Birçok Windows uygulaması kayıt defterindeki girdilere güvenir. Uygulama COM kullanıyorsa, tüm nesnelerin kaydedilmesi gerekir, aksi takdirde uygulama gerekli nesneyi oluşturamaz ve başlamaz.


1
Paylaşılan bileşenlerde güvenlik güncellemeleri için +1 - Bunu cevabımda yazmayı düşünmedim.
allquixotic

0

Kısa yanıt: tek başına bir exe çalıştırmak için bilgisayarda herhangi bir kütüphane yüklü gerektirir ve hiçbir kayıt defteri girdisi veya diğer bileşenler gerektirir.

Yüklü bir dosya yükleyici paketinde tek başına olabilir , ancak genellikle yanında bulunan çeşitli bileşenlere ve kitaplıklara bağlıdır.

Çoğu durumda, Universal Extractor (resmi olmayan güncelleme: burada ) aracılığıyla, bir yükleyicinin içeriğini ayıklayabilir ve pencerelerde yönetici hakları olmadan bir program çalıştırabilirsiniz. MSI yükleyicileri lessmsi ile açılabilir .

Diğer işletim sistemlerinin çoğunda, tüm programlar kullanıcıya özgü 'bin', 'lib' ve ana dizindeki diğer dizinler aracılığıyla root / yönetici yetkileri olmadan çalıştırılabilir. Şahsen, montajcıları çoğu zaman hor görüyorum, çünkü sahip olmadığımda yönetici izinleri olmayan programları kullanmamı zorlaştırıyorlar. Ancak, ortalama son kullanıcı sürecini basitleştirmek için büyük şirketler tarafından bu şekilde paketlenirler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.