Чому ви не можете видалити кілька програм одночасно в Windows?


99

Чому Windows не дозволить вам видалити або видалити кілька програм одночасно? Які міркування за цим? Чи це зіпсує внутрішню систему?

Я не шукаю, як видалити відразу кілька програм, я просто шукаю причину, чому це не було б варіантом.


9
Щоб люди не видаляли все відразу ... можливо.
М.Беннетт

@ M.Bennett Я теж думав про це, але не існує способу вибору декількох програм, щоб користувачі не могли все-таки видалити все випадково.
Єроен Боллен

5
Насправді ви можете видалити декілька програм одночасно, єдиний інсталятор Windows, який не дозволяє вам видалити кілька програм, тому що він дозволяє лише один екземпляр себе. Досить просто видалити файли програм, ви можете видалити весь вміст файлів програми, якщо хочете, що видалити ці програми просто не ефективно.
Рамхаунд

@Ramhound: Ви , здається, тільки один, хто правильно зрозумів намір Аскер: він хоче, щоб система видалення програм в послідовності . Тут відповідачі зрозуміли його питання по-різному: чи можливо одночасно видалити кілька програм. Потрібно говорити, що в Linux це легко можливо: ви просто набираєте текст apt-get -y uninstall prog1 prog2 prog3.
Нікколо М.

4
@NiccoloM Моє питання було насправді, чому ви не можете одночасно. : P
Джероен Боллен

Відповіді:


101

Якщо ви читаєте що-небудь про те, як працює система інсталятора Windows, очевидно, що вони застосували деякі ідеї від транзакційних баз даних до встановлення та обслуговування програм, не кажучи вже про .msiфайли, які є базою даних.

Завжди виникає питання при розробці будь-якої бази даних - чи хочете ви швидкості чи точності / безпеки? Зважаючи на те, що інсталятори можуть змінювати конфігурацію системи і що неправильна робота може призвести до непрацездатності системи, безпеці було надано пріоритет над швидкістю. Однією з причин, чому .msiінсталятори настільки повільні, є те, що для кожного файлу створюються файли відкату тощо, які будуть модифіковані, а потім видалені - дозволяючи будь-які зміни "повернути назад", якщо щось піде не так в середині речей ( наприклад, відключення електроенергії або збої в роботі системи).

Тепер я вважаю, що двигун MSI сам примушує встановлювати, змінювати чи видаляти лише одну програму за один раз - якщо ви спробуєте запустити інший .msiчас, наприклад, він або не запуститься, або буде чекати видалення, що працює на даний момент закінчувати. Інсталятори, що не мають MSI, можуть вести себе не так - оскільки вони не використовують двигун MSI. Але через таке рішення щодо безпеки проекту, ймовірно, саме тому appwiz.cplнаполягає на тому, щоб дозволити одразу викликати лише одного видалення.

CCleaner дозволяє зняти деінсталятори, не чекаючи закінчення раніше запущених. Зважаючи на сказане, інсталятори MSI, ймовірно, все ще не працюватимуть паралельно.


29
Варто зазначити, що менеджери пакунків у системах, схожих на Unix, також не намагаються видалити кілька пакетів одразу з тієї самої причини. Якщо ви вилучаєте кілька пакунків, вони видаляються один за одним, можливо, кожен у власній транзакції.
Joey

+1 Чудова відповідь! Одне зауваження. Якщо у вас є маса самостійних виконуваних файлів, таких як CPU-Z, у папці, тоді сміливо видаляйте (видаляйте) їх усі відразу.
MonkeyZeus

4
@Joey Це правда, але ви можете принаймні доручити * nix менеджерам пакетів зробити це, і вони відпрацюють замовлення. Я думаю, що більша проблема полягає в тому, що Windows не розуміє поняття залежності на рівні управління пакетами.
Тюдор

4
@tudor: Я думаю, що це лише різниця в тому, як керуються програмами на різних ОС. Windows управляє програмами , в той час як Unix-менеджери пакетів керують, добре, пакетами , які можуть бути бібліотеками, програмами тощо. Windows може керувати такими речами (це робиться напевно, наприклад, коли ви вмикаєте або вимикаєте компоненти Windows), але сторонні бібліотеки в цілому по системі не вийшли з ладу в кінці 90-х, тому програми рекомендуються просто зв'язати всі їх залежності.
Джої

@Joey Думаю, але звинувачувати користувача (або розробника) не вдасться далеко в такому відкритому просторі. Користувачі бачать лише програми, але програми - лише підмножина пакетів. Кілька бібліотек, навіть з різними версіями та постачальниками, просто потребують управління . Вимога розробника від управління ним була в кращому випадку оптимістичною, IMHO, і призвела до сильного розриву. Windows Store робить деякий вплив на це, але це ще довгий шлях до автоматичного вирішення залежності, що робить * nixes настільки простішими в цьому плані.
Тюдор

19

Це дійсно стосується лише програм, які використовують систему Windows Installer .

Якщо програма використовує власні (не) програми інсталятора, то ніщо не заважає одночасно запускати інший деінсталятор.

Програма встановлення Windows обмежує кількість примірників, щоб уникнути конфліктів, створюваних кількома програмами, коли вони змінюють загальносистемні (часто спільні) налаштування та файли.

Більшість деінсталяторів відстежують, що вони змінюють, щоб вони могли успішно відкати, якщо стався збій. Якщо хтось не знає про всі зміни, які вносяться (іншими деінсталяторами), він може насправді зробити ПРАВИЛЬНИЙ, якщо спробує відкатати невдалу установку.

Система Windows Installer була створена з наміром бути єдиною системою для всіх розробників додатків (у Windows), щоб уникнути подібних проблем.


9

Завдання на видалення часто змінюють файли, якими спільно користуватися декілька програм, або системні файли \ Реєстр (часткова причина, що для цього потрібні адміністративні повноваження). Якщо одночасно було запущено кілька задач на видалення, вони можуть конфліктувати. Якщо у вас коли-небудь траплялося "DLL Hell", то було б те саме. Інші програми або сама Windows можуть залишитись у непослідовному стані.


Це найбільше правильна відповідь. Якщо програма "A" встановлює непрофільну Windows DLL "X", тоді програма "B" вимагає її у своєму інсталяторі, то, ймовірно, вона також буде частиною видалення. Але видалення DLL "X" порушить програму "A". Тож деінсталятор зазвичай запитає про спільні DLL та інші файли, якщо їх слід видалити. Якщо працювати одночасно, цей тип запитів не може працювати належним чином. Нарешті, і, можливо, що важливіше, кожен забув реєстр Windows - який є основним компонентом бази даних, який часто оновлюється у програмах встановлення / видалення.
Даррелл Тіг

-1

Одночасне видалення програм, окрім можливих проблем, згаданих іншими, приносить дуже малу користь: це не буде набагато швидше, ніж видалення програм послідовно. Видалення програми - завдання, пов’язане з дисковим введенням. Запуск декількох програм, які роблять IO, не швидше, ніж їх послідовно запускати (якщо тільки програми не встановлені на двох окремих фізичних дисках). Насправді це може бути повільніше, оскільки два конкуруючих завдання вводу-виводу зроблять кеш диска менш ефективним, а фізичні голови диска повинні будуть стрибати з місця на місце.


Це не має значення як відповідь. Все, що стосується вводу-виводу диска, має можливість сповільнитись, якщо ви робите занадто багато речей одночасно, але єдине, що Windows насправді заважає вам робити - це одночасні (не) встановлення. І є вагома причина, щоб хотіти робити одночасні (не) встановлення - користувачам було б набагато легше мати змогу встановити в чергу купу операцій і нехай всі вони працюватимуть разом, порівняно з необхідністю сидіти і чекати щоб кожне заповнило по черзі. Крім того, суперечка є застарілою з SSD.
Ендрю Медіко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.