Neden birden fazla programı aynı anda Windows'ta kaldıramıyorsunuz?


99

Windows neden aynı anda birden fazla programı kaldırmanıza veya kaldırmanıza izin vermiyor? Bunun arkasındaki sebep nedir? Dahili bir sistemi karıştırır mı?

Aynı anda birden fazla programı nasıl kaldıracağımı aramıyorum, bunun neden seçenek olamayacağına bir sebep arıyorum.


9
İnsanların her şeyi aynı anda kaldırmasını engellemek için ... belki.
M.Bennett

@ M.Bennett Ben de öyle düşünüyordum, fakat birden fazla program seçmenin bir yolu yok, bu yüzden kullanıcılar zaten her şeyi yanlışlıkla kaldıramazlar.
Jeroen Bollen

5
Aslında, aynı anda birden fazla programı kaldırabilirsiniz, yalnızca birden fazla programı kaldırmanızı önleyen tek Windows Installer, yani yalnızca tek bir örneğine izin verir. Bir program dosyalarını silmek için yeterince kolay, isterseniz Program Dosyalarının tüm içeriğini silebilirsiniz, bu programları etkili bir şekilde kaldıramaz.
Ramhound

@Ramhound: Doğru asker Nickli Üyenin niyetini anlamış burada tek görünmektedir: o programları kaldırmak için sistem isteyen de dizinin . Buradaki cevaplayıcılar sorusunu farklı anlamışlardı: birkaç programı aynı anda kaldırmak mümkün mü . Söylemeye gerek yok, Linux'ta kolayca mümkündür: sadece yazmanız yeterli apt-get -y uninstall prog1 prog2 prog3.
Niccolo M.

4
@NiccoloM Benim sorum aslında neden aynı anda yapamadığındı. : P
Jeroen Bollen

Yanıtlar:


101

Windows kurulum sisteminin nasıl çalıştığı hakkında bir şey okursanız, işlem veritabanlarından bazı programların kurulum ve bakıma kadar uyguladıkları, .msidosyaların kendilerinin bir veritabanı olduklarından bahsetmedikleri açıktır .

Herhangi bir veritabanı tasarlarken her zaman bir soru vardır - hız mı, doğruluk mu / güvenlik mi istiyorsunuz? Kurucuların sistem konfigürasyonunu değiştirebildikleri ve bir yanlış işlemin sistemi çalışamaz duruma getirebileceği göz önüne alındığında, güvenliğe hız konusunda öncelik verilmiştir. .msiYükleyicilerin bu kadar yavaş olmasının nedenlerinden biri, her bir dosya için geri dönüş dosyalarının yapılması, daha sonra değiştirilecek ve daha sonra silinecek olan değişikliklerdir - herhangi bir değişikliğin, işlerin ortasında bir şeyler ters giderse "geri alınmasına" izin verilmesidir ( elektrik kesintisi veya sistem çökmesi gibi).

Şimdi, MSI motorunun kendisinin bir seferde yalnızca bir program kurmayı, değiştirmeyi ya da kaldırmayı zorladığına inanıyorum - bir .msisüre başka bir programı kaldırmaya çalışırsanız , örneğin ya çalışmaz ya da çalışmakta olan kaldırma işlemini bekler bitirmek için. MSI olmayan yükleyiciler bu şekilde davranmayabilir - çünkü MSI motorunu kullanmazlar. Ancak bu güvenlik tasarımı kararından dolayı, bu nedenle appwiz.cpl, yalnızca bir kaldırıcının aynı anda çağrılmasına izin vermede ısrarcı olmasının nedeni budur .

CCleaner, daha önce çalışanların bitmesini beklemeden kaldırıcıları atmanıza izin verir. MSI kurucuları muhtemelen yukarıdakilerden dolayı paralel olarak çalışmayacaktır.


29
Unutulmaması gereken bir şey, Unix benzeri sistemlerdeki paket yöneticilerinin de aynı sebepten dolayı birkaç paketi bir kerede kaldırmaya çalışmadığıdır. Birden fazla paketi kaldırırsanız birbiri ardına kaldırılır, muhtemelen her biri kendi işleminde.
Joey

+1 Süper cevap! Unutulmaması gereken bir şey. Bir klasörde CPU-Z gibi bir dizi bağımsız çalıştırılabilir dosya varsa, tümünü bir kerede kaldırmaktan (silmek) çekinmeyin.
MonkeyZeus

4
@Joey Bu doğrudur, ancak en azından * nix paket yöneticilerine bunu yapmalarını söyleyebilirsiniz ve emirleri yerine getireceklerdir. Bence en büyük sorun, Windows'un paket yönetimi düzeyinde bağımlılık kavramını anlamadığıdır.
Tudor

4
@tudor: Sanırım uygulamaların farklı işletim sistemlerinde nasıl yönetildiği konusunda bir fark var. Windows uygulamaları yönetirken, Unix benzeri paket yöneticileri de kütüphaneleri, uygulamaları ve benzeri şeyleri olabilen paketleri yönetir . Windows bu tür şeyleri yönetebilir (örneğin, Windows bileşenlerini etkinleştirdiğinizde veya devre dışı bıraktığınızda kesin olarak böyle yapar), ancak sistem genelinde üçüncü taraf kitaplıklara sahip olmak 90'ların sonlarında bu kadar iyi sonuç vermedi, bu yüzden uygulamalar sadece tüm bağımlılıklarını toparla.
Joey

@Joey Ben senin fikrini anlıyorum, ancak kullanıcıyı (veya geliştiriciyi) suçlamak, böyle açık bir paylaşılan alanda uzağa gitmeyecek. Kullanıcılar yalnızca uygulamaları görür, ancak uygulamalar yalnızca bir paket alt grubudur. Birden fazla kitaplığın, hatta farklı sürümlerde ve satıcılarda bile, yalnızca yönetilmesi gerekir . Geliştiricinin yönetmesi isteniyorsa en iyisi iyimserdi, IMHO ve ağır şişkinlikle sonuçlandı. Windows Mağazası bu konuya bir miktar yol kat ediyor, ancak yine de * nix'leri bu konuda çok daha basit hale getiren otomatik bağımlılık çözümlemesinden çok uzun bir yol var.
Tudor

19

Bu yalnızca Windows Installer sistemini kullanan programlar için geçerlidir .

Bir program kendi (un) yükleyici sistemlerini kullanıyorsa, aynı zamanda başka bir kaldırıcıyı çalıştırmanızı engelleyen hiçbir şey yoktur.

Windows Installer, sistem genelindeki (genellikle paylaşılan) ayarları ve dosyaları değiştirirken, birden çok program tarafından yapılan çakışmaların önlenmesi için örnek sayısını sınırlar.

Çoğu kaldırıcı, neleri değiştirdiklerini takip eder, böylece bir arıza durumunda başarılı bir şekilde geri dönebilirler. Biri yapılan tüm değişikliklerin farkında değilse (diğer kaldırıcılar tarafından) o zaman başarısız bir yüklemeyi geri almaya çalışırsa aslında SÖZLEŞME yapabilir.

Windows Installer sistemi, tüm uygulama geliştiricilerin (Windows'ta), bu gibi sorunlardan kaçınmaya yardımcı olması için birleşik bir sistem olma amacıyla oluşturulmuştur.


9

Kaldırma görevleri sıklıkla birden fazla program tarafından paylaşılan dosyaları veya sistem dosyalarını \ Kayıt Defteri'ni (bunu yapmak için idari güce ihtiyaç duymanın kısmi bir nedeni) değiştirir. Birden fazla kaldırma görevi aynı anda çalışıyorsa, çakışma olabilir. Daha önce "DLL Hell" ile çalıştıysanız, aynı olurdu. Diğer programlar veya Windows'un kendisi tutarsız bir durumda bırakılabilir.


Bu, doğru cevabın neyle ilgili olduğu. Eğer "A" programı çekirdek olmayan Windows DLL'sini "X" yüklüyorsa, "B" programı yükleyicisine ihtiyaç duyarsa, muhtemelen kaldırıcıya dahil olacaktır. Ancak "X" DLL dosyasının kaldırılması "A" programının bozulmasına neden olacaktır. Bu nedenle, kaldırıcı genellikle paylaşılan DLL'ler ve silinmeleri durumunda diğer dosyalar hakkında bilgi ister. Eşzamanlı olarak çalıştırılırsa, bu türden sorgular düzgün çalışamadı. Son olarak ve belki de daha önemlisi, herkes yükleyicilere / kaldırıcılara sık sık güncellenen bir veritabanı temel bileşen olan Windows Kayıt Defterini unuttu.
Darrell Teague

-1

Programları eşzamanlı olarak kaldırmak, belirtilen diğer olası sorunlara sahip olmanın yanı sıra, çok az faydaya sahiptir: programları sırayla kaldırmaktan daha hızlı olmaz. Bir programı kaldırmak, disk GÇ'lerini içeren bir görevdir. GÇ yapan çeşitli programları çalıştırmak, sırayla çalıştırmaktan daha hızlı değildir (programlar iki ayrı fiziksel diske yüklenmemişse). Aslında, daha yavaş olması muhtemeldir, çünkü iki rakip IO görevi disk önbelleğini daha az verimli hale getirecek ve diskin fiziksel kafaları bir yerden bir yere atlamak zorunda kalacak.


Bu bir cevap olarak önemsiz. Disk G / Ç içeren her şey, aynı anda çok fazla şey yaparsanız yavaşlama potansiyeline sahiptir, ancak Windows'un gerçekten yapmasını engellediği tek şey eşzamanlı (un) yüklemeleridir. Eşzamanlı (un) kurulumları yapabilmek için iyi bir neden var - kullanıcıların bir sürü işlemi sıraya koyması ve hepsinin bir arada çalışmasına izin vermek, oturmak ve beklemek zorunda kalmak çok daha kolay olurdu. Her biri sırayla tamamlamak için. Ayrıca, çekişme konusu SSD'ler ile eski.
Andrew Medico
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.